@Override
    public void eventPostRollbackRemove(Transaction transaction) throws SevereMessageStoreException
    {
        super.eventPostRollbackRemove(transaction);
        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
            SibTr.entry(this, tc, "eventPostRollbackRemove", transaction);

        if (failedInitInRestore)
        {
            initialiseNonPersistent(true);
        }

        try
        {
            //Don't change the order of this callback sequence
            // TODO We should possibly change this logic to something similar to 541867 (on the unlock)
            // as I guess the aim here is not to drive the ConsumerDispatcher until after we've driven any
            // consumer. Basing this on the order of registration is a bit iffy.
            // I'm also curious why we have five slots here as there should only ever be three things registered
            // (the ConsumerDispatcher, PtoPMessageItemStream (or SubscriptionItemStream) and optionally a
            // JSLocalConsumerPoint).
            if (POST_ROLLBACK_REMOVE_5 != null)
            {
                POST_ROLLBACK_REMOVE_5.messageEventOccurred(MessageEvents.POST_ROLLBACK_REMOVE, this, transaction);
            }
            if (POST_ROLLBACK_REMOVE_4 != null)
            {
                POST_ROLLBACK_REMOVE_4.messageEventOccurred(MessageEvents.POST_ROLLBACK_REMOVE, this, transaction);
            }
            if (POST_ROLLBACK_REMOVE_3 != null)
            {
                POST_ROLLBACK_REMOVE_3.messageEventOccurred(MessageEvents.POST_ROLLBACK_REMOVE, this, transaction);
            }
            if (POST_ROLLBACK_REMOVE_2 != null)
            {
                POST_ROLLBACK_REMOVE_2.messageEventOccurred(MessageEvents.POST_ROLLBACK_REMOVE, this, transaction);
            }
            if (POST_ROLLBACK_REMOVE_1 != null)
            {
                POST_ROLLBACK_REMOVE_1.messageEventOccurred(MessageEvents.POST_ROLLBACK_REMOVE, this, transaction);
            }
        } catch (SIException e)
        {
            FFDCFilter.processException(
                                        e,
                                        "com.ibm.ws.sib.processor.impl.store.items.MessageItem.eventPostRollbackRemove",
                                        "1:1455:1.244.1.40",
                                        this);

            SibTr.exception(tc, e);

            if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                SibTr.exit(this, tc, "eventPostRollbackRemove", e);

            throw new SIErrorException(e);
        }

        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
            SibTr.exit(this, tc, "eventPostRollbackRemove");
    }
@ Override public void eventPostRollbackRemove ( Transaction transaction ) throws SevereMessageStoreException { super . eventPostRollbackRemove ( transaction ) ; if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . entry ( this , tc , "eventPostRollbackRemove" , transaction ) ; if ( failedInitInRestore ) { initialiseNonPersistent ( true ) ; } try { if ( POST_ROLLBACK_REMOVE_5 != null ) { POST_ROLLBACK_REMOVE_5 . messageEventOccurred ( MessageEvents . POST_ROLLBACK_REMOVE , this , transaction ) ; } if ( POST_ROLLBACK_REMOVE_4 != null ) { POST_ROLLBACK_REMOVE_4 . messageEventOccurred ( MessageEvents . POST_ROLLBACK_REMOVE , this , transaction ) ; } if ( POST_ROLLBACK_REMOVE_3 != null ) { POST_ROLLBACK_REMOVE_3 . messageEventOccurred ( MessageEvents . POST_ROLLBACK_REMOVE , this , transaction ) ; } if ( POST_ROLLBACK_REMOVE_2 != null ) { POST_ROLLBACK_REMOVE_2 . messageEventOccurred ( MessageEvents . POST_ROLLBACK_REMOVE , this , transaction ) ; } if ( POST_ROLLBACK_REMOVE_1 != null ) { POST_ROLLBACK_REMOVE_1 . messageEventOccurred ( MessageEvents . POST_ROLLBACK_REMOVE , this , transaction ) ; } } catch ( SIException e ) { FFDCFilter . processException ( e , "com.ibm.ws.sib.processor.impl.store.items.MessageItem.eventPostRollbackRemove" , "1:1455:1.244.1.40" , this ) ; SibTr . exception ( tc , e ) ; if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . exit ( this , tc , "eventPostRollbackRemove" , e ) ; throw new SIErrorException ( e ) ; } if ( TraceComponent . isAnyTracingEnabled ( ) && tc . isEntryEnabled ( ) ) SibTr . exit ( this , tc , "eventPostRollbackRemove" ) ; }
/*
(non-Javadoc)
The logic in this method has been reversed so that the register vs callbacks are handled
like a stack rather than a queue. This sequence is now vital to SIB0115 and shouldn't be changed.

@see com.ibm.ws.sib.store.AbstractItem#eventPostRollbackRemove(com.ibm.ws.sib.msgstore.Transaction)