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