public final synchronized void commitDecrementReferenceCount ( PersistentTransaction transaction ) throws SevereMessageStoreException { if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . entry ( this , tc , "commitDecrementReferenceCount" ) ; if ( _referenceCount < 1 ) { SevereMessageStoreException e = new SevereMessageStoreException ( "Reference count decrement cannot be committed" ) ; FFDCFilter . processException ( e , "com.ibm.ws.sib.msgstore.cache.links.ItemLink.commitDecrementReferenceCount" , "1:131:1.104.1.1" ) ; if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEventEnabled ( ) ) SibTr . event ( this , tc , "Reference count decrement cannot be committed" ) ; if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . exit ( this , tc , "commitDecrementReferenceCount" ) ; throw e ; } _referenceCount -- ; if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isDebugEnabled ( ) ) SibTr . debug ( this , tc , "reference count dropped to: " + _referenceCount ) ; if ( 0 == _referenceCount ) { // This causes the item's itemReferencesDroppedToZero to be called after // completion of this transaction transaction . registerCallback ( this ) ; } if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . exit ( this , tc , "commitDecrementReferenceCount" ) ; }
This method is called when committing the removal of a reference . It should only be called by the message store code .