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 2014/04/02 08:13:43 UTC
svn commit: r1583891 - in
/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document:
MissingLastRevSeeker.java mongo/MongoMissingLastRevSeeker.java
Author: chetanm
Date: Wed Apr 2 06:13:42 2014
New Revision: 1583891
URL: http://svn.apache.org/r1583891
Log:
OAK-1295 - Recovery for missing _lastRev updates (WIP)
Fix the not query for acquiring lock
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/MissingLastRevSeeker.java
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoMissingLastRevSeeker.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/MissingLastRevSeeker.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/MissingLastRevSeeker.java?rev=1583891&r1=1583890&r2=1583891&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/MissingLastRevSeeker.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/MissingLastRevSeeker.java Wed Apr 2 06:13:42 2014
@@ -94,7 +94,7 @@ public class MissingLastRevSeeker {
//This approach has a race condition where two different cluster nodes
//can acquire the lock simultaneously.
UpdateOp update = new UpdateOp(Integer.toString(clusterId), true);
- update.set(ClusterNodeInfo.REV_RECOVERY_LOCK, RecoverLockState.ACQUIRED);
+ update.set(ClusterNodeInfo.REV_RECOVERY_LOCK, RecoverLockState.ACQUIRED.name());
store.createOrUpdate(Collection.CLUSTER_NODES, update);
return true;
}
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoMissingLastRevSeeker.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoMissingLastRevSeeker.java?rev=1583891&r1=1583890&r2=1583891&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoMissingLastRevSeeker.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/mongo/MongoMissingLastRevSeeker.java Wed Apr 2 06:13:42 2014
@@ -20,6 +20,7 @@
package org.apache.jackrabbit.oak.plugins.document.mongo;
import static com.google.common.collect.Iterables.transform;
+import static com.mongodb.QueryBuilder.start;
import static org.apache.jackrabbit.oak.plugins.document.ClusterNodeInfo.RecoverLockState;
import com.google.common.base.Function;
@@ -56,8 +57,7 @@ public class MongoMissingLastRevSeeker e
@Override
public ClusterNodeInfoDocument getClusterNodeInfo(final int clusterId) {
DBObject query =
- QueryBuilder
- .start(NodeDocument.ID).is(String.valueOf(clusterId)).get();
+ start(NodeDocument.ID).is(String.valueOf(clusterId)).get();
DBCursor cursor =
getClusterNodeCollection().find(query)
.setReadPreference(ReadPreference.secondaryPreferred());
@@ -76,8 +76,7 @@ public class MongoMissingLastRevSeeker e
public CloseableIterable<NodeDocument> getCandidates(final long startTime,
final long endTime) {
DBObject query =
- QueryBuilder
- .start(NodeDocument.MODIFIED_IN_SECS).lessThanEquals(
+ start(NodeDocument.MODIFIED_IN_SECS).lessThanEquals(
Commit.getModifiedInSecs(endTime))
.put(NodeDocument.MODIFIED_IN_SECS).greaterThanEquals(
Commit.getModifiedInSecs(startTime))
@@ -99,9 +98,11 @@ public class MongoMissingLastRevSeeker e
@Override
public boolean acquireRecoveryLock(int clusterId) {
- QueryBuilder query = QueryBuilder.start(Document.ID)
- .is(Integer.toString(clusterId))
- .put(ClusterNodeInfo.REV_RECOVERY_LOCK).is(RecoverLockState.ACQUIRED.name());
+ QueryBuilder query =
+ start().and(
+ start(Document.ID).is(Integer.toString(clusterId)).get(),
+ start(ClusterNodeInfo.REV_RECOVERY_LOCK).notEquals(RecoverLockState.ACQUIRED.name()).get()
+ );
DBObject returnFields = new BasicDBObject();
returnFields.put("_id", 1);