diff --git a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/bundlor/BundlingConfigHandler.java b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/bundlor/BundlingConfigHandler.java index 3b2f9cc..d317bcd 100644 --- a/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/bundlor/BundlingConfigHandler.java +++ b/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/bundlor/BundlingConfigHandler.java @@ -85,11 +85,8 @@ public class BundlingConfigHandler implements Observer, Closeable { } @Override - public void close() throws IOException{ - if (backgroundObserver != null){ - observerRegistration.close(); - backgroundObserver.close(); - } + public void close() throws IOException { + unregisterObserver(); } public BackgroundObserverMBean getMBean(){ @@ -115,6 +112,16 @@ public class BundlingConfigHandler implements Observer, Closeable { observerRegistration = observable.addObserver(backgroundObserver); } + public void unregisterObserver() throws IOException { + if (backgroundObserver != null) { + observerRegistration.close(); + backgroundObserver.close(); + + observerRegistration = null; + backgroundObserver = null; + } + } + } diff --git a/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/node/JdbcFactory.java b/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/node/JdbcFactory.java index c0735eb..0f51903 100644 --- a/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/node/JdbcFactory.java +++ b/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/node/JdbcFactory.java @@ -57,7 +57,7 @@ public class JdbcFactory implements NodeStoreFactory { } @Override - public NodeStore create(BlobStore blobStore, Closer closer) { + public NodeStore create(BlobStore blobStore, Closer closer) throws IOException { DocumentMK.Builder builder = MongoFactory.getBuilder(cacheSize); if (blobStore != null) { builder.setBlobStore(blobStore); @@ -69,6 +69,10 @@ public class JdbcFactory implements NodeStoreFactory { log.info("Initialized DocumentNodeStore on RDB with Cache size : {} MB, Fast migration : {}", cacheSize, builder.isDisableBranches()); DocumentNodeStore documentNodeStore = builder.getNodeStore(); + + // TODO probably we should disable all observers, see OAK-5651 + documentNodeStore.getBundlingConfigHandler().unregisterObserver(); + closer.register(MongoFactory.asCloseable(documentNodeStore)); return documentNodeStore; } diff --git a/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/node/MongoFactory.java b/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/node/MongoFactory.java index 71c1275..673a0d4 100644 --- a/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/node/MongoFactory.java +++ b/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/cli/node/MongoFactory.java @@ -48,7 +48,7 @@ public class MongoFactory implements NodeStoreFactory { } @Override - public NodeStore create(BlobStore blobStore, Closer closer) throws UnknownHostException { + public NodeStore create(BlobStore blobStore, Closer closer) throws IOException { DocumentMK.Builder builder = getBuilder(cacheSize); builder.setMongoDB(getDB(closer)); if (blobStore != null) { @@ -58,6 +58,10 @@ public class MongoFactory implements NodeStoreFactory { builder.setReadOnlyMode(); } DocumentNodeStore documentNodeStore = builder.getNodeStore(); + + // TODO probably we should disable all observers, see OAK-5651 + documentNodeStore.getBundlingConfigHandler().unregisterObserver(); + closer.register(asCloseable(documentNodeStore)); return documentNodeStore; }