From e30b9ba2cf9f4b5a3e31cffd76c0326a1ecd7dcf Mon Sep 17 00:00:00 2001 From: Gemma Lamont Date: Fri, 6 Dec 2024 10:38:32 +0100 Subject: [PATCH] Update to behave differently for APOC extended --- common/src/main/java/apoc/ApocExtensionFactory.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/common/src/main/java/apoc/ApocExtensionFactory.java b/common/src/main/java/apoc/ApocExtensionFactory.java index 69a298fa7..96b35205b 100644 --- a/common/src/main/java/apoc/ApocExtensionFactory.java +++ b/common/src/main/java/apoc/ApocExtensionFactory.java @@ -132,12 +132,23 @@ public void start() { }); AvailabilityGuard availabilityGuard = dependencies.availabilityGuard(); + // APOC core has a listener that is not also a service, so this is registered here. for (ApocGlobalComponents c : apocGlobalComponents) { for (AvailabilityListener listener : c.getListeners(db, dependencies)) { registeredListeners.add(listener); availabilityGuard.addListener(listener); } } + + // For APOC extended, the Cypher Procedures listener is both a service and a listener + // To stop needing to keep a Map containing it as an object, which stops it being + // cleaned up, we check for all APOC services which are also listeners and register them here + for (Object service : services.values()) { + if (service instanceof AvailabilityListener serviceWithAvailabilityListener) { + registeredListeners.add(serviceWithAvailabilityListener); + availabilityGuard.addListener(serviceWithAvailabilityListener); + } + } } @Override