@Override public Vote checkXid(Xid xid) { String nodeName = XATxConverter.getSubordinateNodeName(new XidImple(xid).getXID()); if (jtaLogger.logger.isDebugEnabled()) { jtaLogger.logger.debug("subordinate node name of " + xid + " is " + nodeName); } // It does have an XID if (nodeName != null) { if (transactionLog(xid, nodeName)) { // it's owned by a logged transaction which // will recover it top down in due course return Vote.LEAVE_ALONE; } else { return Vote.ROLLBACK; } } else { return Vote.ABSTAIN; } }
@Test public void testSubordinateJTAXAResourceOrphanFilter() throws HeuristicRollbackException, HeuristicMixedException, HeuristicCommitException, SystemException, RollbackException, XAException { XAResourceOrphanFilter orphanFilter = new SubordinateJTAXAResourceOrphanFilter(); XidImple xid = (XidImple) XATxConverter.getXid(Uid.nullUid(), false, XATxConverter.FORMAT_ID); XATxConverter.setSubordinateNodeName(xid.getXID(), TxControl.getXANodeName()); List<String> xaRecoveryNodes = jtaPropertyManager.getJTAEnvironmentBean().getXaRecoveryNodes(); try { jtaPropertyManager.getJTAEnvironmentBean().setXaRecoveryNodes(Arrays.asList("2")); assertEquals(XAResourceOrphanFilter.Vote.ABSTAIN, orphanFilter.checkXid(xid)); jtaPropertyManager.getJTAEnvironmentBean().setXaRecoveryNodes(Arrays.asList("1")); assertEquals(XAResourceOrphanFilter.Vote.ROLLBACK, orphanFilter.checkXid(xid)); } finally { jtaPropertyManager.getJTAEnvironmentBean().setXaRecoveryNodes(xaRecoveryNodes); } } }
@Override public Vote checkXid(Xid xid) { List<String> _xaRecoveryNodes = jtaPropertyManager.getJTAEnvironmentBean().getXaRecoveryNodes(); if(_xaRecoveryNodes == null || _xaRecoveryNodes.size() == 0) { jtaLogger.i18NLogger.info_recovery_noxanodes(); return Vote.ABSTAIN; } String nodeName = XATxConverter.getSubordinateNodeName(new XidImple(xid).getXID()); if (jtaLogger.logger.isDebugEnabled()) { jtaLogger.logger.debug("subordinate node name of " + xid + " is " + nodeName); } if (!_xaRecoveryNodes.contains(nodeName)) { // It either doesn't have a subordinate node name or isn't for this server return Vote.ABSTAIN; } // It does have an XID if (nodeName != null) { if (transactionLog(xid, nodeName)) { // it's owned by a logged transaction which // will recover it top down in due course return Vote.ABSTAIN; } else { return Vote.ROLLBACK; } } else { return Vote.ABSTAIN; } }
@Override public Vote checkXid(Xid xid) { List<String> _xaRecoveryNodes = jtaPropertyManager.getJTAEnvironmentBean().getXaRecoveryNodes(); if(_xaRecoveryNodes == null || _xaRecoveryNodes.size() == 0) { jtaLogger.i18NLogger.info_recovery_noxanodes(); return Vote.ABSTAIN; } String nodeName = XATxConverter.getSubordinateNodeName(new XidImple(xid).getXID()); if (jtaLogger.logger.isDebugEnabled()) { jtaLogger.logger.debug("subordinate node name of " + xid + " is " + nodeName); } if (!_xaRecoveryNodes.contains(nodeName)) { // It either doesn't have a subordinate node name or isn't for this server return Vote.ABSTAIN; } // It does have an XID if (nodeName != null) { if (transactionLog(xid, nodeName)) { // it's owned by a logged transaction which // will recover it top down in due course return Vote.ABSTAIN; } else { return Vote.ROLLBACK; } } else { return Vote.ABSTAIN; } }
@Override public Vote checkXid(Xid xid) { List<String> _xaRecoveryNodes = jtaPropertyManager.getJTAEnvironmentBean().getXaRecoveryNodes(); if(_xaRecoveryNodes == null || _xaRecoveryNodes.size() == 0) { jtaLogger.i18NLogger.info_recovery_noxanodes(); return Vote.ABSTAIN; } String nodeName = XATxConverter.getSubordinateNodeName(new XidImple(xid).getXID()); if (jtaLogger.logger.isDebugEnabled()) { jtaLogger.logger.debug("subordinate node name of " + xid + " is " + nodeName); } if (!_xaRecoveryNodes.contains(nodeName)) { // It either doesn't have a subordinate node name or isn't for this server return Vote.ABSTAIN; } // It does have an XID if (nodeName != null) { if (transactionLog(xid, nodeName)) { // it's owned by a logged transaction which // will recover it top down in due course return Vote.ABSTAIN; } else { return Vote.ROLLBACK; } } else { return Vote.ABSTAIN; } }
@Override public Vote checkXid(Xid xid) { List<String> _xaRecoveryNodes = jtaPropertyManager.getJTAEnvironmentBean().getXaRecoveryNodes(); if(_xaRecoveryNodes == null || _xaRecoveryNodes.size() == 0) { jtaLogger.i18NLogger.info_recovery_noxanodes(); return Vote.ABSTAIN; } String nodeName = XATxConverter.getSubordinateNodeName(new XidImple(xid).getXID()); if (jtaLogger.logger.isDebugEnabled()) { jtaLogger.logger.debug("subordinate node name of " + xid + " is " + nodeName); } if (!_xaRecoveryNodes.contains(nodeName)) { // It either doesn't have a subordinate node name or isn't for this server return Vote.ABSTAIN; } // It does have an XID if (nodeName != null) { if (transactionLog(xid, nodeName)) { // it's owned by a logged transaction which // will recover it top down in due course return Vote.ABSTAIN; } else { return Vote.ROLLBACK; } } else { return Vote.ABSTAIN; } }
@Override public Vote checkXid(Xid xid) { List<String> _xaRecoveryNodes = jtaPropertyManager.getJTAEnvironmentBean().getXaRecoveryNodes(); if(_xaRecoveryNodes == null || _xaRecoveryNodes.size() == 0) { jtaLogger.i18NLogger.info_recovery_noxanodes(); return Vote.ABSTAIN; } String nodeName = XATxConverter.getSubordinateNodeName(new XidImple(xid).getXID()); if (jtaLogger.logger.isDebugEnabled()) { jtaLogger.logger.debug("subordinate node name of " + xid + " is " + nodeName); } if (!_xaRecoveryNodes.contains(nodeName)) { // It either doesn't have a subordinate node name or isn't for this server return Vote.ABSTAIN; } // It does have an XID if (nodeName != null) { if (transactionLog(xid, nodeName)) { // it's owned by a logged transaction which // will recover it top down in due course return Vote.ABSTAIN; } else { return Vote.ROLLBACK; } } else { return Vote.ABSTAIN; } }