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 2018/01/24 08:48:48 UTC

lucene-solr:jira/solr-11702: SOLR-11702: Adding sessionId check

Repository: lucene-solr
Updated Branches:
  refs/heads/jira/solr-11702 eba1602ee -> 42085a35a


SOLR-11702: Adding sessionId check


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

Branch: refs/heads/jira/solr-11702
Commit: 42085a35a42c5dabeea959ae8035f8376d75d534
Parents: eba1602
Author: Cao Manh Dat <da...@apache.org>
Authored: Wed Jan 24 15:48:35 2018 +0700
Committer: Cao Manh Dat <da...@apache.org>
Committed: Wed Jan 24 15:48:35 2018 +0700

----------------------------------------------------------------------
 solr/core/src/java/org/apache/solr/cloud/ZkShardTerms.java | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/42085a35/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 328d4f5..b2639a0 100644
--- a/solr/core/src/java/org/apache/solr/cloud/ZkShardTerms.java
+++ b/solr/core/src/java/org/apache/solr/cloud/ZkShardTerms.java
@@ -74,6 +74,7 @@ public class ZkShardTerms implements AutoCloseable{
   private final Set<CoreTermWatcher> listeners = new HashSet<>();
 
   private Terms terms;
+  private long sessionId = -1;
 
   // Listener of a core for shard's term change events
   interface CoreTermWatcher {
@@ -285,7 +286,7 @@ public class ZkShardTerms implements AutoCloseable{
       // This block is synchronized because we want only one and at least one valid watcher is watching the term node.
       Watcher watcher = null;
       try {
-        if (numWatcher.compareAndSet(0, 1)) {
+        if (numWatcher.compareAndSet(0, 1) || sessionId != zkClient.getSolrZooKeeper().getSessionId()) {
           watcher = event -> {
             // session events are not change events, and do not remove the watcher
             if (Watcher.Event.EventType.None == event.getType()) {
@@ -297,6 +298,7 @@ public class ZkShardTerms implements AutoCloseable{
             numWatcher.compareAndSet(1, 0);
             refreshTerms(false);
           };
+          sessionId = zkClient.getSolrZooKeeper().getSessionId();
         }
 
         if (earlyStop && watcher == null) return;