Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * JBoss, Home of Professional Open Source
   * Copyright 2010, Red Hat, Inc. and/or its affiliates,
   * and individual contributors as indicated by the @author tags.
   * See the copyright.txt in the distribution for a
   * full listing of individual contributors.
   * This copyrighted material is made available to anyone wishing to use,
   * modify, copy, or redistribute it subject to the terms and conditions
   * of the GNU Lesser General Public License, v. 2.1.
  * This program is distributed in the hope that it will be useful, but WITHOUT A
  * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
  * PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details.
  * You should have received a copy of the GNU Lesser General Public License,
  * v.2.1 along with this distribution; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
  * MA  02110-1301, USA.
  *
  * (C) 2010,
  * @author JBoss, by Red Hat.
  */
 package com.arjuna.ats.internal.jta.recovery.arjunacore;
 
 
 
An XAResourceOrphanFilter which uses detects orphaned subordinate XA Resources.
 
 	public static final int RECOVER_ALL_NODES = 0;
 
 	public Vote checkXid(Xid xid) {
 		String nodeName = XATxConverter.getSubordinateNodeName(new XidImple(xid).getXID());
 
 		if (..isDebugEnabled()) {
 			..debug("subordinate node name of " + xid + " is " + nodeName);
 		}
 
 		// It does have an XID
 		if (nodeName != null) {
 			if (transactionLog(xidnodeName)) {
 				// it's owned by a logged transaction which
 				// will recover it top down in due course
 				return .;
 			} else {
 				return .;
 			}
 		} else {
 			return .;
 		}
 	}

Is there a log file for this transaction?

Parameters:
recoveredResourceXid the transaction to check.
Returns:
booleantrue if there is a log file, false if there isn't.
 
 	private boolean transactionLog(Xid recoveredResourceXidString recoveredResourceNodeName) {
 
 		XidImple theXid = new XidImple(recoveredResourceXid);
 		Uid u = theXid.getTransactionUid();
 
 		if (..isDebugEnabled()) {
 			..debug("Checking whether Xid " + theXid + " exists in ObjectStore.");
 		}
 
 		if (!u.equals(Uid.nullUid())) {
 			RecoveryStore recoveryStore = StoreManager.getRecoveryStore();
 			String transactionType = SubordinateAtomicAction.getType();
 
 			if (..isDebugEnabled()) {
 				..debug("Looking for " + u + " and " + transactionType);
 			}
 
 			InputObjectState states = new InputObjectState();
 			try {
 				if (recoveryStore.allObjUids(transactionTypestates) && (states.notempty())) {
 					Stack values = new Stack();
					boolean finished = false;
					do {
						Uid uid = null;
						try {
							uid = UidHelper.unpackFrom(states);
catch (IOException ex) {
							finished = true;
						}
						if (uid.notEquals(Uid.nullUid())) {
							XidImple transactionXid = (XidImpletx.getXid();
							if (transactionXid.isSameTransaction(recoveredResourceXid)
									&& recoveredResourceNodeName.equals(XATxConverter.getSubordinateNodeName(transactionXid.getXID()))) {
								if (..isDebugEnabled()) {
									..debug("Found record for " + theXid);
								}
								return true;
							}
else
							finished = true;
while (!finished);
					if (..isDebugEnabled()) {
						..debug("No record found for " + theXid);
					}
else {
					..info_recovery_notaxid(XAHelper.xidToString(recoveredResourceXid));
				}
catch (ObjectStoreException e) {
				// TODO Auto-generated catch block
catch (IOException e) {
				// TODO Auto-generated catch block
			}
		}
		return false;
	}
New to GrepCode? Check out our FAQ X