diff --git a/provider/notification-gc/src/main/java/org/opengroup/osdu/notification/provider/gcp/config/ExternalSubscriptionsManager.java b/provider/notification-gc/src/main/java/org/opengroup/osdu/notification/provider/gcp/config/ExternalSubscriptionsManager.java index 1755d01a60f1dbd66274026c8babcdd2b6f895cc..4b4cdc9e074b85c4a32606ea79c2f900126c3ddc 100644 --- a/provider/notification-gc/src/main/java/org/opengroup/osdu/notification/provider/gcp/config/ExternalSubscriptionsManager.java +++ b/provider/notification-gc/src/main/java/org/opengroup/osdu/notification/provider/gcp/config/ExternalSubscriptionsManager.java @@ -50,12 +50,17 @@ public class ExternalSubscriptionsManager { List<Subscription> cachedInfos = Optional.ofNullable(getExternalSubscriptions(dataPartitionId)) .orElseThrow(() -> new AppException(HttpStatus.SC_INTERNAL_SERVER_ERROR, "Server error", "OQM | Subscription info cache was not initialized")) .getSubscriptions(); - List<Subscription> filteredCachedInfos = filterSubscriptionInfosByTopic(cachedInfos, subscriptionId, serviceTopic); - if (filteredCachedInfos.isEmpty()) { - return sendGetSubscriptionRequest(dataPartitionId, subscriptionId, serviceTopic, cachedInfos); + return getFilteredSubscription(cachedInfos, dataPartitionId, subscriptionId, serviceTopic); + } + + private Subscription getFilteredSubscription(List<Subscription> subscriptions, String dataPartitionId, + String subscriptionId, String serviceTopic) { + List<Subscription> filteredInfos = filterSubscriptionInfosByTopic(subscriptions, subscriptionId, serviceTopic); + if (filteredInfos.isEmpty()) { + return sendGetSubscriptionRequest(dataPartitionId, subscriptionId, serviceTopic, subscriptions); } else { - log.debug("Register client cache | `{}` subscriptions info found. The first was taken.", filteredCachedInfos.size()); - return filteredCachedInfos.get(0); + log.debug("Register client cache | `{}` subscriptions info found. The first was taken.", filteredInfos.size()); + return filteredInfos.get(0); } } @@ -72,7 +77,7 @@ public class ExternalSubscriptionsManager { private void reloadSubscriptionInfoCache(String dataPartitionId) { List<Subscription> subscriptionInfos = subscriptionHandler.getAllSubscriptionInfos(dataPartitionId); List<Subscription> enrichedSubscriptionInfos = subscriptionInfos.stream() - .map(subscription -> getSubscription(dataPartitionId, subscription.getNotificationId(), subscription.getTopic())) + .map(subscription -> getFilteredSubscription(subscriptionInfos, dataPartitionId, subscription.getNotificationId(), subscription.getTopic())) .collect(Collectors.toList()); subscriptionInfoCache.put(dataPartitionId, ExternalSubscriptions.builder().subscriptions(enrichedSubscriptionInfos).build()); log.debug("Subscription info cache PRELOADED for tenant: {}. Size is: {}.", dataPartitionId, enrichedSubscriptionInfos.size()); @@ -102,4 +107,4 @@ public class ExternalSubscriptionsManager { .filter(info -> serviceTopic.equals(info.getTopic()) && subscriptionId.equals(info.getNotificationId())) .collect(Collectors.toList()); } -} +} \ No newline at end of file