You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by ch...@apache.org on 2014/07/21 13:04:10 UTC

svn commit: r1612244 - in /jackrabbit/oak/branches/1.0: ./ oak-core/src/main/java/org/apache/jackrabbit/oak/ oak-core/src/main/java/org/apache/jackrabbit/oak/core/ oak-core/src/main/java/org/apache/jackrabbit/oak/spi/whiteboard/ oak-doc/

Author: chetanm
Date: Mon Jul 21 11:04:10 2014
New Revision: 1612244

URL: http://svn.apache.org/r1612244
Log:
OAK-1816 - Oak#createContentRepository never unregisters some of its services

Merging 1605447 

Modified:
    jackrabbit/oak/branches/1.0/   (props changed)
    jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java
    jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ContentRepositoryImpl.java
    jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/whiteboard/CompositeRegistration.java
    jackrabbit/oak/branches/1.0/oak-doc/   (props changed)

Propchange: jackrabbit/oak/branches/1.0/
------------------------------------------------------------------------------
  Merged /jackrabbit/oak/trunk:r1605447

Modified: jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java?rev=1612244&r1=1612243&r2=1612244&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java (original)
+++ jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java Mon Jul 21 11:04:10 2014
@@ -87,6 +87,7 @@ import org.apache.jackrabbit.oak.spi.sec
 import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
 import org.apache.jackrabbit.oak.spi.state.NodeStore;
+import org.apache.jackrabbit.oak.spi.whiteboard.CompositeRegistration;
 import org.apache.jackrabbit.oak.spi.whiteboard.DefaultWhiteboard;
 import org.apache.jackrabbit.oak.spi.whiteboard.Registration;
 import org.apache.jackrabbit.oak.spi.whiteboard.Whiteboard;
@@ -475,11 +476,11 @@ public class Oak {
 
     /**
      * Enable the asynchronous (background) indexing behavior.
-     * 
+     *
      * Please not that when enabling the background indexer, you need to take
      * care of calling
      * <code>#shutdown<code> on the <code>executor<code> provided for this Oak instance.
-     * 
+     *
      */
     public Oak withAsyncIndexing() {
         this.asyncIndexing = true;
@@ -492,7 +493,8 @@ public class Oak {
     }
 
     public ContentRepository createContentRepository() {
-        whiteboard.register(Executor.class, executor, Collections.emptyMap());
+        final List<Registration> regs = Lists.newArrayList();
+        regs.add(whiteboard.register(Executor.class, executor, Collections.emptyMap()));
 
         IndexEditorProvider indexEditors = CompositeIndexEditorProvider.compose(indexEditorProviders);
         OakInitializer.initialize(store, new CompositeInitializer(initializers), indexEditors);
@@ -507,19 +509,19 @@ public class Oak {
             String name = "async";
             AsyncIndexUpdate task = new AsyncIndexUpdate(name, store,
                     indexEditors);
-            scheduleWithFixedDelay(whiteboard, task, 5, true);
-            registerMBean(whiteboard, IndexStatsMBean.class,
-                    task.getIndexStats(), IndexStatsMBean.TYPE, name);
+            regs.add(scheduleWithFixedDelay(whiteboard, task, 5, true));
+            regs.add(registerMBean(whiteboard, IndexStatsMBean.class,
+                    task.getIndexStats(), IndexStatsMBean.TYPE, name));
 
             PropertyIndexAsyncReindex asyncPI = new PropertyIndexAsyncReindex(
                     new AsyncIndexUpdate("async-reindex", store, indexEditors,
                             true), executor);
-            registerMBean(whiteboard, PropertyIndexAsyncReindexMBean.class,
-                    asyncPI, PropertyIndexAsyncReindexMBean.TYPE, name);
+            regs.add(registerMBean(whiteboard, PropertyIndexAsyncReindexMBean.class,
+                    asyncPI, PropertyIndexAsyncReindexMBean.TYPE, name));
         }
 
-        registerMBean(whiteboard, QueryEngineSettingsMBean.class,
-                queryEngineSettings, QueryEngineSettingsMBean.TYPE, "settings");
+        regs.add(registerMBean(whiteboard, QueryEngineSettingsMBean.class,
+                queryEngineSettings, QueryEngineSettingsMBean.TYPE, "settings"));
 
         // FIXME: OAK-810 move to proper workspace initialization
         // initialize default workspace
@@ -540,12 +542,12 @@ public class Oak {
 
         // Register observer last to prevent sending events while initialising
         for (Observer observer : observers) {
-            registerObserver(whiteboard, observer);
+            regs.add(registerObserver(whiteboard, observer));
         }
 
         RepositoryManager repositoryManager = new RepositoryManager(whiteboard);
-        registerMBean(whiteboard, RepositoryManagementMBean.class, repositoryManager,
-                RepositoryManagementMBean.TYPE, repositoryManager.getName());
+        regs.add(registerMBean(whiteboard, RepositoryManagementMBean.class, repositoryManager,
+                RepositoryManagementMBean.TYPE, repositoryManager.getName()));
 
         return new ContentRepositoryImpl(
                 store,
@@ -553,7 +555,13 @@ public class Oak {
                 defaultWorkspaceName,
                 queryEngineSettings,
                 indexProvider,
-                securityProvider);
+                securityProvider) {
+            @Override
+            public void close() throws IOException {
+                super.close();
+                new CompositeRegistration(regs).unregister();
+            }
+        };
     }
 
     /**

Modified: jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ContentRepositoryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ContentRepositoryImpl.java?rev=1612244&r1=1612243&r2=1612244&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ContentRepositoryImpl.java (original)
+++ jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ContentRepositoryImpl.java Mon Jul 21 11:04:10 2014
@@ -16,6 +16,7 @@
  */
 package org.apache.jackrabbit.oak.core;
 
+import java.io.Closeable;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.Properties;
@@ -107,7 +108,7 @@ import static javax.jcr.Repository.WRITE
  * {@code MicroKernel}-based implementation of
  * the {@link ContentRepository} interface.
  */
-public class ContentRepositoryImpl implements ContentRepository {
+public class ContentRepositoryImpl implements ContentRepository, Closeable {
 
     private final NodeStore nodeStore;
     private final CommitHook commitHook;
@@ -175,6 +176,11 @@ public class ContentRepositoryImpl imple
         }
         return descriptors;
     }
+
+    @Override
+    public void close() throws IOException {
+
+    }
     
     @SuppressWarnings("deprecation")
     @Nonnull

Modified: jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/whiteboard/CompositeRegistration.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/whiteboard/CompositeRegistration.java?rev=1612244&r1=1612243&r2=1612244&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/whiteboard/CompositeRegistration.java (original)
+++ jackrabbit/oak/branches/1.0/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/whiteboard/CompositeRegistration.java Mon Jul 21 11:04:10 2014
@@ -19,14 +19,21 @@
 
 package org.apache.jackrabbit.oak.spi.whiteboard;
 
+import java.util.Arrays;
+import java.util.List;
+
 /**
  * A composite of registrations that unregisters all its constituents
  * upon {@link #unregister()}.
  */
 public class CompositeRegistration implements Registration {
-    private final Registration[] registrations;
+    private final List<Registration> registrations;
 
     public CompositeRegistration(Registration... registrations) {
+        this(Arrays.asList(registrations));
+    }
+
+    public CompositeRegistration(List<Registration> registrations) {
         this.registrations = registrations;
     }
 

Propchange: jackrabbit/oak/branches/1.0/oak-doc/
------------------------------------------------------------------------------
  Merged /jackrabbit/oak/trunk/oak-doc:r1605447