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 2015/10/14 07:39:04 UTC

svn commit: r1708546 - in /jackrabbit/oak/trunk: oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java oak-pojosr/src/test/groovy/org/apache/jackrabbit/oak/run/osgi/RepositoryClosedTest.groovy

Author: chetanm
Date: Wed Oct 14 05:39:03 2015
New Revision: 1708546

URL: http://svn.apache.org/viewvc?rev=1708546&view=rev
Log:
OAK-3513 - Session save going through despite repository being shutdown causing reindex flag to reset

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java
    jackrabbit/oak/trunk/oak-pojosr/src/test/groovy/org/apache/jackrabbit/oak/run/osgi/RepositoryClosedTest.groovy

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java?rev=1708546&r1=1708545&r2=1708546&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/Oak.java Wed Oct 14 05:39:03 2015
@@ -53,6 +53,7 @@ import com.google.common.collect.Iterabl
 import com.google.common.collect.Lists;
 import com.google.common.io.Closer;
 
+import org.apache.jackrabbit.oak.api.CommitFailedException;
 import org.apache.jackrabbit.oak.api.ContentRepository;
 import org.apache.jackrabbit.oak.api.ContentSession;
 import org.apache.jackrabbit.oak.api.Descriptors;
@@ -562,6 +563,7 @@ public class Oak {
     }
 
     private ContentRepository createNewContentRepository() {
+        final RepoStateCheckHook repoStateCheckHook = new RepoStateCheckHook();
         final List<Registration> regs = Lists.newArrayList();
         regs.add(whiteboard.register(Executor.class, getExecutor(), Collections.emptyMap()));
 
@@ -570,6 +572,7 @@ public class Oak {
 
         QueryIndexProvider indexProvider = CompositeQueryIndexProvider.compose(queryIndexProviders);
 
+        commitHooks.add(repoStateCheckHook);
         List<CommitHook> initHooks = new ArrayList<CommitHook>(commitHooks);
         initHooks.add(new EditorHook(CompositeEditorProvider
                 .compose(editorProviders)));
@@ -637,6 +640,7 @@ public class Oak {
             @Override
             public void close() throws IOException {
                 super.close();
+                repoStateCheckHook.close();
                 new CompositeRegistration(regs).unregister();
                 closer.close();
             }
@@ -715,4 +719,27 @@ public class Oak {
         }
     }
 
+    /**
+     * CommitHook to ensure that commit only go through till repository is not
+     * closed. Once repository is closed the commits would be failed
+     */
+    private static class RepoStateCheckHook implements CommitHook, Closeable {
+        private volatile boolean closed;
+
+        @Nonnull
+        @Override
+        public NodeState processCommit(NodeState before, NodeState after, CommitInfo info) throws CommitFailedException {
+            if (closed){
+                throw new CommitFailedException(
+                        CommitFailedException.OAK, 2, "ContentRepository closed");
+            }
+            return after;
+        }
+
+        @Override
+        public void close() throws IOException {
+            this.closed = true;
+        }
+    }
+
 }

Modified: jackrabbit/oak/trunk/oak-pojosr/src/test/groovy/org/apache/jackrabbit/oak/run/osgi/RepositoryClosedTest.groovy
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-pojosr/src/test/groovy/org/apache/jackrabbit/oak/run/osgi/RepositoryClosedTest.groovy?rev=1708546&r1=1708545&r2=1708546&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-pojosr/src/test/groovy/org/apache/jackrabbit/oak/run/osgi/RepositoryClosedTest.groovy (original)
+++ jackrabbit/oak/trunk/oak-pojosr/src/test/groovy/org/apache/jackrabbit/oak/run/osgi/RepositoryClosedTest.groovy Wed Oct 14 05:39:03 2015
@@ -42,7 +42,6 @@ class RepositoryClosedTest extends Abstr
         config[REPOSITORY_CONFIG_FILE] = createConfigValue("oak-base-config.json", "oak-tar-config.json")
     }
 
-    @Ignore("OAK-3513")
     @Test
     public void sessionUsePostClose() throws Exception{
         repository = repositoryFactory.getRepository(config)