noblepaul commented on a change in pull request #2187:
URL: https://github.com/apache/lucene-solr/pull/2187#discussion_r554585836



##########
File path: solr/core/src/java/org/apache/solr/cloud/overseer/ZkStateWriter.java
##########
@@ -174,20 +215,30 @@ public boolean hasPendingUpdates() {
    * @throws KeeperException       if any ZooKeeper operation results in an 
error
    * @throws InterruptedException  if the current thread is interrupted
    */
-  public ClusterState writePendingUpdates() throws IllegalStateException, 
KeeperException, InterruptedException {
+  public ClusterState writePendingUpdates(Map<String, ZkWriteCommand> updates) 
throws IllegalStateException, KeeperException, InterruptedException {
     if (invalidState) {
       throw new IllegalStateException("ZkStateWriter has seen a tragic error, 
this instance can no longer be used");
     }
-    if (!hasPendingUpdates()) return clusterState;
+    if ((updates == this.updates)
+        && !hasPendingUpdates()) {
+      return clusterState;
+    }
     Timer.Context timerContext = stats.time("update_state");
     boolean success = false;
     try {
       if (!updates.isEmpty()) {
-        for (Map.Entry<String, DocCollection> entry : updates.entrySet()) {
+        for (Map.Entry<String, ZkWriteCommand> entry : updates.entrySet()) {
           String name = entry.getKey();
           String path = ZkStateReader.getCollectionPath(name);
-          DocCollection c = entry.getValue();
+          ZkWriteCommand cmd = entry.getValue();
+          DocCollection c = cmd.collection;
 
+          if (cmd.ops != null && cmd.ops.isPreOp()) {
+            cmd.ops.persist(path, reader.getZkClient());
+            clusterState = clusterState.copyWith(name,
+                  
cmd.collection.copyWith(PerReplicaStates.fetch(cmd.collection.getZNode(), 
reader.getZkClient(), null)));
+          }
+          if (!cmd.persistCollState) continue;

Review comment:
       preOp is a command that should be run before updating the state.json 
operation




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org
For additional commands, e-mail: issues-h...@lucene.apache.org

Reply via email to