public void reattachConsumer ( SIBUuid8 uuid , ConsumableKey ck ) throws SINotPossibleInCurrentConfigurationException { if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . entry ( this , tc , "reattachConsumer" , new Object [ ] { uuid , ck } ) ; long timeout = LocalConsumerPoint . NO_WAIT ; synchronized ( this ) { if ( ! closed ) { // Set the new consumer key to be the same ready state as the rest // of the gathering consumer if ( isKeyReady ( ) ) { //get the readyConsumer list lock synchronized ( dispatcher . getDestination ( ) . getReadyConsumerPointLock ( ) ) { ck . ready ( unrecoverable ) ; } } consumerKeys . put ( uuid , ck ) ; // Work out the expiry time if any of the outstanding requests if ( outstandingRequestExpiryTime != LocalConsumerPoint . NO_WAIT ) { timeout = outstandingRequestExpiryTime ; if ( timeout != LocalConsumerPoint . INFINITE_WAIT ) timeout = outstandingRequestExpiryTime - System . currentTimeMillis ( ) ; } } } // outside of the lock - reissue the request if ( timeout == LocalConsumerPoint . INFINITE_WAIT || timeout > 0 ) { ( ( LocalQPConsumerKey ) ck ) . initiateRefill ( ) ; ck . waiting ( timeout , true ) ; } if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . exit ( this , tc , "reattachConsumer" ) ; }
Also add the consumer key back into the list .