Patson Luk created SOLR-16690:
---------------------------------

             Summary: ZkStateWriter#enqueueUpdate should execute callback even 
tho cmds is empty or no-op
                 Key: SOLR-16690
                 URL: https://issues.apache.org/jira/browse/SOLR-16690
             Project: Solr
          Issue Type: Improvement
      Security Level: Public (Default Security Level. Issues are Public)
          Components: SolrCloud
    Affects Versions: 9.1.1
            Reporter: Patson Luk


{{ZkStateWriter#enqueueUpdate(ClusterState prevState, List<ZkWriteCommand> 
cmds, ZkWriteCallback callback)}} accepts a callback but such callback would 
not be called if either the cmds is empty or a no-op.

However, this could cause issues in some scenarios, for example in 
{{Overseer$ClusterStateUpdater#run}}, it calls 


clusterState =  processQueueItem(message, clusterState, zkStateWriter,  true,
                        () -> {
                          stateUpdateQueue.remove(processedNodes);
                          processedNodes.clear();
                        });

Which it relies on the callback to remove items from the work queue, however if 
the message does not create an empty {{List<ZkWriteCommand>}} - for example 
"DOWNNODE" for PRS enabled collection, then  the callback will be ignored hence 
the `stateUpdateQueue.remove(processedNodes);` would not be run even though it 
has finished processing the message




--
This message was sent by Atlassian Jira
(v8.20.10#820010)

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

Reply via email to