@ SuppressFBWarnings ( value = "VO_VOLATILE_INCREMENT" , justification = "False Positive" ) private void advanceEpoch ( ) { awaitBgPropagationTermination ( ) ; startEagerPropagation ( ) ; ConcurrentPropagationService . resetExecutorService ( Thread . currentThread ( ) . getId ( ) ) ; //noinspection NonAtomicOperationOnVolatileField // this increment of a volatile field is done within the scope of the propagation // synchronization and hence is done by a single thread // Ignore a FindBugs warning epoch_ ++ ; endPropagation ( null , true ) ; initBgPropagationService ( ) ; }
Advances the epoch while there is no background propagation This ensures a propagation invoked before the reset cannot affect the sketch after the reset is completed .