You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ma...@apache.org on 2020/07/27 18:26:48 UTC

[lucene-solr] branch reference_impl updated: @396 Tweak state updater.

This is an automated email from the ASF dual-hosted git repository.

markrmiller pushed a commit to branch reference_impl
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git


The following commit(s) were added to refs/heads/reference_impl by this push:
     new 908c07c  @396 Tweak state updater.
908c07c is described below

commit 908c07c82f7c8a2795ce81a49257b2f6855bf2d4
Author: markrmiller@gmail.com <ma...@gmail.com>
AuthorDate: Mon Jul 27 13:26:32 2020 -0500

    @396 Tweak state updater.
---
 .../apache/solr/cloud/overseer/ZkStateWriter.java  | 24 +++++++++++++---------
 1 file changed, 14 insertions(+), 10 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/cloud/overseer/ZkStateWriter.java b/solr/core/src/java/org/apache/solr/cloud/overseer/ZkStateWriter.java
index 6fe4253..256699d 100644
--- a/solr/core/src/java/org/apache/solr/cloud/overseer/ZkStateWriter.java
+++ b/solr/core/src/java/org/apache/solr/cloud/overseer/ZkStateWriter.java
@@ -180,6 +180,7 @@ public class ZkStateWriter {
     Timer.Context timerContext = stats.time("update_state");
     boolean success = false;
     ClusterState newClusterState = null;
+    KeeperException.BadVersionException exception = null;
 
     try {
       // if (!updates.isEmpty()) {
@@ -187,7 +188,7 @@ public class ZkStateWriter {
         String name = entry.getKey();
         String path = ZkStateReader.getCollectionPath(name);
         DocCollection c = entry.getValue();
-        Integer prevVersion = -1;
+        Integer prevVersion = 0;
         if (lastUpdatedTime == -1) {
           prevVersion = 0;
         }
@@ -274,7 +275,14 @@ public class ZkStateWriter {
               log.info("Write state.json prevVersion={} bytes={} cs={}", prevVersion, data.length, newClusterState);
             //}
             // stat = reader.getZkClient().getCurator().setData().withVersion(prevVersion).forPath(path, data);
-            stat = reader.getZkClient().setData(path, data, prevVersion, true);
+            try {
+              stat = reader.getZkClient().setData(path, data, prevVersion, false);
+            } catch (KeeperException.BadVersionException bve) {
+              // this is a tragic error, we must disallow usage of this instance
+              log.warn("Tried to update the cluster state using version={} but we where rejected, found {}", newClusterState.getZNodeVersion(), stat.getVersion(), bve);
+              exception = bve;
+              continue;
+            }
           } else {
             if (log.isDebugEnabled()) {
               log.debug("writePendingUpdates() - going to create_collection {}", path);
@@ -346,15 +354,11 @@ public class ZkStateWriter {
       //
 
       lastUpdatedTime = System.nanoTime();
-      success = true;
-    } catch (KeeperException.BadVersionException bve) {
-      // this is a tragic error, we must disallow usage of this instance
-       log.warn("Tried to update the cluster state using version={} but we where rejected", newClusterState.getZNodeVersion(), bve);
-
-
+      if (exception != null) {
+        throw exception;
+      }
 
-      // nocommit invalidState = true;
-      throw bve;
+      success = true;
     } finally {
       timerContext.stop();
       if (success) {