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)