Skip to content

Commit

Permalink
JBTM-3273 -> Implemented code review comments
Browse files Browse the repository at this point in the history
  • Loading branch information
mayankkunwar committed Apr 16, 2020
1 parent 46366bd commit 824af49
Show file tree
Hide file tree
Showing 7 changed files with 41 additions and 49 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
import java.util.Set;
import java.util.Vector;
import java.util.concurrent.CopyOnWriteArraySet;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;

import javax.transaction.xa.XAException;
Expand All @@ -59,7 +60,6 @@
import com.arjuna.ats.internal.arjuna.common.UidHelper;
import com.arjuna.ats.internal.jta.resources.arjunacore.XAResourceRecord;
import com.arjuna.ats.jta.common.jtaPropertyManager;
import com.arjuna.ats.jta.logging.RecoveryRequired;
import com.arjuna.ats.jta.logging.jtaLogger;
import com.arjuna.ats.jta.recovery.SerializableXAResourceDeserializer;
import com.arjuna.ats.jta.recovery.XARecoveryResource;
Expand All @@ -78,6 +78,16 @@

public class XARecoveryModule implements ExtendedRecoveryModule
{
private static AtomicBoolean recoveryProblems = new AtomicBoolean(false);

public static boolean isRecoveryProblems() {
return recoveryProblems.get();
}

public static void setRecoveryProblems(final boolean recoveryProblems) {
XARecoveryModule.recoveryProblems.set(recoveryProblems);
}

public XARecoveryModule()
{
this(new com.arjuna.ats.internal.jta.recovery.arjunacore.XARecoveryResourceManagerImple(),
Expand All @@ -92,7 +102,7 @@ public Set<String> getContactedJndiNames() {

@Override
public boolean isPeriodicWorkSuccessful() {
return !RecoveryRequired.isRecoveryProblems();
return !XARecoveryModule.isRecoveryProblems();
}

public void addXAResourceRecoveryHelper(XAResourceRecoveryHelper xaResourceRecoveryHelper) {
Expand Down Expand Up @@ -190,7 +200,7 @@ private synchronized void periodicWorkFirstPass(ScanStates endState)
}

contactedJndiNames.clear();
RecoveryRequired.setRecoveryProblems(false);
XARecoveryModule.setRecoveryProblems(false);

_uids = new InputObjectState();

Expand All @@ -202,18 +212,18 @@ private synchronized void periodicWorkFirstPass(ScanStates endState)
{
if (!_recoveryStore.allObjUids(_recoveryManagerClass.type(), _uids))
{
RecoveryRequired.setRecoveryProblems(true);
XARecoveryModule.setRecoveryProblems(true);
jtaLogger.i18NLogger.warn_recovery_alluids();
}
}
catch (ObjectStoreException e)
{
RecoveryRequired.setRecoveryProblems(true);
XARecoveryModule.setRecoveryProblems(true);
jtaLogger.i18NLogger.warn_recovery_objstoreerror(e);
}
catch (Exception e)
{
RecoveryRequired.setRecoveryProblems(true);
XARecoveryModule.setRecoveryProblems(true);
jtaLogger.i18NLogger.warn_recovery_periodicfirstpass(_logName+".periodicWorkFirstPass", e);
}
// JBTM-1354 JCA needs to be able to recover XAResources associated with a subordinate transaction so we have to do at least
Expand All @@ -229,7 +239,7 @@ private synchronized void periodicWorkFirstPass(ScanStates endState)
try {
xaRecoveryFirstPass(xaResource);
} catch (Exception ex) {
RecoveryRequired.setRecoveryProblems(true);
XARecoveryModule.setRecoveryProblems(true);
jtaLogger.i18NLogger.warn_recovery_getxaresource(ex);
}
}
Expand All @@ -239,7 +249,7 @@ private synchronized void periodicWorkFirstPass(ScanStates endState)
try {
xaResource.recover(XAResource.TMENDRSCAN);
} catch (Exception ex) {
RecoveryRequired.setRecoveryProblems(true);
XARecoveryModule.setRecoveryProblems(true);
jtaLogger.i18NLogger.warn_recovery_getxaresource(ex);
}
}
Expand Down Expand Up @@ -282,7 +292,7 @@ public synchronized void periodicWorkSecondPass()
}
catch (Exception e)
{
RecoveryRequired.setRecoveryProblems(true);
XARecoveryModule.setRecoveryProblems(true);
jtaLogger.i18NLogger.warn_recovery_periodicsecondpass(_logName+".periodicWorkSecondPass", e);
}

Expand Down Expand Up @@ -380,7 +390,7 @@ protected XARecoveryModule(XARecoveryResourceManager recoveryClass, String logNa
_logName = logName;
_recoveryManagerClass = recoveryClass;
if(_recoveryManagerClass == null) {
RecoveryRequired.setRecoveryProblems(true);
XARecoveryModule.setRecoveryProblems(true);
jtaLogger.i18NLogger.warn_recovery_constfail();
}

Expand Down Expand Up @@ -440,7 +450,7 @@ record = _recoveryManagerClass.getResource(theUid);
}
else
{
RecoveryRequired.setRecoveryProblems(true);
XARecoveryModule.setRecoveryProblems(true);
jtaLogger.i18NLogger.warn_recovery_recoveryfailed(theUid, XARecoveryResourceHelper.stringForm(recoveryStatus));
}
}
Expand Down Expand Up @@ -478,7 +488,7 @@ record = _recoveryManagerClass.getResource(theUid);
{
problem = true;

RecoveryRequired.setRecoveryProblems(true);
XARecoveryModule.setRecoveryProblems(true);
jtaLogger.i18NLogger.warn_recovery_recoveryerror(e);
}

