Author: reschke
Date: Fri Sep 11 10:52:41 2015
New Revision: 1702423

URL: http://svn.apache.org/r1702423
Log:
OAK-3383: DocumentNodeStoreService: make unregistration more robust

Modified:
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreService.java
    
jackrabbit/oak/trunk/oak-pojosr/src/test/groovy/org/apache/jackrabbit/oak/run/osgi/DocumentNodeStoreConfigTest.groovy

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreService.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreService.java?rev=1702423&r1=1702422&r2=1702423&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreService.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreService.java
 Fri Sep 11 10:52:41 2015
@@ -513,13 +513,16 @@ public class DocumentNodeStoreService {
         for (Registration r : registrations) {
             r.unregister();
         }
+        registrations.clear();
 
         if (reg != null) {
             reg.unregister();
+            reg = null;
         }
 
         if (mk != null) {
             mk.dispose();
+            mk = null;
         }
 
         if (executor != null) {

Modified: 
jackrabbit/oak/trunk/oak-pojosr/src/test/groovy/org/apache/jackrabbit/oak/run/osgi/DocumentNodeStoreConfigTest.groovy
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-pojosr/src/test/groovy/org/apache/jackrabbit/oak/run/osgi/DocumentNodeStoreConfigTest.groovy?rev=1702423&r1=1702422&r2=1702423&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-pojosr/src/test/groovy/org/apache/jackrabbit/oak/run/osgi/DocumentNodeStoreConfigTest.groovy
 (original)
+++ 
jackrabbit/oak/trunk/oak-pojosr/src/test/groovy/org/apache/jackrabbit/oak/run/osgi/DocumentNodeStoreConfigTest.groovy
 Fri Sep 11 10:52:41 2015
@@ -29,6 +29,7 @@ import org.apache.jackrabbit.oak.spi.sta
 import org.h2.jdbcx.JdbcDataSource
 import org.junit.After
 import org.junit.Test
+import org.osgi.framework.ServiceRegistration
 
 import javax.sql.DataSource
 import java.sql.Connection
@@ -132,10 +133,10 @@ class DocumentNodeStoreConfigTest extend
 
         //1. Register the DataSource as a service
         DataSource ds1 = createDS("jdbc:h2:mem:testRDB3;DB_CLOSE_DELAY=-1")
-        registry.registerService(DataSource.class.name, ds1, 
['datasource.name': 'oak'] as Hashtable)
+        ServiceRegistration sdsds = 
registry.registerService(DataSource.class.name, ds1, ['datasource.name': 'oak'] 
as Hashtable)
 
         DataSource ds2 = createDS("jdbc:h2:mem:testRDB3b;DB_CLOSE_DELAY=-1")
-        registry.registerService(DataSource.class.name, ds2, 
['datasource.name': 'oak-blob'] as Hashtable)
+        ServiceRegistration sdsbs = 
registry.registerService(DataSource.class.name, ds2, ['datasource.name': 
'oak-blob'] as Hashtable)
 
         //2. Create config for DocumentNodeStore with RDB enabled
         // (supply blobDataSource which should be ignored because customBlob 
takes precedence)
@@ -165,6 +166,11 @@ class DocumentNodeStoreConfigTest extend
 
         //5. Check that only one cluster node was instantiated
         assert getIdsOfClusterNodes(ds1).size() == 1
+
+        //6. Unregister the data sources to test resilience wrt
+        //multiple deregistrations (OAK-3383)
+        sdsds.unregister();
+        sdsbs.unregister();
     }
 
     @Test


Reply via email to