Author: mreutegg
Date: Mon Jun 26 08:22:25 2017
New Revision: 1799861
URL: http://svn.apache.org/viewvc?rev=1799861&view=rev
Log:
OAK-6392: Partial lastRev update with branches disabled
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreTest.java
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java?rev=1799861&r1=1799860&r2=1799861&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStore.java
Mon Jun 26 08:22:25 2017
@@ -933,8 +933,14 @@ public final class DocumentNodeStore
}
} else {
// branch commit
- c.applyToCache(c.getBaseRevision(), isBranch);
- return
c.getBaseRevision().update(c.getRevision().asBranchRevision());
+ try {
+ c.applyToCache(c.getBaseRevision(), isBranch);
+ return
c.getBaseRevision().update(c.getRevision().asBranchRevision());
+ } finally {
+ if (isDisableBranches()) {
+ backgroundOperationLock.readLock().unlock();
+ }
+ }
}
}
@@ -949,9 +955,15 @@ public final class DocumentNodeStore
backgroundOperationLock.readLock().unlock();
}
} else {
- Branch b = branches.getBranch(c.getBaseRevision());
- if (b != null) {
- b.removeCommit(c.getRevision().asBranchRevision());
+ try {
+ Branch b = branches.getBranch(c.getBaseRevision());
+ if (b != null) {
+ b.removeCommit(c.getRevision().asBranchRevision());
+ }
+ } finally {
+ if (isDisableBranches()) {
+ backgroundOperationLock.readLock().unlock();
+ }
}
}
}
@@ -2610,7 +2622,14 @@ public final class DocumentNodeStore
checkOpen();
Commit c = new Commit(this, newRevision(), base);
- if (!isDisableBranches()) {
+ if (isDisableBranches()) {
+ // Regular branch commits do not need to acquire the background
+ // operation lock because the head is not updated and no pending
+ // lastRev updates are done on trunk. When branches are disabled,
+ // a branch commit becomes a pseudo trunk commit and the lock
+ // must be acquired.
+ backgroundOperationLock.readLock().lock();
+ } else {
Revision rev = c.getRevision().asBranchRevision();
// remember branch commit
Branch b = getBranches().getBranch(base);
Modified:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreTest.java?rev=1799861&r1=1799860&r2=1799861&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreTest.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreTest.java
Mon Jun 26 08:22:25 2017
@@ -3139,7 +3139,6 @@ public class DocumentNodeStoreTest {
}
// OAK-6392
- @Ignore("OAK-6392")
@Test
public void disabledBranchesWithBackgroundWrite() throws Exception {
final Thread current = Thread.currentThread();