You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by da...@apache.org on 2017/12/18 07:39:49 UTC

[1/2] lucene-solr:jira/solr-11702: SOLR-11702: RecoveringCoreTermWatcher should handle cases when coreNodeName is not set

Repository: lucene-solr
Updated Branches:
  refs/heads/jira/solr-11702 225150e37 -> 830817405


SOLR-11702: RecoveringCoreTermWatcher should handle cases when coreNodeName is not set


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/162250eb
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/162250eb
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/162250eb

Branch: refs/heads/jira/solr-11702
Commit: 162250eb165df7d328e055430ece3db8449e3989
Parents: 225150e
Author: Cao Manh Dat <da...@apache.org>
Authored: Mon Dec 18 14:38:26 2017 +0700
Committer: Cao Manh Dat <da...@apache.org>
Committed: Mon Dec 18 14:38:26 2017 +0700

----------------------------------------------------------------------
 .../apache/solr/cloud/RecoveringCoreTermWatcher.java    | 12 ++++++++----
 .../src/java/org/apache/solr/cloud/ZkShardTerms.java    |  4 +++-
 .../test/org/apache/solr/cloud/ZkShardTermsTest.java    |  3 ++-
 3 files changed, 13 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/162250eb/solr/core/src/java/org/apache/solr/cloud/RecoveringCoreTermWatcher.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/cloud/RecoveringCoreTermWatcher.java b/solr/core/src/java/org/apache/solr/cloud/RecoveringCoreTermWatcher.java
index 0afa1c8..bbff584 100644
--- a/solr/core/src/java/org/apache/solr/cloud/RecoveringCoreTermWatcher.java
+++ b/solr/core/src/java/org/apache/solr/cloud/RecoveringCoreTermWatcher.java
@@ -37,10 +37,14 @@ public class RecoveringCoreTermWatcher implements ZkShardTerms.CoreTermWatcher {
     if (solrCore.isClosed()) {
       return false;
     }
-    String coreNodeName = solrCore.getCoreDescriptor().getCloudDescriptor().getCoreNodeName();
-    if (!terms.canBecomeLeader(coreNodeName)) {
-      log.info("Start recovery on {} because core's term is less than leader's term", coreNodeName);
-      solrCore.getUpdateHandler().getSolrCoreState().doRecovery(solrCore.getCoreContainer(), solrCore.getCoreDescriptor());
+    try {
+      String coreNodeName = solrCore.getCoreDescriptor().getCloudDescriptor().getCoreNodeName();
+      if (!terms.canBecomeLeader(coreNodeName)) {
+        log.info("Start recovery on {} because core's term is less than leader's term", coreNodeName);
+        solrCore.getUpdateHandler().getSolrCoreState().doRecovery(solrCore.getCoreContainer(), solrCore.getCoreDescriptor());
+      }
+    } catch (NullPointerException e) {
+      // Expected
     }
     return true;
   }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/162250eb/solr/core/src/java/org/apache/solr/cloud/ZkShardTerms.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/cloud/ZkShardTerms.java b/solr/core/src/java/org/apache/solr/cloud/ZkShardTerms.java
index 2398832..2126ba0 100644
--- a/solr/core/src/java/org/apache/solr/cloud/ZkShardTerms.java
+++ b/solr/core/src/java/org/apache/solr/cloud/ZkShardTerms.java
@@ -89,7 +89,9 @@ public class ZkShardTerms implements AutoCloseable{
 
   // package private for testing, only used by tests
   Map<String, Long> getTerms() {
-    return new HashMap<>(terms.terms);
+    synchronized (writingLock) {
+      return new HashMap<>(terms.terms);
+    }
   }
 
   void addListener(CoreTermWatcher listener) {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/162250eb/solr/core/src/test/org/apache/solr/cloud/ZkShardTermsTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/ZkShardTermsTest.java b/solr/core/src/test/org/apache/solr/cloud/ZkShardTermsTest.java
index c6af317..f2b862d 100644
--- a/solr/core/src/test/org/apache/solr/cloud/ZkShardTermsTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/ZkShardTermsTest.java
@@ -78,6 +78,7 @@ public class ZkShardTermsTest extends SolrCloudTestCase {
       assertEquals(0L, zkShardTerms.getTerms().get("rep1").longValue());
       assertEquals(0L, zkShardTerms.getTerms().get("rep2").longValue());
     }
+    waitFor(2, () -> rep1Terms.getTerms().size());
     rep1Terms.ensureTermsIsHigher("rep1", Collections.singleton("rep2"));
     assertEquals(1L, rep1Terms.getTerms().get("rep1").longValue());
     assertEquals(0L, rep1Terms.getTerms().get("rep2").longValue());
@@ -150,7 +151,7 @@ public class ZkShardTermsTest extends SolrCloudTestCase {
         assertEquals(shardTerms.getTerms().get("leader"), Collections.max(shardTerms.getTerms().values()));
         Thread.sleep(100);
       }
-      assertTrue(maxTerm >= Collections.max(shardTerms.getTerms().values()).longValue());
+      assertTrue(maxTerm >= Collections.max(shardTerms.getTerms().values()));
     }
     stop.set(true);
     for (Thread thread : threads) {


[2/2] lucene-solr:jira/solr-11702: SOLR-11711: Overseer can never process some last messages

Posted by da...@apache.org.
SOLR-11711: Overseer can never process some last messages


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/83081740
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/83081740
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/83081740

Branch: refs/heads/jira/solr-11702
Commit: 830817405ee9c20e8dbe76f9df2cfd7f1f7c3350
Parents: 162250e
Author: Cao Manh Dat <da...@apache.org>
Authored: Mon Dec 18 14:39:33 2017 +0700
Committer: Cao Manh Dat <da...@apache.org>
Committed: Mon Dec 18 14:39:33 2017 +0700

----------------------------------------------------------------------
 solr/core/src/java/org/apache/solr/cloud/Overseer.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/83081740/solr/core/src/java/org/apache/solr/cloud/Overseer.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/cloud/Overseer.java b/solr/core/src/java/org/apache/solr/cloud/Overseer.java
index 3b65d6f..813b1ed 100644
--- a/solr/core/src/java/org/apache/solr/cloud/Overseer.java
+++ b/solr/core/src/java/org/apache/solr/cloud/Overseer.java
@@ -200,7 +200,7 @@ public class Overseer implements SolrCloseable {
           LinkedList<Pair<String, byte[]>> queue = null;
           try {
             // We do not need to filter any nodes here cause all processed nodes are removed once we flush clusterstate
-            queue = new LinkedList<>(stateUpdateQueue.peekElements(1000, Long.MAX_VALUE, (x) -> true));
+            queue = new LinkedList<>(stateUpdateQueue.peekElements(1000, 2000L, (x) -> true));
           } catch (KeeperException.SessionExpiredException e) {
             log.warn("Solr cannot talk to ZK, exiting Overseer main queue loop", e);
             return;