if (isHelperInUse(xaResourceRecoveryHelper)) waitForScanState(ScanStates.IDLE); else if (getScanState().equals(ScanStates.BETWEEN_PASSES)) {
if (isHelperInUse(xaResourceRecoveryHelper)) waitForScanState(ScanStates.IDLE); else if (getScanState().equals(ScanStates.BETWEEN_PASSES)) {
if (isHelperInUse(xaResourceRecoveryHelper)) waitForScanState(ScanStates.IDLE); else if (getScanState().equals(ScanStates.BETWEEN_PASSES)) {
if (isHelperInUse(xaResourceRecoveryHelper)) waitForScanState(ScanStates.IDLE); else if (getScanState().equals(ScanStates.BETWEEN_PASSES)) {
public void removeXAResourceRecoveryHelper(XAResourceRecoveryHelper xaResourceRecoveryHelper) { synchronized (scanState) { if (getScanState().equals(ScanStates.FIRST_PASS)) { // the first pass collects xa resources from recovery helpers - wait for it to finish waitForScanState(ScanStates.BETWEEN_PASSES); if (getScanState().equals(ScanStates.BETWEEN_PASSES)) { /* * check whether any resources found in the first pass were provided by * the target xaResourceRecoveryHelper and if so then we need to wait for second pass * of the scanner to finish */ if (isHelperInUse(xaResourceRecoveryHelper)) waitForScanState(ScanStates.IDLE); } } else if (!getScanState().equals(ScanStates.IDLE)) { // scanner is in pass 2 or in between passes if (isHelperInUse(xaResourceRecoveryHelper)) waitForScanState(ScanStates.IDLE); } _xaResourceRecoveryHelpers.remove(xaResourceRecoveryHelper); } }