Package org.jboss.messaging.core.impl.tx

Examples of org.jboss.messaging.core.impl.tx.Transaction


      List txs = txRepository.listPreparedTransactions();
      Iterator ittx = txs.iterator();
     
      while (ittx.hasNext())
      {
         Transaction tx = (Transaction)ittx.next();
         Xid xid = tx.getXid();
         long tid = tx.getId();
         String stid = String.valueOf(tid);
         String hexGlobalTxid = new String(xid.getGlobalTransactionId());
         String hexBranchQual = new String(xid.getBranchQualifier());
         String hexFormatId = String.valueOf(xid.getFormatId());
        
         Map<String, List<String>> qInfo = new HashMap<String, List<String>>();
        
         List msgList1 = persistenceManager.getMessageChannelPairRefsForTx(tid);
         List msgList2 = persistenceManager.getMessageChannelPairAcksForTx(tid);
        
         Iterator mIter1 = msgList1.iterator();
         while (mIter1.hasNext())
         {
            MessageChannelPair pair = (MessageChannelPair)mIter1.next();
            Binding binding = postOffice.getBindingForChannelID(pair.getChannelId());
            String qname = binding.queue.getName();
            Long chid = binding.queue.getChannelID();
            String qkey = qname + " (" + chid + ")";
            List<String> msgs = qInfo.get(qkey);
            if (msgs == null)
            {
               msgs = new ArrayList<String>();
               qInfo.put(qkey, msgs);
            }
            msgs.add(String.valueOf(pair.getMessage().getMessageID()) + " (+)");
         }
        
         Iterator mIter2 = msgList2.iterator();
         while (mIter2.hasNext())
         {
            MessageChannelPair pair = (MessageChannelPair)mIter2.next();
            Binding binding = postOffice.getBindingForChannelID(pair.getChannelId());
            String qname = binding.queue.getName();
            Long chid = binding.queue.getChannelID();
            String qkey = qname + " (" + chid + ")";
            List<String> msgs = qInfo.get(qkey);
            if (msgs == null)
            {
               msgs = new ArrayList<String>();
               qInfo.put(qkey, msgs);
            }
            msgs.add(String.valueOf(pair.getMessage().getMessageID()) + " (-)");
         }

         buffer.append("<tr>");
         buffer.append("<td>" + stid + "</td>");
         buffer.append("<td>" + hexBranchQual + "</td>");
         buffer.append("<td>" + hexFormatId + "</td>");
         buffer.append("<td>" + hexGlobalTxid + "</td>");
         long age = tx.getAge();
         if ((!this.supportsTxAge) || age == Long.MIN_VALUE)
         {
            buffer.append("<td>N/A</td>");
         }
         else
         {
            buffer.append("<td>" + tx.getAge() + "</td>");
         }
        
         StringBuffer sbq = new StringBuffer();
         StringBuffer sbm = new StringBuffer();
        
View Full Code Here


      List txs = txRepository.listPreparedTransactions(elapsedTime);
      Iterator ittx = txs.iterator();
     
      while (ittx.hasNext())
      {
         Transaction tx = (Transaction)ittx.next();
         Xid xid = tx.getXid();
         long tid = tx.getId();
         String stid = String.valueOf(tid);
         String hexGlobalTxid = new String(xid.getGlobalTransactionId());
         String hexBranchQual = new String(xid.getBranchQualifier());
         String hexFormatId = String.valueOf(xid.getFormatId());
        
         Map<String, List<String>> qInfo = new HashMap<String, List<String>>();
        
         List msgList1 = persistenceManager.getMessageChannelPairRefsForTx(tid);
         List msgList2 = persistenceManager.getMessageChannelPairAcksForTx(tid);
        
         Iterator mIter1 = msgList1.iterator();
         while (mIter1.hasNext())
         {
            MessageChannelPair pair = (MessageChannelPair)mIter1.next();
            Binding binding = postOffice.getBindingForChannelID(pair.getChannelId());
            String qname = binding.queue.getName();
            Long chid = binding.queue.getChannelID();
            String qkey = qname + " (" + chid + ")";
            List<String> msgs = qInfo.get(qkey);
            if (msgs == null)
            {
               msgs = new ArrayList<String>();
               qInfo.put(qkey, msgs);
            }
            msgs.add(String.valueOf(pair.getMessage().getMessageID()) + " (+)");
         }
        
         Iterator mIter2 = msgList2.iterator();
         while (mIter2.hasNext())
         {
            MessageChannelPair pair = (MessageChannelPair)mIter2.next();
            Binding binding = postOffice.getBindingForChannelID(pair.getChannelId());
            String qname = binding.queue.getName();
            Long chid = binding.queue.getChannelID();
            String qkey = qname + " (" + chid + ")";
            List<String> msgs = qInfo.get(qkey);
            if (msgs == null)
            {
               msgs = new ArrayList<String>();
               qInfo.put(qkey, msgs);
            }
            msgs.add(String.valueOf(pair.getMessage().getMessageID()) + " (-)");
         }

         buffer.append("<tr>");
         buffer.append("<td>" + stid + "</td>");
         buffer.append("<td>" + hexBranchQual + "</td>");
         buffer.append("<td>" + hexFormatId + "</td>");
         buffer.append("<td>" + hexGlobalTxid + "</td>");
         long age = tx.getAge();
         if (age == Long.MIN_VALUE)
         {
            buffer.append("<td>N/A</td>");
         }
         else
         {
            buffer.append("<td>" + tx.getAge() + "</td>");
         }
        
         StringBuffer sbq = new StringBuffer();
         StringBuffer sbm = new StringBuffer();
        
View Full Code Here

         if (request.getRequestType() == TransactionRequest.ONE_PHASE_COMMIT_REQUEST)
         {
            if (trace) { log.trace(this + " received ONE_PHASE_COMMIT request"); }

            Transaction tx = tr.createTransaction();
            processTransaction(request.getState(), tx, checkForDuplicates);
            tx.commit();
         }
         else if (request.getRequestType() == TransactionRequest.TWO_PHASE_PREPARE_REQUEST)
         {
            if (trace) { log.trace(this + " received TWO_PHASE_COMMIT prepare request"); }

            Transaction tx = tr.createTransaction(request.getXid());
            processTransaction(request.getState(), tx, checkForDuplicates);
            tx.prepare();
         }
         else if (request.getRequestType() == TransactionRequest.TWO_PHASE_COMMIT_REQUEST)
         {
            if (trace) { log.trace(this + " received TWO_PHASE_COMMIT commit request"); }

            Transaction tx = tr.getPreparedTx(request.getXid());
            if (trace) { log.trace("Committing " + tx); }
            tx.commit();
         }
         else if (request.getRequestType() == TransactionRequest.TWO_PHASE_ROLLBACK_REQUEST)
         {
            if (trace) { log.trace(this + " received TWO_PHASE_COMMIT rollback request"); }

            // for 2pc rollback - we just don't cancel any messages back to the channel; this is
            // driven from the client side.

            Transaction tx =  tr.getPreparedTx(request.getXid());

            if (trace) { log.trace(this + " rolling back " + tx); }

            tx.rollback();
         }

         if (trace) { log.trace(this + " processed transaction successfully"); }
      }
      catch (Throwable t)
View Full Code Here

      return copy;
   }

   private void moveInTransaction(JBossMessage msg, Delivery del, Queue queue, boolean dlq) throws Throwable
   {
      Transaction tx = tr.createTransaction();

      MessageReference ref = msg.createReference();

      try
      {
         if (queue != null)
         {
            queue.handle(null, ref, tx);
            del.acknowledge(tx);
         }
         else
         {
            log.warn("No " + (dlq ? "DLQ" : "expiry queue") + " has been specified so the message will be removed");

            del.acknowledge(tx);
         }

         tx.commit();
      }
      catch (Throwable t)
      {
         tx.rollback();
         throw t;
      }

      //Need to prompt delivery on the dlq/expiry queue
View Full Code Here

      Message m2 = messages[1];
      Message m3 = messages[2];
      Message m4 = messages[3];
      Message m5 = messages[4];

      Transaction tx = null;
      if (xa)
      {
         tx = txRep.createTransaction(new MockXid());
      }
      else
      {
         tx = txRep.createTransaction();
      }

      if (xa)
      {
        assertEquals(1,txRep.getNumberOfRegisteredTransactions());
      }
      else
      {
        assertEquals(0,txRep.getNumberOfRegisteredTransactions());
      }

      MessageReference ref1 = ms.reference(m1);
      MessageReference ref2 = ms.reference(m2);
      MessageReference ref3 = ms.reference(m3);
      MessageReference ref4 = ms.reference(m4);
      MessageReference ref5 = ms.reference(m5);

      log.debug("adding references non-transactionally");

      // Add first two refs non transactionally
      pm.addReference(channel.getChannelID(), ref1, null);
      pm.addReference(channel.getChannelID(), ref2, null);

      //check they're there
      List refs = getReferenceIds(channel.getChannelID());
      assertNotNull(refs);
      assertEquals(2, refs.size());
      assertTrue(refs.contains(new Long(ref1.getMessage().getMessageID())));
      assertTrue(refs.contains(new Long(ref2.getMessage().getMessageID())));

      List msgs = getMessageIds();
      assertNotNull(msgs);
      assertEquals(2, msgs.size());
      assertTrue(msgs.contains(new Long(ref1.getMessage().getMessageID())));
      assertTrue(msgs.contains(new Long(ref2.getMessage().getMessageID())));

      log.debug("ref1 and ref2 are there");

      //Add the next 3 refs transactionally
      pm.addReference(channel.getChannelID(), ref3, tx);
      pm.addReference(channel.getChannelID(), ref4, tx);
      pm.addReference(channel.getChannelID(), ref5, tx);

      //Remove the other 2 transactionally
      pm.removeReference(channel.getChannelID(), ref1, tx);
      pm.removeReference(channel.getChannelID(), ref2, tx);

      //Check the changes aren't visible
      refs = getReferenceIds(channel.getChannelID());
      assertNotNull(refs);
      assertEquals(2, refs.size());
      assertTrue(refs.contains(new Long(ref1.getMessage().getMessageID())));
      assertTrue(refs.contains(new Long(ref2.getMessage().getMessageID())));

      msgs = getMessageIds();
      assertNotNull(msgs);
      assertEquals(2, msgs.size());
      assertTrue(msgs.contains(new Long(ref1.getMessage().getMessageID())));
      assertTrue(msgs.contains(new Long(ref2.getMessage().getMessageID())));

      //commit transaction
      tx.commit();

      assertEquals("numberOfRegisteredTransactions",0,txRep.getNumberOfRegisteredTransactions());

      //check we can see only the last 3 refs
      refs = getReferenceIds(channel.getChannelID());
View Full Code Here

      Message m3 = messages[2];
      Message m4 = messages[3];
      Message m5 = messages[4];


      Transaction tx = null;
      if (xa)
      {
         tx = txRep.createTransaction(new MockXid());
      }
      else
      {
         tx = txRep.createTransaction();
      }

      MessageReference ref1 = ms.reference(m1);
      MessageReference ref2 = ms.reference(m2);
      MessageReference ref3 = ms.reference(m3);
      MessageReference ref4 = ms.reference(m4);
      MessageReference ref5 = ms.reference(m5);

      //Add first two refs non transactionally
      pm.addReference(channel.getChannelID(), ref1, null);
      pm.addReference(channel.getChannelID(), ref2, null);

      //check they're there
      List refs = getReferenceIds(channel.getChannelID());
      assertNotNull(refs);
      assertEquals(2, refs.size());
      assertTrue(refs.contains(new Long(ref1.getMessage().getMessageID())));
      assertTrue(refs.contains(new Long(ref2.getMessage().getMessageID())));

      List msgs = getMessageIds();
      assertNotNull(msgs);
      assertEquals(2, msgs.size());
      assertTrue(msgs.contains(new Long(ref1.getMessage().getMessageID())));
      assertTrue(msgs.contains(new Long(ref2.getMessage().getMessageID())));


      //Add the next 3 refs transactionally
      pm.addReference(channel.getChannelID(), ref3, tx);
      pm.addReference(channel.getChannelID(), ref4, tx);
      pm.addReference(channel.getChannelID(), ref5, tx);

      //Remove the other 2 transactionally
      pm.removeReference(channel.getChannelID(), ref1, tx);
      pm.removeReference(channel.getChannelID(), ref2, tx);

      //Check the changes aren't visible
      refs = getReferenceIds(channel.getChannelID());
      assertNotNull(refs);
      assertEquals(2, refs.size());
      assertTrue(refs.contains(new Long(ref1.getMessage().getMessageID())));
      assertTrue(refs.contains(new Long(ref2.getMessage().getMessageID())));

      msgs = getMessageIds();
      assertNotNull(msgs);
      assertEquals(2, msgs.size());
      assertTrue(msgs.contains(new Long(ref1.getMessage().getMessageID())));
      assertTrue(msgs.contains(new Long(ref2.getMessage().getMessageID())));

      //rollback transaction
      tx.rollback();

      refs = getReferenceIds(channel.getChannelID());
      assertNotNull(refs);
      assertEquals(2, refs.size());
      assertTrue(refs.contains(new Long(ref1.getMessage().getMessageID())));
View Full Code Here

      List txs = txRepository.listPreparedTransactions();
      Iterator ittx = txs.iterator();
     
      while (ittx.hasNext())
      {
         Transaction tx = (Transaction)ittx.next();
         Xid xid = tx.getXid();
         long tid = tx.getId();
         String stid = String.valueOf(tid);
         String hexGlobalTxid = new String(xid.getGlobalTransactionId());
         String hexBranchQual = new String(xid.getBranchQualifier());
         String hexFormatId = String.valueOf(xid.getFormatId());
        
         Map<String, List<String>> qInfo = new HashMap<String, List<String>>();
        
         List msgList1 = persistenceManager.getMessageChannelPairRefsForTx(tid);
         List msgList2 = persistenceManager.getMessageChannelPairAcksForTx(tid);
        
         Iterator mIter1 = msgList1.iterator();
         while (mIter1.hasNext())
         {
            MessageChannelPair pair = (MessageChannelPair)mIter1.next();
            Binding binding = postOffice.getBindingForChannelID(pair.getChannelId());
            String qname = binding.queue.getName();
            Long chid = binding.queue.getChannelID();
            String qkey = qname + " (" + chid + ")";
            List<String> msgs = qInfo.get(qkey);
            if (msgs == null)
            {
               msgs = new ArrayList<String>();
               qInfo.put(qkey, msgs);
            }
            msgs.add(String.valueOf(pair.getMessage().getMessageID()) + " (+)");
         }
        
         Iterator mIter2 = msgList2.iterator();
         while (mIter2.hasNext())
         {
            MessageChannelPair pair = (MessageChannelPair)mIter2.next();
            Binding binding = postOffice.getBindingForChannelID(pair.getChannelId());
            String qname = binding.queue.getName();
            Long chid = binding.queue.getChannelID();
            String qkey = qname + " (" + chid + ")";
            List<String> msgs = qInfo.get(qkey);
            if (msgs == null)
            {
               msgs = new ArrayList<String>();
               qInfo.put(qkey, msgs);
            }
            msgs.add(String.valueOf(pair.getMessage().getMessageID()) + " (-)");
         }

         buffer.append("<tr>");
         buffer.append("<td>" + stid + "</td>");
         buffer.append("<td>" + hexBranchQual + "</td>");
         buffer.append("<td>" + hexFormatId + "</td>");
         buffer.append("<td>" + hexGlobalTxid + "</td>");
         long age = tx.getAge();
         if ((!this.supportsTxAge) || age == Long.MIN_VALUE)
         {
            buffer.append("<td>N/A</td>");
         }
         else
         {
            buffer.append("<td>" + tx.getAge() + "</td>");
         }
        
         StringBuffer sbq = new StringBuffer();
         StringBuffer sbm = new StringBuffer();
        
View Full Code Here

      return copy;
   }

   private void moveInTransaction(JBossMessage msg, Delivery del, Queue queue, boolean dlq) throws Throwable
   {
      Transaction tx = tr.createTransaction();

      MessageReference ref = msg.createReference();

      try
      {
         if (queue != null)
         {
            queue.handle(null, ref, tx);
            del.acknowledge(tx);
         }
         else
         {
            log.warn("No " + (dlq ? "DLQ" : "expiry queue") + " has been specified so the message will be removed");

            del.acknowledge(tx);
         }

         tx.commit();
      }
      catch (Throwable t)
      {
         tx.rollback();
         throw t;
      }

      //Need to prompt delivery on the dlq/expiry queue
View Full Code Here

      List txs = txRepository.listPreparedTransactions(elapsedTime);
      Iterator ittx = txs.iterator();
     
      while (ittx.hasNext())
      {
         Transaction tx = (Transaction)ittx.next();
         Xid xid = tx.getXid();
         long tid = tx.getId();
         String stid = String.valueOf(tid);
         String hexGlobalTxid = new String(xid.getGlobalTransactionId());
         String hexBranchQual = new String(xid.getBranchQualifier());
         String hexFormatId = String.valueOf(xid.getFormatId());
        
         Map<String, List<String>> qInfo = new HashMap<String, List<String>>();
        
         List msgList1 = persistenceManager.getMessageChannelPairRefsForTx(tid);
         List msgList2 = persistenceManager.getMessageChannelPairAcksForTx(tid);
        
         Iterator mIter1 = msgList1.iterator();
         while (mIter1.hasNext())
         {
            MessageChannelPair pair = (MessageChannelPair)mIter1.next();
            Binding binding = postOffice.getBindingForChannelID(pair.getChannelId());
            String qname = binding.queue.getName();
            Long chid = binding.queue.getChannelID();
            String qkey = qname + " (" + chid + ")";
            List<String> msgs = qInfo.get(qkey);
            if (msgs == null)
            {
               msgs = new ArrayList<String>();
               qInfo.put(qkey, msgs);
            }
            msgs.add(String.valueOf(pair.getMessage().getMessageID()) + " (+)");
         }
        
         Iterator mIter2 = msgList2.iterator();
         while (mIter2.hasNext())
         {
            MessageChannelPair pair = (MessageChannelPair)mIter2.next();
            Binding binding = postOffice.getBindingForChannelID(pair.getChannelId());
            String qname = binding.queue.getName();
            Long chid = binding.queue.getChannelID();
            String qkey = qname + " (" + chid + ")";
            List<String> msgs = qInfo.get(qkey);
            if (msgs == null)
            {
               msgs = new ArrayList<String>();
               qInfo.put(qkey, msgs);
            }
            msgs.add(String.valueOf(pair.getMessage().getMessageID()) + " (-)");
         }

         buffer.append("<tr>");
         buffer.append("<td>" + stid + "</td>");
         buffer.append("<td>" + hexBranchQual + "</td>");
         buffer.append("<td>" + hexFormatId + "</td>");
         buffer.append("<td>" + hexGlobalTxid + "</td>");
         long age = tx.getAge();
         if (age == Long.MIN_VALUE)
         {
            buffer.append("<td>N/A</td>");
         }
         else
         {
            buffer.append("<td>" + tx.getAge() + "</td>");
         }
        
         StringBuffer sbq = new StringBuffer();
         StringBuffer sbm = new StringBuffer();
        
View Full Code Here

         if (request.getRequestType() == TransactionRequest.ONE_PHASE_COMMIT_REQUEST)
         {
            if (trace) { log.trace(this + " received ONE_PHASE_COMMIT request"); }

            Transaction tx = tr.createTransaction();
            processTransaction(request.getState(), tx, checkForDuplicates);
            tx.commit();
         }
         else if (request.getRequestType() == TransactionRequest.TWO_PHASE_PREPARE_REQUEST)
         {
            if (trace) { log.trace(this + " received TWO_PHASE_COMMIT prepare request"); }

            Transaction tx = tr.createTransaction(request.getXid());
            processTransaction(request.getState(), tx, checkForDuplicates);
            tx.prepare();
         }
         else if (request.getRequestType() == TransactionRequest.TWO_PHASE_COMMIT_REQUEST)
         {
            if (trace) { log.trace(this + " received TWO_PHASE_COMMIT commit request"); }

            Transaction tx = tr.getPreparedTx(request.getXid());
            if (trace) { log.trace("Committing " + tx); }
            tx.commit();
         }
         else if (request.getRequestType() == TransactionRequest.TWO_PHASE_ROLLBACK_REQUEST)
         {
            if (trace) { log.trace(this + " received TWO_PHASE_COMMIT rollback request"); }

            // for 2pc rollback - we just don't cancel any messages back to the channel; this is
            // driven from the client side.
            // if the transaction rollback comes from recovery, we need to cancel the messages
            // see JBMESSAGING-1786

            Transaction tx =  tr.getPreparedTx(request.getXid());

            if (trace) { log.trace(this + " rolling back " + tx); }

            tx.rollback(request.getState().isRecovered());
         }

         if (trace) { log.trace(this + " processed transaction successfully"); }
      }
      catch (Throwable t)
View Full Code Here

TOP

Related Classes of org.jboss.messaging.core.impl.tx.Transaction

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.