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;