public void checkTransactionDisconnection(OperationID opid, ServerTransaction txn)
throws TransactionException {
XtnEntry xtnEntry = m_XtnTable.get(txn);
Logger logger = CacheManager.getCacheLogger();
if (logger.isLoggable(Level.FINER)) {
if (!(_engine.getSpaceImpl().isBackup() || opid == null)) {
logger.finer("DebugForTest:ThreadID:" + Thread.currentThread().getName() + "TransactionID= " + txn.id + " operationID={" + opid.toString() + "}");
}
}
if (xtnEntry == null || !xtnEntry.createdOnNonBackup() || opid == null || !xtnEntry.getXtnData().isOperationID(opid)) {
return;
}
TransactionException exception = new TransactionException("Transaction was disconnected due to communication fault: " +
txn.toString());
_engine.getLogger().log(Level.WARNING, "Transaction disconnection has been detected, Transaction will be aborted", exception);
try{
_engine.abort(txn.getTransactionManager(), txn, false, opid);
} catch (Exception e){
_engine.getLogger().log(Level.WARNING, "Failed to abort transaction "+txn.toString(), e);
}
addToPhantomGlobalXtns(txn);
throw exception;
}