code: public final void commitUpdate(PersistentTransaction transaction) throws SevereMessageStoreException
      {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.entry(this, tc, "commitUpdate", transaction);
  
          AbstractItem item = null;
          boolean linkHasBecomeReleasable = false;
          synchronized (this)
          {
              if (ItemLinkState.STATE_UPDATING_DATA == _itemLinkState)
              {
                  _assertCorrectTransaction(transaction);
                  item = _getAndAssertItem();
  
                  ListStatistics stats = getParentStatistics();
                  synchronized (stats)
                  {
                      stats.decrementUpdating();
                      stats.incrementAvailable();
                  }
  
                  linkHasBecomeReleasable = _declareDiscardable();
                  _itemLinkState = ItemLinkState.STATE_AVAILABLE;
              }
              else
              {
                  if (TraceComponent.isAnyTracingEnabled() && tc.isEventEnabled())
                      SibTr.event(this, tc, "Invalid Item state: " + _itemLinkState);
                  if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                      SibTr.exit(this, tc, "commitUpdate");
                  throw new StateException(_itemLinkState.toString());
              }
              _transactionId = null;
          }
          // this stuff has to be done outside the synchronized block
          if (linkHasBecomeReleasable)
          {
              _declareReleasable(item);
          }
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.exit(this, tc, "commitUpdate");
      }
docs: /*
  (non-Javadoc)
  
  @see com.ibm.ws.sib.msgstore.task.TaskTarget#commitUpdate(com.ibm.ws.sib.msgstore.transactions.Transaction)