private void startExecutingUpdates ( ) throws ClosedException { if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . entry ( tc , "startExecutingUpdates" ) ; // swap the enqueuedUnits and executingUnits. ArrayList temp = executingUnits ; executingUnits = enqueuedUnits ; enqueuedUnits = temp ; enqueuedUnits . clear ( ) ; // enqueuedUnits is now ready to accept AsyncUpdates in enqueueWork() executing = true ; try { LocalTransaction tran = tranManager . createLocalTransaction ( false ) ; ExecutionThread thread = new ExecutionThread ( executingUnits , tran ) ; mp . startNewSystemThread ( thread ) ; } catch ( InterruptedException e ) { // this object cannot recover from this exception since we don't know how much work the ExecutionThread // has done. should not occur! FFDCFilter . processException ( e , "com.ibm.ws.sib.processor.impl.store.AsyncUpdateThread.startExecutingUpdates" , "1:222:1.28" , this ) ; SibTr . exception ( tc , e ) ; if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . exit ( tc , "startExecutingUpdates" , e ) ; closed = true ; throw new ClosedException ( e . getMessage ( ) ) ; } if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . exit ( tc , "startExecutingUpdates" ) ; }
Internal method . Should be called from within a synchronized block .