code: public void batchPrecommit(TransactionCommon currentTran)
    {
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.entry(this, tc, "batchPrecommit", currentTran);
   
      // Holds TickRanges of all messages to be sent downstream
      TickRange tr1 = null;
      TickRange tickRange = null;
      
      synchronized (this)
      {
        // 316010 : It is possible for the sourcestream to have
        // been removed when the batch timer triggers (if destination
        // is deleted). So check the streamset is still in the store.
        if ( !streamSet.isPersistent() || streamSet.isInStore() )
        {
          for (int i = 0; i < batchList.size(); i++)
          {
            tickRange = (TickRange)batchList.get(i);
            try
            {
              if ((tr1 = msgRemoved(tickRange.valuestamp, oststream, currentTran)) != null)
              {
                batchSendList.add(tr1);
                lastMsgSent = tr1.valuestamp;
              }
            }
            catch (SIResourceException e)
            {
              //FFDC
              FFDCFilter.processException(
                e,
                "com.ibm.ws.sib.processor.gd.SourceStream.batchPrecommit",
                "1:2558:1.138",
                this);
    
              SibTr.exception(tc, e);
            }
          } 
        }  
      }  
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.exit(tc, "batchPrecommit");
    }
docs: /* (non-Javadoc)
  @see com.ibm.ws.sib.processor.impl.interfaces.BatchListener#batchPrecommit(com.ibm.ws.sib.msgstore.transactions.Transaction)