if (DEBUG_CLUSTER_TXN) {
logger.log(logger.INFO, Globals.getBrokerResources().getString(
BrokerResources.I_RECEIVED_TXN_INFO, from.toString(), ii.toString()));
}
TransactionList translist = Globals.getTransactionList();
Long tid = ii.getTransactionID();
TransactionUID tuid = new TransactionUID(tid.longValue());
int s = ii.getTransactionState();
if (!ii.isOwner() || (ii.isOwner() && from.equals(selfAddress))) {
TransactionState mystate = translist.retrieveState(tuid, true);
if (mystate != null && mystate.getState() == TransactionState.COMMITTED) {
if (translist.getClusterTransactionBroker(tuid, from) != null) {
if (s == TransactionState.COMMITTED ||
(!ii.isOwner() && s == TransactionState.NULL)) {
if (DEBUG_CLUSTER_TXN) {
logger.log(logger.INFO, "Update broker "+from+ " for committed cluster transaction "+tuid);
}
try {
translist.completeClusterTransactionBrokerState(tuid,
TransactionState.COMMITTED, from, true);
if (!ii.isOwner() && s != TransactionState.NULL) {
sendClusterTransactionInfo(tuid, from, null);
}
} catch (Exception e) {
logger.logStack(logger.WARNING,
"Unable to update transaction broker state for "+from+", TUID="+tuid, e);
if (!ii.isOwner()) {
return;
}
}
}
} else {
if (DEBUG_CLUSTER_TXN) {
logger.log(logger.INFO, "Broker "+from+" is not a transaction broker for TUID="+tuid);
}
}
if (!ii.isOwner()) {
return;
}
}
}
if (s == TransactionState.NULL && !ii.isOwner()) return;
if (translist.getRemoteTransactionState(tuid) == null && !ii.isOwner()) return;
if (ii.isOwner() &&
translist.getRemoteTransactionState(tuid) == null) {
try {
if (ii.getWaitfor() != null &&
ii.isWaitedfor((selfAddress))) {
sendRemoteTransactionInfo(tuid, from, null, true);