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 2016/01/20 09:38:21 UTC
svn commit: r1725681 - in
/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr:
AtomicCounterClusterIT.java DocumentClusterIT.java
Author: mreutegg
Date: Wed Jan 20 08:38:21 2016
New Revision: 1725681
URL: http://svn.apache.org/viewvc?rev=1725681&view=rev
Log:
OAK-3900: AtomicCounterClusterIT fails occasionally
Modified:
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/AtomicCounterClusterIT.java
jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/DocumentClusterIT.java
Modified: jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/AtomicCounterClusterIT.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/AtomicCounterClusterIT.java?rev=1725681&r1=1725680&r2=1725681&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/AtomicCounterClusterIT.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/AtomicCounterClusterIT.java Wed Jan 20 08:38:21 2016
@@ -104,8 +104,8 @@ public class AtomicCounterClusterIT ext
}
// allow the cluster to align
- Thread.sleep(1500);
-
+ alignCluster(mks);
+
// asserting the initial state
assertFalse("Path to the counter node should be set", Strings.isNullOrEmpty(counterPath));
for (Repository r : repos) {
Modified: jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/DocumentClusterIT.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/DocumentClusterIT.java?rev=1725681&r1=1725680&r2=1725681&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/DocumentClusterIT.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/test/java/org/apache/jackrabbit/oak/jcr/DocumentClusterIT.java Wed Jan 20 08:38:21 2016
@@ -19,6 +19,7 @@ package org.apache.jackrabbit.oak.jcr;
import static com.google.common.base.Preconditions.checkNotNull;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -32,6 +33,7 @@ import javax.jcr.SimpleCredentials;
import org.apache.jackrabbit.oak.plugins.document.DocumentMK;
import org.apache.jackrabbit.oak.plugins.document.util.MongoConnection;
+import org.apache.jackrabbit.oak.plugins.document.util.Utils;
import org.apache.jackrabbit.oak.plugins.index.IndexEditorProvider;
import org.apache.jackrabbit.oak.spi.state.Clusterable;
import org.apache.jackrabbit.oak.spi.state.NodeStore;
@@ -115,18 +117,21 @@ public abstract class DocumentClusterIT
* <p>
* ensures that the cluster is aligned by running all the background operations
* </p>
- *
- * <p>
- * In order to use this you have to initialise the cluster with {@code setAsyncDelay(0)}.
- * </p>
- *
+ *
* @param mks the list of {@link DocumentMK} composing the cluster. Cannot be null.
*/
static void alignCluster(@Nonnull final List<DocumentMK> mks) {
- for (int i = 0; i < 2; i++) {
- for (DocumentMK mk : mks) {
- mk.getNodeStore().runBackgroundOperations();
- }
+ // in a first round let all MKs run their background update
+ for (DocumentMK mk : mks) {
+ mk.getNodeStore().runBackgroundOperations();
+ }
+ String id = Utils.getIdFromPath("/");
+ // in the second round each MK will pick up changes from the others
+ for (DocumentMK mk : mks) {
+ // invalidate root document to make sure background read
+ // is forced to fetch the document from the store
+ mk.getDocumentStore().invalidateCache(Collections.singleton(id));
+ mk.getNodeStore().runBackgroundOperations();
}
}