@Override public String toString() { return "XidImpl (" + System.identityHashCode(this) + " bq:" + stringRep(branchQualifier) + " formatID:" + formatId + " gtxid:" + stringRep(globalTransactionId) + " base64:" + toBase64String(this); }
@Override public String toString() { return "XidImpl (" + System.identityHashCode(this) + " bq:" + stringRep(branchQualifier) + " formatID:" + formatId + " gtxid:" + stringRep(globalTransactionId) + " base64:" + toBase64String(this); }
@Override public String toString() { return "XidImpl (" + System.identityHashCode(this) + " bq:" + stringRep(branchQualifier) + " formatID:" + formatId + " gtxid:" + stringRep(globalTransactionId) + " base64:" + toBase64String(this); }
@Override public String toString() { return "XidImpl (" + System.identityHashCode(this) + " bq:" + stringRep(branchQualifier) + " formatID:" + formatId + " gtxid:" + stringRep(globalTransactionId) + " base64:" + toBase64String(this); }
@Override public String toString() { return "XidImpl (" + System.identityHashCode(this) + " bq:" + stringRep(branchQualifier) + " formatID:" + formatId + " gtxid:" + stringRep(globalTransactionId) + " base64:" + toBase64String(this); }
@Override public String toString() { return "XidImpl (" + System.identityHashCode(this) + " bq:" + stringRep(branchQualifier) + " formatID:" + formatId + " gtxid:" + stringRep(globalTransactionId) + " base64:" + toBase64String(this); }
@Override public String toString() { return "XidImpl (" + System.identityHashCode(this) + " bq:" + stringRep(branchQualifier) + " formatID:" + formatId + " gtxid:" + stringRep(globalTransactionId) + " base64:" + toBase64String(this); }
@Override public String[] listPreparedTransactions() { checkStarted(); clearIO(); try { DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.MEDIUM); Map<Xid, Long> xids = resourceManager.getPreparedTransactionsWithCreationTime(); ArrayList<Entry<Xid, Long>> xidsSortedByCreationTime = new ArrayList<>(xids.entrySet()); Collections.sort(xidsSortedByCreationTime, new Comparator<Entry<Xid, Long>>() { @Override public int compare(final Entry<Xid, Long> entry1, final Entry<Xid, Long> entry2) { // sort by creation time, oldest first return (int) (entry1.getValue() - entry2.getValue()); } }); String[] s = new String[xidsSortedByCreationTime.size()]; int i = 0; for (Map.Entry<Xid, Long> entry : xidsSortedByCreationTime) { Date creation = new Date(entry.getValue()); Xid xid = entry.getKey(); s[i++] = dateFormat.format(creation) + " base64: " + XidImpl.toBase64String(xid) + " " + xid.toString(); } return s; } finally { blockOnIO(); } }
@Override public String[] listHeuristicCommittedTransactions() { checkStarted(); clearIO(); try { List<Xid> xids = resourceManager.getHeuristicCommittedTransactions(); String[] s = new String[xids.size()]; int i = 0; for (Xid xid : xids) { s[i++] = XidImpl.toBase64String(xid); } return s; } finally { blockOnIO(); } }
@Override public String[] listHeuristicRolledBackTransactions() { checkStarted(); clearIO(); try { List<Xid> xids = resourceManager.getHeuristicRolledbackTransactions(); String[] s = new String[xids.size()]; int i = 0; for (Xid xid : xids) { s[i++] = XidImpl.toBase64String(xid); } return s; } finally { blockOnIO(); } }
public JsonObject toJSON() throws Exception { DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.MEDIUM); JsonObjectBuilder detailJson = JsonLoader.createObjectBuilder().add(KEY_CREATION_TIME, dateFormat.format(new Date(this.creationTime))).add(KEY_XID_AS_BASE64, XidImpl.toBase64String(this.xid)).add(KEY_XID_FORMAT_ID, this.xid.getFormatId()).add(KEY_XID_GLOBAL_TXID, new String(this.xid.getGlobalTransactionId())).add(KEY_XID_BRANCH_QUAL, new String(this.xid.getBranchQualifier()));
@Override public synchronized boolean commitPreparedTransaction(final String transactionAsBase64) throws Exception { checkStarted(); clearIO(); try { List<Xid> xids = resourceManager.getPreparedTransactions(); for (Xid xid : xids) { if (XidImpl.toBase64String(xid).equals(transactionAsBase64)) { Transaction transaction = resourceManager.removeTransaction(xid); transaction.commit(false); long recordID = server.getStorageManager().storeHeuristicCompletion(xid, true); storageManager.waitOnOperations(); resourceManager.putHeuristicCompletion(recordID, xid, true); return true; } } return false; } finally { blockOnIO(); } }
@Override public synchronized boolean rollbackPreparedTransaction(final String transactionAsBase64) throws Exception { checkStarted(); clearIO(); try { List<Xid> xids = resourceManager.getPreparedTransactions(); for (Xid xid : xids) { if (XidImpl.toBase64String(xid).equals(transactionAsBase64)) { Transaction transaction = resourceManager.removeTransaction(xid); transaction.rollback(); long recordID = server.getStorageManager().storeHeuristicCompletion(xid, false); server.getStorageManager().waitOnOperations(); resourceManager.putHeuristicCompletion(recordID, xid, false); return true; } } return false; } finally { blockOnIO(); } }
@Test public void testForgetHeuristicallyRolledBackXID() throws Exception { Xid xid = newXID(); clientSession.start(xid, XAResource.TMNOFLAGS); clientSession.end(xid, XAResource.TMSUCCESS); clientSession.prepare(xid); String[] preparedTransactions = messagingService.getActiveMQServerControl().listPreparedTransactions(); Assert.assertEquals(1, preparedTransactions.length); System.out.println(preparedTransactions[0]); Assert.assertTrue(messagingService.getActiveMQServerControl().rollbackPreparedTransaction(XidImpl.toBase64String(xid))); Assert.assertEquals(1, messagingService.getActiveMQServerControl().listHeuristicRolledBackTransactions().length); clientSession.forget(xid); Assert.assertEquals(0, messagingService.getActiveMQServerControl().listHeuristicRolledBackTransactions().length); }
@Test public void testForgetHeuristicallyCommittedXID() throws Exception { Xid xid = newXID(); clientSession.start(xid, XAResource.TMNOFLAGS); clientSession.end(xid, XAResource.TMSUCCESS); clientSession.prepare(xid); String[] preparedTransactions = messagingService.getActiveMQServerControl().listPreparedTransactions(); Assert.assertEquals(1, preparedTransactions.length); System.out.println(preparedTransactions[0]); Assert.assertTrue(messagingService.getActiveMQServerControl().commitPreparedTransaction(XidImpl.toBase64String(xid))); Assert.assertEquals(1, messagingService.getActiveMQServerControl().listHeuristicCommittedTransactions().length); clientSession.forget(xid); Assert.assertEquals(0, messagingService.getActiveMQServerControl().listHeuristicCommittedTransactions().length); }
receiveLocator.close(); boolean success = serverControl.commitPreparedTransaction(XidImpl.toBase64String(xid)); success = serverControl.commitPreparedTransaction(XidImpl.toBase64String(xid));
jmxServer.commitPreparedTransaction(XidImpl.toBase64String(xid)); } else { jmxServer.rollbackPreparedTransaction(XidImpl.toBase64String(xid));
Assert.assertTrue(messagingService.getActiveMQServerControl().commitPreparedTransaction(XidImpl.toBase64String(xid))); Assert.assertEquals(1, messagingService.getActiveMQServerControl().listHeuristicCommittedTransactions().length); } else { Assert.assertTrue(messagingService.getActiveMQServerControl().rollbackPreparedTransaction(XidImpl.toBase64String(xid))); Assert.assertEquals(1, messagingService.getActiveMQServerControl().listHeuristicRolledBackTransactions().length);
jmxServer.commitPreparedTransaction(XidImpl.toBase64String(xid)); } else { jmxServer.rollbackPreparedTransaction(XidImpl.toBase64String(xid));
jmxServer.commitPreparedTransaction(XidImpl.toBase64String(xid)); } else { jmxServer.rollbackPreparedTransaction(XidImpl.toBase64String(xid));