public void run ( ) { if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . entry ( tc , "run" ) ; UniqueKeyGenerator generator = null ; while ( _running ) { synchronized ( _asyncQ ) { // Do we have anything to do? while ( _asyncQ . isEmpty ( ) ) { // If not we need to wait until told // that we do. try { _asyncQ . wait ( ) ; } catch ( InterruptedException ie ) { // No FFDC Code Needed. } // If we have been woken up because we are // stopping then we can simply return here if ( ! _running ) { return ; } } generator = ( UniqueKeyGenerator ) _asyncQ . removeFirst ( ) ; } // Carry out the requested updates. try { updateEntry ( generator ) ; } catch ( PersistenceException pe ) { com . ibm . ws . ffdc . FFDCFilter . processException ( pe , "com.ibm.ws.sib.msgstore.persistence.objectManager.UniqueKeyRangeManager.run" , "1:366:1.8" , this ) ; if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . event ( tc , "Exception caught asynchronously increasing range of unique key generator!" , pe ) ; } } if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . exit ( tc , "run" ) ; }
This method is where the asynchronous reads and writes are done to the filesystem for persistent updates to the currently active range of keys .