void scheduleDrainBuffers ( ) { if ( drainStatus ( ) >= PROCESSING_TO_IDLE ) { return ; } if ( evictionLock . tryLock ( ) ) { try { int drainStatus = drainStatus ( ) ; if ( drainStatus >= PROCESSING_TO_IDLE ) { return ; } lazySetDrainStatus ( PROCESSING_TO_IDLE ) ; executor ( ) . execute ( drainBuffersTask ) ; } catch ( Throwable t ) { logger . log ( Level . WARNING , "Exception thrown when submitting maintenance task" , t ) ; maintenance ( /* ignored */ null ) ; } finally { evictionLock . unlock ( ) ; } } }
Attempts to schedule an asynchronous task to apply the pending operations to the page replacement policy . If the executor rejects the task then it is run directly .