/** * Order by absoluteTimeout first, then by Uid. * This is required so that the set maintained by the TransactionReaper * is in timeout order for efficient processing. * * @param other the ReaperElement to compare * @return 0 if equal, 1 if this is greater, -1 if this is smaller */ public int compareTo(ReaperElement other) { if(this == other) { return 0; } if(_absoluteTimeoutMills == other._absoluteTimeoutMills) { if (_bias == other._bias) { if(_control.get_uid().equals(other._control.get_uid())) { return 0; } else if (_control.get_uid().greaterThan(other._control.get_uid())) { return 1; } else { return -1; } } else { return (_bias > other._bias) ? 1 : -1; } } else { return (_absoluteTimeoutMills > other._absoluteTimeoutMills) ? 1 : -1; } }
tsLogger.i18NLogger.warn_coordinator_TransactionReaper_18(reaperElement._control.get_uid(), reaperElement.statusName()); reinsertElement(reaperElement, _cancelWaitPeriod); tsLogger.logger.trace("Reaper scheduling TX for cancellation " + reaperElement._control.get_uid()); reinsertElement(reaperElement, _cancelWaitPeriod); tsLogger.logger.trace("Reaper deferring interrupt for TX scheduled for cancel " + reaperElement._control.get_uid()); reinsertElement(reaperElement, _cancelFailWaitPeriod); tsLogger.logger.trace("TransactionReaper::check interrupting cancel in progress for " + reaperElement._control.get_uid()); tsLogger.logger.trace("Reaper " + Thread.currentThread() + " got a zombie " + reaperElement._worker + " (zombie count now " + _zombieCount + ") cancelling " + reaperElement._control.get_uid()); tsLogger.i18NLogger.error_coordinator_TransactionReaper_5(Integer.toString(_zombieCount)); tsLogger.i18NLogger.warn_coordinator_TransactionReaper_6(reaperElement._worker.toString(), reaperElement._control.get_uid()); if (reaperElement._control.preventCommit()) { tsLogger.i18NLogger.warn_coordinator_TransactionReaper_10(reaperElement._control.get_uid()); tsLogger.i18NLogger.warn_coordinator_TransactionReaper_11(reaperElement._control.get_uid()); tsLogger.i18NLogger.warn_coordinator_TransactionReaper_12(reaperElement._control.get_uid(), e1);
tsLogger.logger.trace("Reaper Worker " + Thread.currentThread() + " attempting to cancel " + e._control.get_uid()); if (e._control.running()) { if (e._control.cancel() == ActionStatus.ABORTED) { cancelled = true; tsLogger.i18NLogger.warn_coordinator_TransactionReaper_13(Thread.currentThread().toString(), e._control.get_uid(), Integer.toString(_zombieCount)); tsLogger.i18NLogger.warn_coordinator_TransactionReaper_7(Thread.currentThread().toString(), e._control.get_uid()); } else if (e._control.running()) { if (exception != null) { tsLogger.i18NLogger.warn_coordinator_TransactionReaper_9(Thread.currentThread().toString(), e._control.get_uid(), exception); } else { tsLogger.i18NLogger.warn_coordinator_TransactionReaper_8(Thread.currentThread().toString(), e._control.get_uid()); if (e._control.preventCommit()) { tsLogger.i18NLogger.warn_coordinator_TransactionReaper_14(Thread.currentThread().toString(), e._control.get_uid()); tsLogger.i18NLogger.warn_coordinator_TransactionReaper_15(Thread.currentThread().toString(), e._control.get_uid()); tsLogger.i18NLogger.warn_coordinator_TransactionReaper_16(Thread.currentThread().toString(), e._control.get_uid(), e1);
new Object[] {reaperElement._control.get_uid(), reaperElement.statusName()}); DebugLevel.FUNCTIONS, VisibilityLevel.VIS_PUBLIC, FacilityCode.FAC_ATOMIC_ACTION, "Reaper scheduling TX for cancellation " + reaperElement._control.get_uid()); DebugLevel.FUNCTIONS, VisibilityLevel.VIS_PUBLIC, FacilityCode.FAC_ATOMIC_ACTION, "Reaper deferring interrupt for TX scheduled for cancel " + reaperElement._control.get_uid()); FacilityCode.FAC_ATOMIC_ACTION, "com.arjuna.ats.arjuna.coordinator.TransactionReaper_4", new Object[]{reaperElement._control.get_uid()}); DebugLevel.FUNCTIONS, VisibilityLevel.VIS_PUBLIC, FacilityCode.FAC_ATOMIC_ACTION, "Reaper " + Thread.currentThread() + " got a zombie " + reaperElement._worker + " (zombie count now " + _zombieCount + ") cancelling " + reaperElement._control.get_uid()); "com.arjuna.ats.arjuna.coordinator.TransactionReaper_6", new Object[]{reaperElement._worker, reaperElement._control.get_uid()}); if (reaperElement._control.preventCommit()) { tsLogger.arjLoggerI18N.warn( "com.arjuna.ats.arjuna.coordinator.TransactionReaper_10", new Object[]{reaperElement._control.get_uid()}); tsLogger.arjLoggerI18N.warn(
FacilityCode.FAC_ATOMIC_ACTION, "Reaper Worker " + Thread.currentThread() + " attempting to cancel " + e._control.get_uid()); if (e._control.running()) { if (e._control.cancel() == ActionStatus.ABORTED) { cancelled = true; "com.arjuna.ats.arjuna.coordinator.TransactionReaper_13", new Object[]{Thread.currentThread(), e._control.get_uid(), new Integer(_zombieCount)}); "com.arjuna.ats.arjuna.coordinator.TransactionReaper_7", new Object[]{Thread.currentThread(), e._control.get_uid()}); } else if (e._control.running()) { if (exception != null) { if (tsLogger.arjLoggerI18N.isWarnEnabled()) { "com.arjuna.ats.arjuna.coordinator.TransactionReaper_9", new Object[]{Thread.currentThread(), e._control.get_uid()}, exception); "com.arjuna.ats.arjuna.coordinator.TransactionReaper_8", new Object[]{Thread.currentThread(), e._control.get_uid()});
private final void notifyListeners(Reapable element, boolean rollback) { // notify listeners. Ignore errors. for (int i = 0; i < _listeners.size(); i++) { try { if (rollback) _listeners.get(i).rolledBack(element.get_uid()); else _listeners.get(i).markedRollbackOnly(element.get_uid()); } catch (final Throwable ex) { // ignore } } }
tsLogger.i18NLogger.warn_coordinator_TransactionReaper_18(reaperElement._control.get_uid(), reaperElement.statusName()); reinsertElement(reaperElement, _cancelWaitPeriod); tsLogger.logger.trace("Reaper scheduling TX for cancellation " + reaperElement._control.get_uid()); reinsertElement(reaperElement, _cancelWaitPeriod); tsLogger.logger.trace("Reaper deferring interrupt for TX scheduled for cancel " + reaperElement._control.get_uid()); sb.append("\n"); tsLogger.i18NLogger.wedged_reaperelement(sb.toString()); tsLogger.logger.trace("TransactionReaper::check interrupting cancel in progress for " + reaperElement._control.get_uid()); tsLogger.logger.trace("Reaper " + Thread.currentThread() + " got a zombie " + reaperElement._worker + " (zombie count now " + _zombieCount + ") cancelling " + reaperElement._control.get_uid()); tsLogger.i18NLogger.warn_coordinator_TransactionReaper_6(reaperElement._worker.toString(), reaperElement._control.get_uid()); if (reaperElement._control.preventCommit()) { tsLogger.i18NLogger.warn_coordinator_TransactionReaper_10(reaperElement._control.get_uid()); tsLogger.i18NLogger.warn_coordinator_TransactionReaper_11(reaperElement._control.get_uid()); tsLogger.i18NLogger.warn_coordinator_TransactionReaper_12(reaperElement._control.get_uid(), e1);
tsLogger.logger.trace("Reaper Worker " + Thread.currentThread() + " attempting to cancel " + e._control.get_uid()); if (e._control.running()) { if (e._control.cancel() == ActionStatus.ABORTED) { cancelled = true; tsLogger.i18NLogger.warn_coordinator_TransactionReaper_13(Thread.currentThread().toString(), e._control.get_uid(), Integer.toString(_zombieCount)); tsLogger.i18NLogger.warn_coordinator_TransactionReaper_7(Thread.currentThread().toString(), e._control.get_uid()); } else if (e._control.running()) { if (exception != null) { tsLogger.i18NLogger.warn_coordinator_TransactionReaper_9(Thread.currentThread().toString(), e._control.get_uid(), exception); } else { tsLogger.i18NLogger.warn_coordinator_TransactionReaper_8(Thread.currentThread().toString(), e._control.get_uid()); if (e._control.preventCommit()) { tsLogger.i18NLogger.warn_coordinator_TransactionReaper_14(Thread.currentThread().toString(), e._control.get_uid()); tsLogger.i18NLogger.warn_coordinator_TransactionReaper_15(Thread.currentThread().toString(), e._control.get_uid()); tsLogger.i18NLogger.warn_coordinator_TransactionReaper_16(Thread.currentThread().toString(), e._control.get_uid(), e1);
private final void notifyListeners(Reapable element, boolean rollback) { // notify listeners. Ignore errors. for (int i = 0; i < _listeners.size(); i++) { try { if (rollback) _listeners.get(i).rolledBack(element.get_uid()); else _listeners.get(i).markedRollbackOnly(element.get_uid()); } catch (final Throwable ex) { // ignore } } }
tsLogger.i18NLogger.warn_coordinator_TransactionReaper_18(reaperElement._control.get_uid(), reaperElement.statusName()); reinsertElement(reaperElement, _cancelWaitPeriod); tsLogger.logger.trace("Reaper scheduling TX for cancellation " + reaperElement._control.get_uid()); reinsertElement(reaperElement, _cancelWaitPeriod); tsLogger.logger.trace("Reaper deferring interrupt for TX scheduled for cancel " + reaperElement._control.get_uid()); sb.append("\n"); tsLogger.i18NLogger.wedged_reaperelement(sb.toString()); tsLogger.logger.trace("TransactionReaper::check interrupting cancel in progress for " + reaperElement._control.get_uid()); tsLogger.logger.trace("Reaper " + Thread.currentThread() + " got a zombie " + reaperElement._worker + " (zombie count now " + _zombieCount + ") cancelling " + reaperElement._control.get_uid()); tsLogger.i18NLogger.warn_coordinator_TransactionReaper_6(reaperElement._worker.toString(), reaperElement._control.get_uid()); if (reaperElement._control.preventCommit()) { tsLogger.i18NLogger.warn_coordinator_TransactionReaper_10(reaperElement._control.get_uid()); tsLogger.i18NLogger.warn_coordinator_TransactionReaper_11(reaperElement._control.get_uid()); tsLogger.i18NLogger.warn_coordinator_TransactionReaper_12(reaperElement._control.get_uid(), e1);
tsLogger.logger.trace("Reaper Worker " + Thread.currentThread() + " attempting to cancel " + e._control.get_uid()); if (e._control.running()) { if (e._control.cancel() == ActionStatus.ABORTED) { cancelled = true; tsLogger.i18NLogger.warn_coordinator_TransactionReaper_13(Thread.currentThread().toString(), e._control.get_uid(), Integer.toString(_zombieCount)); tsLogger.i18NLogger.warn_coordinator_TransactionReaper_7(Thread.currentThread().toString(), e._control.get_uid()); } else if (e._control.running()) { if (exception != null) { tsLogger.i18NLogger.warn_coordinator_TransactionReaper_9(Thread.currentThread().toString(), e._control.get_uid(), exception); } else { tsLogger.i18NLogger.warn_coordinator_TransactionReaper_8(Thread.currentThread().toString(), e._control.get_uid()); if (e._control.preventCommit()) { tsLogger.i18NLogger.warn_coordinator_TransactionReaper_14(Thread.currentThread().toString(), e._control.get_uid()); tsLogger.i18NLogger.warn_coordinator_TransactionReaper_15(Thread.currentThread().toString(), e._control.get_uid()); tsLogger.i18NLogger.warn_coordinator_TransactionReaper_16(Thread.currentThread().toString(), e._control.get_uid(), e1);
/** * Order by absoluteTimeout first, then by Uid. * This is required so that the set maintained by the TransactionReaper * is in timeout order for efficient processing. * * @param other the ReaperElement to compare * @return 0 if equal, 1 if this is greater, -1 if this is smaller */ public int compareTo(ReaperElement other) { if(this == other) { return 0; } if(_absoluteTimeoutMills == other._absoluteTimeoutMills) { if (_bias == other._bias) { if(_control.get_uid().equals(other._control.get_uid())) { return 0; } else if (_control.get_uid().greaterThan(other._control.get_uid())) { return 1; } else { return -1; } } else { return (_bias > other._bias) ? 1 : -1; } } else { return (_absoluteTimeoutMills > other._absoluteTimeoutMills) ? 1 : -1; } }
private final void notifyListeners(Reapable element, boolean rollback) { // notify listeners. Ignore errors. for (int i = 0; i < _listeners.size(); i++) { try { if (rollback) _listeners.get(i).rolledBack(element.get_uid()); else _listeners.get(i).markedRollbackOnly(element.get_uid()); } catch (final Throwable ex) { // ignore } } }
tsLogger.i18NLogger.warn_coordinator_TransactionReaper_18(reaperElement._control.get_uid(), reaperElement.statusName()); reinsertElement(reaperElement, _cancelWaitPeriod); tsLogger.logger.trace("Reaper scheduling TX for cancellation " + reaperElement._control.get_uid()); reinsertElement(reaperElement, _cancelWaitPeriod); tsLogger.logger.trace("Reaper deferring interrupt for TX scheduled for cancel " + reaperElement._control.get_uid()); sb.append("\n"); tsLogger.i18NLogger.wedged_reaperelement(sb.toString()); tsLogger.logger.trace("TransactionReaper::check interrupting cancel in progress for " + reaperElement._control.get_uid()); tsLogger.logger.trace("Reaper " + Thread.currentThread() + " got a zombie " + reaperElement._worker + " (zombie count now " + _zombieCount + ") cancelling " + reaperElement._control.get_uid()); tsLogger.i18NLogger.warn_coordinator_TransactionReaper_6(reaperElement._worker.toString(), reaperElement._control.get_uid()); if (reaperElement._control.preventCommit()) { tsLogger.i18NLogger.warn_coordinator_TransactionReaper_10(reaperElement._control.get_uid()); tsLogger.i18NLogger.warn_coordinator_TransactionReaper_11(reaperElement._control.get_uid()); tsLogger.i18NLogger.warn_coordinator_TransactionReaper_12(reaperElement._control.get_uid(), e1);
tsLogger.logger.trace("Reaper Worker " + Thread.currentThread() + " attempting to cancel " + e._control.get_uid()); if (e._control.running()) { if (e._control.cancel() == ActionStatus.ABORTED) { cancelled = true; tsLogger.i18NLogger.warn_coordinator_TransactionReaper_13(Thread.currentThread().toString(), e._control.get_uid(), Integer.toString(_zombieCount)); tsLogger.i18NLogger.warn_coordinator_TransactionReaper_7(Thread.currentThread().toString(), e._control.get_uid()); } else if (e._control.running()) { if (exception != null) { tsLogger.i18NLogger.warn_coordinator_TransactionReaper_9(Thread.currentThread().toString(), e._control.get_uid(), exception); } else { tsLogger.i18NLogger.warn_coordinator_TransactionReaper_8(Thread.currentThread().toString(), e._control.get_uid()); if (e._control.preventCommit()) { tsLogger.i18NLogger.warn_coordinator_TransactionReaper_14(Thread.currentThread().toString(), e._control.get_uid()); tsLogger.i18NLogger.warn_coordinator_TransactionReaper_15(Thread.currentThread().toString(), e._control.get_uid()); tsLogger.i18NLogger.warn_coordinator_TransactionReaper_16(Thread.currentThread().toString(), e._control.get_uid(), e1);
/** * Order by absoluteTimeout first, then by Uid. * This is required so that the set maintained by the TransactionReaper * is in timeout order for efficient processing. * * @param other the ReaperElement to compare * @return 0 if equal, 1 if this is greater, -1 if this is smaller */ public int compareTo(ReaperElement other) { if(this == other) { return 0; } if(_absoluteTimeoutMills == other._absoluteTimeoutMills) { if (_bias == other._bias) { if(_control.get_uid().equals(other._control.get_uid())) { return 0; } else if (_control.get_uid().greaterThan(other._control.get_uid())) { return 1; } else { return -1; } } else { return (_bias > other._bias) ? 1 : -1; } } else { return (_absoluteTimeoutMills > other._absoluteTimeoutMills) ? 1 : -1; } }