You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by sh...@apache.org on 2017/03/30 11:39:38 UTC
[07/31] lucene-solr:feature/autoscaling: SOLR-9835:
TestInjection.waitForInSyncWithLeader() should rely on commit point of
searcher
SOLR-9835: TestInjection.waitForInSyncWithLeader() should rely on commit point of searcher
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/f8166f3d
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/f8166f3d
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/f8166f3d
Branch: refs/heads/feature/autoscaling
Commit: f8166f3d80595918cda8cf80ac747318de6f9813
Parents: 83541fa
Author: Cao Manh Dat <da...@apache.org>
Authored: Mon Mar 27 16:44:22 2017 +0700
Committer: Shalin Shekhar Mangar <sh...@apache.org>
Committed: Thu Mar 30 17:09:04 2017 +0530
----------------------------------------------------------------------
.../org/apache/solr/util/TestInjection.java | 25 +++++++++++++-------
1 file changed, 17 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f8166f3d/solr/core/src/java/org/apache/solr/util/TestInjection.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/util/TestInjection.java b/solr/core/src/java/org/apache/solr/util/TestInjection.java
index 97291a1..15f5b3d 100644
--- a/solr/core/src/java/org/apache/solr/util/TestInjection.java
+++ b/solr/core/src/java/org/apache/solr/util/TestInjection.java
@@ -28,6 +28,7 @@ import java.util.concurrent.atomic.AtomicInteger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import org.apache.lucene.search.IndexSearcher;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.request.QueryRequest;
import org.apache.solr.cloud.ZkController;
@@ -43,6 +44,7 @@ import org.apache.solr.common.util.SuppressForbidden;
import org.apache.solr.core.CoreContainer;
import org.apache.solr.core.SolrCore;
import org.apache.solr.handler.ReplicationHandler;
+import org.apache.solr.search.SolrIndexSearcher;
import org.apache.solr.update.SolrIndexWriter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -363,7 +365,8 @@ public class TestInjection {
@SuppressForbidden(reason = "Need currentTimeMillis, because COMMIT_TIME_MSEC_KEY use currentTimeMillis as value")
public static boolean waitForInSyncWithLeader(SolrCore core, ZkController zkController, String collection, String shardId) throws InterruptedException {
if (waitForReplicasInSync == null) return true;
-
+ log.info("Start waiting for replica in sync with leader");
+ long currentTime = System.currentTimeMillis();
Pair<Boolean,Integer> pair = parseValue(waitForReplicasInSync);
boolean enabled = pair.first();
if (!enabled) return true;
@@ -380,14 +383,20 @@ public class TestInjection {
NamedList<Object> response = leaderClient.request(new QueryRequest(params));
long leaderVersion = (long) ((NamedList)response.get("details")).get("indexVersion");
-
- String localVersion = core.getDeletionPolicy().getLatestCommit().getUserData().get(SolrIndexWriter.COMMIT_TIME_MSEC_KEY);
- if (localVersion == null && leaderVersion == 0 && !core.getUpdateHandler().getUpdateLog().hasUncommittedChanges()) return true;
- if (localVersion != null && Long.parseLong(localVersion) == leaderVersion && (leaderVersion >= t || i >= 6)) {
- return true;
- } else {
- Thread.sleep(500);
+ RefCounted<SolrIndexSearcher> searcher = core.getSearcher();
+ try {
+ String localVersion = searcher.get().getIndexReader().getIndexCommit().getUserData().get(SolrIndexWriter.COMMIT_TIME_MSEC_KEY);
+ if (localVersion == null && leaderVersion == 0 && !core.getUpdateHandler().getUpdateLog().hasUncommittedChanges()) return true;
+ if (localVersion != null && Long.parseLong(localVersion) == leaderVersion && (leaderVersion >= t || i >= 6)) {
+ log.info("Waiting time for replica in sync with leader: {}", System.currentTimeMillis()-currentTime);
+ return true;
+ } else {
+ Thread.sleep(500);
+ }
+ } finally {
+ searcher.decref();
}
+
}
}