void clearFromRunning ( SlotKey slotKey ) { synchronized ( runningSlots ) { runningSlots . remove ( slotKey ) ; UpdateStamp stamp = shardStateManager . getUpdateStamp ( slotKey ) ; shardStateManager . setAllCoarserSlotsDirtyForSlot ( slotKey ) ; //When state gets set to "X", before it got persisted, it might get scheduled for rollup //again, if we get delayed metrics. To prevent this we temporarily set last rollup time with current //time. This value wont get persisted. long currentTimeInMillis = clock . now ( ) . getMillis ( ) ; stamp . setLastRollupTimestamp ( currentTimeInMillis ) ; log . debug ( "SlotKey {} is marked in memory with last rollup time as {}" , slotKey , currentTimeInMillis ) ; // Update the stamp to Rolled state if and only if the current state // is running. If the current state is active, it means we received // a delayed put which toggled the status to Active. if ( stamp . getState ( ) == UpdateStamp . State . Running ) { stamp . setState ( UpdateStamp . State . Rolled ) ; // Note: Rollup state will be updated to the last ACTIVE // timestamp which caused rollup process to kick in. stamp . setDirty ( true ) ; } } }
Remove the given slot from the running group after it has been successfully re - rolled .