Expand All @@ -495,7 +505,7 @@ record = _recoveryManagerClass.getResource(theUid);

if (record.getXid() == null)
{
RecoveryRequired.setRecoveryProblems(true);
XARecoveryModule.setRecoveryProblems(true);
jtaLogger.i18NLogger.warn_recovery_cannotadd();
}
else
Expand All @@ -512,7 +522,7 @@ record = _recoveryManagerClass.getResource(theUid);
}
catch (Throwable e)
{
RecoveryRequired.setRecoveryProblems(true);
XARecoveryModule.setRecoveryProblems(true);
jtaLogger.i18NLogger.warn_recovery_unexpectedrecoveryerror(e);
}
}
Expand All @@ -530,7 +540,7 @@ private void bottomUpRecovery() {
try {
xaRecoverySecondPass(xaResource);
} catch (Exception ex) {
RecoveryRequired.setRecoveryProblems(true);
XARecoveryModule.setRecoveryProblems(true);
jtaLogger.i18NLogger.warn_recovery_getxaresource(ex);
}
}
Expand Down Expand Up @@ -595,7 +605,7 @@ private final List<XAResource> resourceInitiatedRecovery()
}
catch (Exception ex)
{
RecoveryRequired.setRecoveryProblems(true);
XARecoveryModule.setRecoveryProblems(true);
jtaLogger.i18NLogger.warn_recovery_getxaresource(ex);
}
}
Expand Down Expand Up @@ -626,7 +636,7 @@ private List<XAResource> resourceInitiatedRecoveryForRecoveryHelpers()
}
catch (Exception ex)
{
RecoveryRequired.setRecoveryProblems(true);
XARecoveryModule.setRecoveryProblems(true);
jtaLogger.i18NLogger.warn_recovery_getxaresource(ex);
}
}
Expand Down Expand Up @@ -682,7 +692,7 @@ private final void xaRecoveryFirstPass(XAResource xares)
}
catch (XAException e)
{
RecoveryRequired.setRecoveryProblems(true);
XARecoveryModule.setRecoveryProblems(true);
jtaLogger.i18NLogger.warn_recovery_xarecovery1(_logName+".xaRecovery", XAHelper.printXAErrorCode(e), e);

try
Expand Down Expand Up @@ -817,7 +827,7 @@ private void xaRecoverySecondPass(XAResource xares) {

if (recoveryStatus != XARecoveryResource.RECOVERED_OK)
{
RecoveryRequired.setRecoveryProblems(true);
XARecoveryModule.setRecoveryProblems(true);
jtaLogger.i18NLogger.warn_recovery_failedtorecover(_logName+".xaRecovery", XARecoveryResourceHelper.stringForm(recoveryStatus));
}

Expand All @@ -832,7 +842,7 @@ private void xaRecoverySecondPass(XAResource xares) {
}
catch (Exception e)
{
RecoveryRequired.setRecoveryProblems(true);
XARecoveryModule.setRecoveryProblems(true);
jtaLogger.i18NLogger.warn_recovery_forgetfailed(_logName+".xaRecovery", e);
}
}
Expand All @@ -843,7 +853,7 @@ private void xaRecoverySecondPass(XAResource xares) {
}
catch (Exception e)
{
RecoveryRequired.setRecoveryProblems(true);
XARecoveryModule.setRecoveryProblems(true);
jtaLogger.i18NLogger.warn_recovery_generalrecoveryerror(_logName + ".xaRecovery", e);
}

Expand All @@ -854,7 +864,7 @@ private void xaRecoverySecondPass(XAResource xares) {
}
catch (XAException e)
{
RecoveryRequired.setRecoveryProblems(true);
XARecoveryModule.setRecoveryProblems(true);
jtaLogger.i18NLogger.warn_recovery_xarecovery1(_logName+".xaRecovery", XAHelper.printXAErrorCode(e), e);
}
}
Expand Down Expand Up @@ -911,7 +921,7 @@ else if(vote == XAResourceOrphanFilter.Vote.ROLLBACK)
}
else
{
RecoveryRequired.setRecoveryProblems(true);
XARecoveryModule.setRecoveryProblems(true);
jtaLogger.i18NLogger.warn_recovery_xarecovery1(_logName+".xaRecovery", XAHelper.printXAErrorCode(e1), e1);
}

