jiajunwang commented on issue #767:
URL: https://github.com/apache/helix/issues/767#issuecomment-646915788


   There is another concurrent modification issue found.
   
   1. Regular GC task fails due to concurrent list modification and the stale 
versions are not removed at all.
   2. If, by coincident, there is newer version in the list other then the 
current version, then because of the modification of the list inside the loop, 
the final element (the newer version) won't be filtered but being left in the 
to-be-removed list. Then the GC task removes the most recent version. For 
example,
     a) Input, current version "2"
     b) Children = [1, 2, 3]
     c) The task avoids checking "2", so the list for loop is: [1, 3]
     d) When check "1", it is removed from the list. So the list becomes [3]. 
Then the loop ends, because the first item has already been looped from the for 
iteration perspective.
     e) The version to be removed is "3"!


----------------------------------------------------------------
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