[crac] RFR: Prevent concurrent cleanup by cleaner thread and checkpoint notifications
    Radim Vansa 
    duke at openjdk.org
       
    Thu May 25 06:59:19 UTC 2023
    
    
  
On Wed, 24 May 2023 13:16:43 GMT, Anton Kozlov <akozlov at openjdk.org> wrote:
>> We block the cleaner thread to prevent race conditions between this thread and checkpointing thread invoking clean().
>> When the cleanup starts in cleaner thread the checkpoint will skip it, but without waiting for the cleanup to finish (which might be critical for the checkpoint, e.g. closing FDs).
>> The limitation is that code performing C/R must not wait on any task completed by the cleaner.
>
> src/java.base/share/classes/jdk/internal/ref/CleanerImpl.java line 182:
> 
>> 180:         // completed by the cleaner.
>> 181:         blockForCheckpoint = true;
>> 182:         thread.interrupt();
> 
> Why it has to be interrupt and not notify(), for example?
The interrupt wakes up cleaner in `queue.remove()` (line 161) in case it's blocking for next task.
-------------
PR Review Comment: https://git.openjdk.org/crac/pull/73#discussion_r1205075139
    
    
More information about the crac-dev
mailing list