Expand All @@ -933,7 +943,7 @@ else if(vote == XAResourceOrphanFilter.Vote.ROLLBACK)
}
catch (Exception e2)
{
RecoveryRequired.setRecoveryProblems(true);
XARecoveryModule.setRecoveryProblems(true);
jtaLogger.i18NLogger.warn_recovery_xarecovery2(_logName+".xaRecovery", e2);
}
return false;
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,9 @@
/**
* i18n log messages for the jta module.
*
* For jtaI18NLogger, if any method, prefixed with <b>"warn_recovery"</b> is called then,
* <b>XARecoveryModule</b> class variable i.e. "recoveryProblem" should be set as <b>true</b>.
*
* @author Jonathan Halliday (jonathan.halliday@redhat.com) 2010-06
*/
@MessageLogger(projectCode = "ARJUNA")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,6 @@ public class jtaLogger
{
public static final Logger logger = Logger.getLogger("com.arjuna.ats.jta");

/**
* For jtaI18NLogger, if any method, prefixed with <b>"warn_recovery"</b> is called then,
* <b>RecoverRequired</b> class variable i.e. "recoveryProblem" should be set as <b>true</b>.
* */
public static final jtaI18NLogger i18NLogger = Logger.getMessageLogger(jtaI18NLogger.class, "com.arjuna.ats.jta");

private jtaI18NLogger jtaI18NLoggerImpl;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@
import com.arjuna.ats.internal.jta.recovery.arjunacore.XARecoveryModule;
import com.arjuna.ats.jta.common.jtaPropertyManager;
import com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple;
import com.arjuna.ats.jta.logging.RecoveryRequired;
import com.arjuna.ats.jta.logging.jtaLogger;
import org.junit.Test;

Expand Down Expand Up @@ -81,7 +80,7 @@ public void testRecoveryMonitorWithFailure() throws Exception {
// check the output of the scan
assertEquals("ERROR", RecoveryMonitor.getResponse());
assertEquals("ERROR", RecoveryMonitor.getSystemOutput());
assertTrue(RecoveryRequired.isRecoveryProblems());
assertTrue(XARecoveryModule.isRecoveryProblems());
} finally {
manager.terminate();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@
import com.arjuna.ats.arjuna.tools.RecoveryMonitor;
import com.arjuna.ats.internal.jta.recovery.arjunacore.XARecoveryModule;
import com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple;
import com.arjuna.ats.jta.logging.RecoveryRequired;
import com.arjuna.ats.jta.logging.jtaLogger;
import org.junit.Test;

Expand Down Expand Up @@ -123,7 +122,7 @@ public void start(Xid xid, int i) throws XAException {
// check the output of the scan
assertEquals("DONE", RecoveryMonitor.getResponse());
assertEquals("DONE", RecoveryMonitor.getSystemOutput());
assertFalse(RecoveryRequired.isRecoveryProblems());
assertFalse(XARecoveryModule.isRecoveryProblems());
} finally {
manager.terminate();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@
import com.arjuna.ats.internal.jta.recovery.arjunacore.XARecoveryModule;
import com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple;
import com.arjuna.ats.jta.common.jtaPropertyManager;
import com.arjuna.ats.jta.logging.RecoveryRequired;
import com.arjuna.ats.jta.logging.jtaLogger;
import org.junit.AfterClass;
import org.junit.BeforeClass;
Expand Down Expand Up @@ -92,7 +91,7 @@ public void testRecoveryMonitorWithFailure() throws Exception {

manager.scan();

assertTrue(RecoveryRequired.isRecoveryProblems());
assertTrue(XARecoveryModule.isRecoveryProblems());
}

@Test
Expand Down Expand Up @@ -157,7 +156,7 @@ public void start(Xid xid, int i) throws XAException {

manager.scan();

assertFalse(RecoveryRequired.isRecoveryProblems());
assertFalse(XARecoveryModule.isRecoveryProblems());
}

@Test
Expand Down

0 comments on commit 824af49

Please sign in to comment.