You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ol...@apache.org on 2018/04/21 22:54:02 UTC
[sling-org-apache-sling-jcr-oak-server] 01/02: SLING-7607 Move
ThreadPool (Executor) handling out of OakSlingRepositoryManager
This is an automated email from the ASF dual-hosted git repository.
olli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-jcr-oak-server.git
commit 8a1ad8b49b7c6c094a667638f9107a94920184c2
Author: Oliver Lietz <ol...@apache.org>
AuthorDate: Sun Apr 22 00:53:09 2018 +0200
SLING-7607 Move ThreadPool (Executor) handling out of OakSlingRepositoryManager
---
bnd.bnd | 3 ++
.../internal/DefaultThreadPoolRegistrar.java | 61 ++++++++++++++++++++++
.../server/internal/OakSlingRepositoryManager.java | 23 --------
3 files changed, 64 insertions(+), 23 deletions(-)
diff --git a/bnd.bnd b/bnd.bnd
index 4069512..e0eb921 100644
--- a/bnd.bnd
+++ b/bnd.bnd
@@ -17,6 +17,9 @@ Import-Package:\
org.apache.jackrabbit.test; resolution:=optional,\
*
+Provide-Capability:\
+ osgi.service;objectClass:List<String>="java.util.concurrent.Executor,org.apache.sling.commons.threads.ThreadPool"
+
-baseline: *
-includeresource:\
diff --git a/src/main/java/org/apache/sling/jcr/oak/server/internal/DefaultThreadPoolRegistrar.java b/src/main/java/org/apache/sling/jcr/oak/server/internal/DefaultThreadPoolRegistrar.java
new file mode 100644
index 0000000..2219538
--- /dev/null
+++ b/src/main/java/org/apache/sling/jcr/oak/server/internal/DefaultThreadPoolRegistrar.java
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.sling.jcr.oak.server.internal;
+
+import org.apache.sling.commons.threads.ThreadPool;
+import org.apache.sling.commons.threads.ThreadPoolManager;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceRegistration;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Reference;
+
+@Component(
+ immediate = true
+)
+public class DefaultThreadPoolRegistrar {
+
+ @Reference
+ private ThreadPoolManager threadPoolManager;
+
+ private ThreadPool threadPool;
+
+ private ServiceRegistration<ThreadPool> serviceRegistration;
+
+ public DefaultThreadPoolRegistrar() {
+ }
+
+ @Activate
+ private void activate(final BundleContext bundleContext) {
+ threadPool = threadPoolManager.get(null);
+ serviceRegistration = bundleContext.registerService(ThreadPool.class, threadPool, null);
+ }
+
+ @Deactivate
+ private void deactivate() {
+ if (serviceRegistration != null) {
+ serviceRegistration.unregister();
+ serviceRegistration = null;
+ }
+ threadPoolManager.release(threadPool);
+ threadPool = null;
+ }
+
+}
diff --git a/src/main/java/org/apache/sling/jcr/oak/server/internal/OakSlingRepositoryManager.java b/src/main/java/org/apache/sling/jcr/oak/server/internal/OakSlingRepositoryManager.java
index 365f8bf..d7b3143 100644
--- a/src/main/java/org/apache/sling/jcr/oak/server/internal/OakSlingRepositoryManager.java
+++ b/src/main/java/org/apache/sling/jcr/oak/server/internal/OakSlingRepositoryManager.java
@@ -25,8 +25,6 @@ import static org.apache.jackrabbit.oak.plugins.index.IndexUtils.createIndexDefi
import java.util.Collections;
import java.util.Dictionary;
-import java.util.Hashtable;
-import java.util.concurrent.Executor;
import javax.jcr.Repository;
@@ -55,8 +53,6 @@ import org.apache.jackrabbit.oak.spi.security.user.UserConstants;
import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
import org.apache.jackrabbit.oak.spi.state.NodeStore;
import org.apache.jackrabbit.oak.spi.whiteboard.Whiteboard;
-import org.apache.sling.commons.threads.ThreadPool;
-import org.apache.sling.commons.threads.ThreadPoolManager;
import org.apache.sling.jcr.base.AbstractSlingRepository2;
import org.apache.sling.jcr.base.AbstractSlingRepositoryManager;
import org.apache.sling.serviceusermapping.ServiceUserMapper;
@@ -96,13 +92,6 @@ public class OakSlingRepositoryManager extends AbstractSlingRepositoryManager {
private ComponentContext componentContext;
- @Reference
- private ThreadPoolManager threadPoolManager = null;
-
- private ThreadPool threadPool;
-
- private ServiceRegistration oakExecutorServiceReference;
-
private final WhiteboardIndexProvider indexProvider = new WhiteboardIndexProvider();
private final WhiteboardIndexEditorProvider indexEditorProvider = new WhiteboardIndexEditorProvider();
@@ -130,13 +119,6 @@ public class OakSlingRepositoryManager extends AbstractSlingRepositoryManager {
final Whiteboard whiteboard = new OsgiWhiteboard(bundleContext);
this.indexProvider.start(whiteboard);
this.indexEditorProvider.start(whiteboard);
- this.oakExecutorServiceReference = bundleContext.registerService(
- Executor.class.getName(), new Executor() {
- @Override
- public void execute(Runnable command) {
- threadPool.execute(command);
- }
- }, new Hashtable<String, Object>());
final Oak oak = new Oak(nodeStore)
.withAsyncIndexing("async", 5);
@@ -192,8 +174,6 @@ public class OakSlingRepositoryManager extends AbstractSlingRepositoryManager {
protected void disposeRepository(Repository repository) {
this.indexProvider.stop();
this.indexEditorProvider.stop();
- this.oakExecutorServiceReference.unregister();
- this.oakExecutorServiceReference = null;
((JackrabbitRepository) repository).shutdown();
}
@@ -209,7 +189,6 @@ public class OakSlingRepositoryManager extends AbstractSlingRepositoryManager {
if (configuration.oak_observation_limitCommitRate()) {
commitRateLimiter = new CommitRateLimiter();
}
- this.threadPool = threadPoolManager.get("oak-observation");
this.nodeAggregatorRegistration = bundleContext.registerService(NodeAggregator.class.getName(), getNodeAggregator(), null);
super.start(bundleContext, new Config(defaultWorkspace, disableLoginAdministrative));
@@ -219,8 +198,6 @@ public class OakSlingRepositoryManager extends AbstractSlingRepositoryManager {
private void deactivate() {
super.stop();
this.componentContext = null;
- this.threadPoolManager.release(this.threadPool);
- this.threadPool = null;
this.nodeAggregatorRegistration.unregister();
}
--
To stop receiving notification emails like this one, please contact
olli@apache.org.