Package com.sun.messaging.jmq.jmsserver.data

Examples of com.sun.messaging.jmq.jmsserver.data.RemoteTransaction


      Globals.getLogger().log(Logger.DEBUG,
          getPrefix() + " replayTransactionEvent");
    }
    RemoteTransactionEvent remoteTxnEvent = (RemoteTransactionEvent) txnEvent;
    // replay to store on commit
    RemoteTransaction remoteTxn = remoteTxnEvent.remoteTransaction;
    int state = remoteTxn.getState();
    TransactionUID tid = remoteTxn.getTid();
    if (remoteTxnEvent.getSubType() == RemoteTransactionEvent.Type2PPrepareEvent) {
      // 2-phase prepare
      // check if it is stored
      // (this should only be the case if a failure occurred between saving
      // in prepared txn store and resetting the transaction log
      if (incompleteStored.containsKey(tid)) {
        if (Store.getDEBUG()) {
          String msg = getPrefix()
              + " found matching txn in prepared store on replay "
              + remoteTxn;
          Globals.getLogger().log(Logger.DEBUG, msg);
        }
      } else {
        addToIncompleteUnstored(remoteTxn);
      }

    } else if (remoteTxnEvent.getSubType() == RemoteTransactionEvent.Type2PCompleteEvent) {
      // we are completing a transaction
      // the transaction could be
      // a) unstored (prepare replayed earlier)
      // b) stored incomplete (prepare occurred before last checkpoint,
      //    completion not written to prepared store yet)
      //    This should therefore be the last entry in log.
      // c) stored complete (prepare occurred before last checkpoint,
      //    and failure occurred after completion stored in prepared store
      BaseTransaction existingWork = null;
      if (incompleteUnstored.containsKey(tid)) {
        // a) unstored (prepare replayed earlier)
        existingWork = removeFromIncompleteUnstored(tid);
      } else if (incompleteStored.containsKey(tid)) {
        // b) stored incomplete (prepare occurred before last checkpoint,
        //    completion not written to prepared store yet)

        existingWork = removeFromIncompleteStored(tid);

        updateStoredState(tid, state);

        addToCompleteStored(existingWork);
      } else if (completeStored.containsKey(tid)) {
        // c) stored complete (prepare occurred before last checkpoint,
        //    and failure occurred after completion stored in prepared store
        existingWork = completeStored.get(tid);
      }
      if (existingWork != null) {
        RemoteTransaction remoteTransaction = (RemoteTransaction)existingWork;
        if (state == TransactionState.COMMITTED) {
         
          TransactionAcknowledgement[] txnAcks = remoteTransaction.getTxnAcks();
          DestinationUID[] destIds = remoteTransaction.getDestIds();
          transactionLogManager.transactionLogReplayer.replayRemoteAcks(txnAcks, destIds, tid, dstLoadedSet);
        }
      } else {
        logger.log(Logger.ERROR,
            "Could not find prepared work for completing two-phase transaction "
View Full Code Here


 
  public void readFromBytes(byte[] data) throws IOException, BrokerException {
    ByteArrayInputStream bais = new ByteArrayInputStream(data);
    DataInputStream dis = new DataInputStream(bais);
    remoteTransaction = new RemoteTransaction();
    dis.skip(2);

    remoteTransaction.getTransactionDetails().readContent(dis);
   
    int objectBodySize = dis.readInt();
View Full Code Here

  void readFromBytes(byte[] data) throws IOException, BrokerException {
    ByteArrayInputStream bais = new ByteArrayInputStream(data);
    DataInputStream dis = new DataInputStream(bais);

    remoteTransaction = new RemoteTransaction();
    dis.skip(2);
    remoteTransaction.getTransactionDetails().readContent(dis);

    dis.close();
    bais.close();
View Full Code Here

  class RemoteTxnConverter extends TxnConverter {
    void convert(BaseTransaction baseTxn) throws BrokerException,
        IOException {

      RemoteTransaction remoteTxn = (RemoteTransaction) baseTxn;
      TransactionUID id = baseTxn.getTid();

      TransactionState ts = baseTxn.getTransactionState();

      store.storeRemoteTransaction(id, ts, remoteTxn.getTxnAcks(),
          remoteTxn.getTxnHomeBroker(), Destination.PERSIST_SYNC);
    }
View Full Code Here

TOP

Related Classes of com.sun.messaging.jmq.jmsserver.data.RemoteTransaction

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.