mgao0 commented on a change in pull request #1002:
URL: https://github.com/apache/helix/pull/1002#discussion_r424721525



##########
File path: 
helix-core/src/main/java/org/apache/helix/messaging/handling/HelixTaskExecutor.java
##########
@@ -524,12 +527,27 @@ public void finishTask(MessageTask task) {
   private void updateMessageState(List<Message> readMsgs, HelixDataAccessor 
accessor,
       String instanceName) {
     Builder keyBuilder = accessor.keyBuilder();
-    List<PropertyKey> readMsgKeys = new ArrayList<>();
+    List<String> readMsgPaths = new ArrayList<>();
+    List<DataUpdater<ZNRecord>> updaters = new ArrayList<>();
     for (Message msg : readMsgs) {
-      readMsgKeys.add(msg.getKey(keyBuilder, instanceName));
+      readMsgPaths.add(msg.getKey(keyBuilder, instanceName).getPath());
       _knownMessageIds.add(msg.getId());
+      /**
+       * We use the updater to avoid race condition between writing message to 
zk as READ state and removing message after ST is done
+       * If there is no message at this path, meaning the message is removed 
so we do not write the message
+       */
+      updaters.add(new DataUpdater<ZNRecord>() {
+        @Override
+        public ZNRecord update(ZNRecord currentData) {
+          if (currentData == null) {
+            LOG.warn("Message {} targets at {} has already been removed before 
it is set as READ on instance {}", msg.getId(), msg.getTgtName(), instanceName);

Review comment:
       @jiajunwang I have added the logging. Can you please check if the 
message is good?




----------------------------------------------------------------
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:
[email protected]



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to