Rishabh Patel created HDDS-14860:
------------------------------------

             Summary: ThrottledAsyncChecker does not schedule checks in a 
threadsafe manner
                 Key: HDDS-14860
                 URL: https://issues.apache.org/jira/browse/HDDS-14860
             Project: Apache Ozone
          Issue Type: Bug
            Reporter: Rishabh Patel
            Assignee: Rishabh Patel


[https://github.com/apache/ozone/blob/dc9952e446940b82b277a7e8c9d02239a8417a06/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/common/volume/ThrottledAsyncChecker.java#L118]

 

`ThrottledAsyncChecker#schedule` has two preconditions:
 # Is a check already in progress
 # Was the previous check completed a long time ago

If both of these conditions are satisfied then a new check is scheduled. 

However, consider a case where a check was never run or it was run a long time 
ago. This situation will satisfy both the preconditions. Now if two threads 
call the same schedule method for the same target/volume, there will be a race 
condition and/or undefined behavior. 

This is because the `checksInProgress` map is updated only towards the end of 
the method.

 



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

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

Reply via email to