From 37ea8854c516e923f9c56076e50bc6722e592989 Mon Sep 17 00:00:00 2001 From: yurii_ruban <yurii_ruban@epam.com> Date: Tue, 29 Aug 2023 14:18:55 +0300 Subject: [PATCH] Fixed recursive getting subscription --- .../config/ExternalSubscriptionsManager.java | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) 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 1755d01a6..4b4cdc9e0 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 -- GitLab