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 mr...@apache.org on 2015/04/29 11:00:46 UTC
svn commit: r1676693 -
/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreBranch.java
Author: mreutegg
Date: Wed Apr 29 09:00:46 2015
New Revision: 1676693
URL: http://svn.apache.org/r1676693
Log:
OAK-2822: Release merge lock in retry loop
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreBranch.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreBranch.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreBranch.java?rev=1676693&r1=1676692&r2=1676693&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreBranch.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreBranch.java Wed Apr 29 09:00:46 2015
@@ -168,7 +168,7 @@ class DocumentNodeStoreBranch implements
public NodeState merge(@Nonnull CommitHook hook, @Nonnull CommitInfo info)
throws CommitFailedException {
try {
- return merge0(hook, info);
+ return merge0(hook, info, false);
} catch (CommitFailedException e) {
if (!e.isOfType(MERGE)) {
throw e;
@@ -176,20 +176,7 @@ class DocumentNodeStoreBranch implements
}
// retry with exclusive lock, blocking other
// concurrent writes
- // do not wait forever
- Lock lock = null;
- try {
- lock = acquireMergeLock(true);
- } catch (InterruptedException e) {
- // ignore and proceed with shared lock used in base class
- }
- try {
- return merge0(hook, info);
- } finally {
- if (lock != null) {
- lock.unlock();
- }
- }
+ return merge0(hook, info, true);
}
@Override
@@ -205,7 +192,9 @@ class DocumentNodeStoreBranch implements
//------------------------------< internal >--------------------------------
@Nonnull
- private NodeState merge0(@Nonnull CommitHook hook, @Nonnull CommitInfo info)
+ private NodeState merge0(@Nonnull CommitHook hook,
+ @Nonnull CommitInfo info,
+ boolean exclusive)
throws CommitFailedException {
CommitFailedException ex = null;
long time = System.currentTimeMillis();
@@ -224,7 +213,7 @@ class DocumentNodeStoreBranch implements
}
try {
final long start = perfLogger.start();
- Lock lock = acquireMergeLock(false);
+ Lock lock = acquireMergeLock(exclusive);
try {
perfLogger.end(start, 1, "Merge - Acquired lock");
return branchState.merge(checkNotNull(hook), checkNotNull(info));