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 al...@apache.org on 2015/08/07 14:59:38 UTC
svn commit: r1694678 -
/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/repository/RepositoryImpl.java
Author: alexparvulescu
Date: Fri Aug 7 12:59:38 2015
New Revision: 1694678
URL: http://svn.apache.org/r1694678
Log:
OAK-3197 RepositoryImpl doesn't close the scheduler nicely
Modified:
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/repository/RepositoryImpl.java
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/repository/RepositoryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/repository/RepositoryImpl.java?rev=1694678&r1=1694677&r2=1694678&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/repository/RepositoryImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/repository/RepositoryImpl.java Fri Aug 7 12:59:38 2015
@@ -43,6 +43,7 @@ import javax.jcr.Value;
import javax.security.auth.login.LoginException;
import com.google.common.collect.ImmutableMap;
+
import org.apache.commons.io.IOUtils;
import org.apache.jackrabbit.api.JackrabbitRepository;
import org.apache.jackrabbit.api.security.authentication.token.TokenCredentials;
@@ -302,12 +303,27 @@ public class RepositoryImpl implements J
public void shutdown() {
statisticManager.dispose();
gcMonitorRegistration.unregister();
- scheduledExecutor.shutdown();
+ closeExecutor();
if (contentRepository instanceof Closeable) {
IOUtils.closeQuietly((Closeable) contentRepository);
}
}
+ private void closeExecutor() {
+ try {
+ scheduledExecutor.shutdown();
+ scheduledExecutor.awaitTermination(5, TimeUnit.SECONDS);
+ } catch (InterruptedException e) {
+ log.error("Error while shutting down the executorService", e);
+ Thread.currentThread().interrupt();
+ } finally {
+ if (!scheduledExecutor.isTerminated()) {
+ log.warn("executorService didn't shutdown properly. Will be forced now.");
+ }
+ scheduledExecutor.shutdownNow();
+ }
+ }
+
//------------------------------------------------------------< internal >---
/**