[jboss-svn-commits] JBL Code SVN: r24886 - in labs/jbosstm/trunk/XTS/WS-T/dev: src10/org/jboss/jbossts/xts10/recovery/participant/at and 4 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Jan 23 07:12:19 EST 2009


Author: adinn
Date: 2009-01-23 07:12:19 -0500 (Fri, 23 Jan 2009)
New Revision: 24886

Modified:
   labs/jbosstm/trunk/XTS/WS-T/dev/src10/com/arjuna/wst/messaging/engines/CoordinatorCompletionParticipantEngine.java
   labs/jbosstm/trunk/XTS/WS-T/dev/src10/com/arjuna/wst/messaging/engines/ParticipantCompletionParticipantEngine.java
   labs/jbosstm/trunk/XTS/WS-T/dev/src10/org/jboss/jbossts/xts10/recovery/participant/at/ATParticipantRecoveryRecord.java
   labs/jbosstm/trunk/XTS/WS-T/dev/src10/org/jboss/jbossts/xts10/recovery/participant/ba/BAParticipantRecoveryRecord.java
   labs/jbosstm/trunk/XTS/WS-T/dev/src11/com/arjuna/wst11/messaging/engines/CoordinatorCompletionParticipantEngine.java
   labs/jbosstm/trunk/XTS/WS-T/dev/src11/com/arjuna/wst11/messaging/engines/ParticipantCompletionParticipantEngine.java
   labs/jbosstm/trunk/XTS/WS-T/dev/src11/org/jboss/jbossts/xts11/recovery/participant/at/ATParticipantRecoveryRecord.java
   labs/jbosstm/trunk/XTS/WS-T/dev/src11/org/jboss/jbossts/xts11/recovery/participant/ba/BAParticipantRecoveryRecord.java
Log:
ensured participants reinitiate contact with the coordinator during recovery - fixes JBTM-478

Modified: labs/jbosstm/trunk/XTS/WS-T/dev/src10/com/arjuna/wst/messaging/engines/CoordinatorCompletionParticipantEngine.java
===================================================================
--- labs/jbosstm/trunk/XTS/WS-T/dev/src10/com/arjuna/wst/messaging/engines/CoordinatorCompletionParticipantEngine.java	2009-01-23 10:23:38 UTC (rev 24885)
+++ labs/jbosstm/trunk/XTS/WS-T/dev/src10/com/arjuna/wst/messaging/engines/CoordinatorCompletionParticipantEngine.java	2009-01-23 12:12:19 UTC (rev 24886)
@@ -436,6 +436,34 @@
     }
     
     /**
+     * Handle the recovery event.
+     *
+     * Active -> Active (invalid state)
+     * Canceling -> Canceling (invalid state)
+     * Completed -> Completed (resend completed)
+     * Closing -> Closing (invalid state)
+     * Compensating -> Compensating (invalid state)
+     * Faulting -> Ended
+     * Faulting-Active -> Ended
+     * Faulting-Compensating -> Ended
+     * Exiting -> Exiting (invalid state)
+     * Ended -> Ended (invalid state)
+     */
+    public void recovery()
+    {
+        final State current ;
+        synchronized(this)
+        {
+            current = state ;
+        }
+
+        if (current == State.STATE_COMPLETED)
+        {
+            sendCompleted();
+        }
+    }
+
+    /**
      * Handle the soap fault event.
      * @param soapFault The soap fault.
      * @param addressingContext The addressing context.
@@ -499,7 +527,7 @@
         }
         if (current == State.STATE_COMPLETING) {
             // ok we need to write the participant details to disk because it has just completed
-            BAParticipantRecoveryRecord recoveryRecord = new BAParticipantRecoveryRecord(id, participant, true, coordinator);
+            BAParticipantRecoveryRecord recoveryRecord = new BAParticipantRecoveryRecord(id, participant, false, coordinator);
 
             if (!XTSBARecoveryManager.getRecoveryManager().writeParticipantRecoveryRecord(recoveryRecord)) {
                 // hmm, could not write entry log warning
@@ -1089,7 +1117,7 @@
         if (current == State.STATE_COMPLETING)
         {
             // ok we need to write the participant details to disk because it has just completed
-            BAParticipantRecoveryRecord recoveryRecord = new BAParticipantRecoveryRecord(id, participant, true, coordinator);
+            BAParticipantRecoveryRecord recoveryRecord = new BAParticipantRecoveryRecord(id, participant, false, coordinator);
 
             if (!XTSBARecoveryManager.getRecoveryManager().writeParticipantRecoveryRecord(recoveryRecord)) {
                 // hmm, could not write entry log warning

Modified: labs/jbosstm/trunk/XTS/WS-T/dev/src10/com/arjuna/wst/messaging/engines/ParticipantCompletionParticipantEngine.java
===================================================================
--- labs/jbosstm/trunk/XTS/WS-T/dev/src10/com/arjuna/wst/messaging/engines/ParticipantCompletionParticipantEngine.java	2009-01-23 10:23:38 UTC (rev 24885)
+++ labs/jbosstm/trunk/XTS/WS-T/dev/src10/com/arjuna/wst/messaging/engines/ParticipantCompletionParticipantEngine.java	2009-01-23 12:12:19 UTC (rev 24886)
@@ -374,6 +374,34 @@
     }
     
     /**
+     * Handle the recovery event.
+     *
+     * Active -> Active (invalid state)
+     * Canceling -> Canceling (invalid state)
+     * Completed -> Completed (resend completed)
+     * Closing -> Closing (invalid state)
+     * Compensating -> Compensating (invalid state)
+     * Faulting -> Ended
+     * Faulting-Active -> Ended
+     * Faulting-Compensating -> Ended
+     * Exiting -> Exiting (invalid state)
+     * Ended -> Ended (invalid state)
+     */
+    public void recovery()
+    {
+        final State current ;
+        synchronized(this)
+        {
+            current = state ;
+        }
+
+        if (current == State.STATE_COMPLETED)
+        {
+            sendCompleted();
+        }
+    }
+
+    /**
      * Handle the soap fault event.
      * @param soapFault The soap fault.
      * @param addressingContext The addressing context.

Modified: labs/jbosstm/trunk/XTS/WS-T/dev/src10/org/jboss/jbossts/xts10/recovery/participant/at/ATParticipantRecoveryRecord.java
===================================================================
--- labs/jbosstm/trunk/XTS/WS-T/dev/src10/org/jboss/jbossts/xts10/recovery/participant/at/ATParticipantRecoveryRecord.java	2009-01-23 10:23:38 UTC (rev 24885)
+++ labs/jbosstm/trunk/XTS/WS-T/dev/src10/org/jboss/jbossts/xts10/recovery/participant/at/ATParticipantRecoveryRecord.java	2009-01-23 12:12:19 UTC (rev 24886)
@@ -78,6 +78,7 @@
     public void activate() {
         ParticipantEngine engine = new ParticipantEngine(participant, id, State.STATE_PREPARED_SUCCESS, endpoint, true);
         ParticipantProcessor.getProcessor().activateParticipant(engine, getId());
+        engine.recovery();
     }
 
     /**

Modified: labs/jbosstm/trunk/XTS/WS-T/dev/src10/org/jboss/jbossts/xts10/recovery/participant/ba/BAParticipantRecoveryRecord.java
===================================================================
--- labs/jbosstm/trunk/XTS/WS-T/dev/src10/org/jboss/jbossts/xts10/recovery/participant/ba/BAParticipantRecoveryRecord.java	2009-01-23 10:23:38 UTC (rev 24885)
+++ labs/jbosstm/trunk/XTS/WS-T/dev/src10/org/jboss/jbossts/xts10/recovery/participant/ba/BAParticipantRecoveryRecord.java	2009-01-23 12:12:19 UTC (rev 24886)
@@ -82,10 +82,12 @@
         if (isParticipantCompletion) {
             ParticipantCompletionParticipantEngine engine = new ParticipantCompletionParticipantEngine(id, endpoint, participant, State.STATE_COMPLETED, true);
             ParticipantCompletionParticipantProcessor.getProcessor().activateParticipant(engine, getId());
+            engine.recovery();
         } else {
             BusinessAgreementWithCoordinatorCompletionParticipant coordinatorCompletionParticipant = (BusinessAgreementWithCoordinatorCompletionParticipant) participant;
             CoordinatorCompletionParticipantEngine engine = new CoordinatorCompletionParticipantEngine(id, endpoint, coordinatorCompletionParticipant, State.STATE_COMPLETED, true);
             CoordinatorCompletionParticipantProcessor.getProcessor().activateParticipant(engine, getId());
+            engine.recovery();
         }
     }
 

Modified: labs/jbosstm/trunk/XTS/WS-T/dev/src11/com/arjuna/wst11/messaging/engines/CoordinatorCompletionParticipantEngine.java
===================================================================
--- labs/jbosstm/trunk/XTS/WS-T/dev/src11/com/arjuna/wst11/messaging/engines/CoordinatorCompletionParticipantEngine.java	2009-01-23 10:23:38 UTC (rev 24885)
+++ labs/jbosstm/trunk/XTS/WS-T/dev/src11/com/arjuna/wst11/messaging/engines/CoordinatorCompletionParticipantEngine.java	2009-01-23 12:12:19 UTC (rev 24886)
@@ -475,6 +475,35 @@
     }
 
     /**
+     * Handle the recovery event.
+     *
+     * Active -> Active (invalid state)
+     * Canceling -> Canceling (invalid state)
+     * Completed -> Completed (resend completed)
+     * Closing -> Closing (invalid state)
+     * Compensating -> Compensating (invalid state)
+     * Failing-Active -> Failing-Active (invalid state)
+     * Failing-Canceling -> Failing-Canceling (invalid state)
+     * Failing-Compensating -> Failing-Compensating (invalid state)
+     * NotCompleting -> NotCompleting (invalid state)
+     * Exiting -> Exiting (invalid state)
+     * Ended -> Ended (invalid state)
+     */
+    public void recovery()
+    {
+        final State current ;
+        synchronized(this)
+        {
+            current = state ;
+        }
+
+        if (current == State.STATE_COMPLETED)
+        {
+            sendCompleted();
+        }
+    }
+
+    /**
      * Handle the soap fault event.
      * @param soapFault The soap fault.
      * @param addressingProperties The addressing context.
@@ -541,7 +570,7 @@
 
         if (current == State.STATE_COMPLETING) {
             // ok we need to write the participant details to disk because it has just completed
-            BAParticipantRecoveryRecord recoveryRecord = new BAParticipantRecoveryRecord(id, participant, true, coordinator);
+            BAParticipantRecoveryRecord recoveryRecord = new BAParticipantRecoveryRecord(id, participant, false, coordinator);
 
             if (!XTSBARecoveryManager.getRecoveryManager().writeParticipantRecoveryRecord(recoveryRecord)) {
                 // hmm, could not write entry log warning
@@ -1222,7 +1251,7 @@
         if (current == State.STATE_COMPLETING)
         {
             // ok we need to write the participant details to disk because it has just completed
-            BAParticipantRecoveryRecord recoveryRecord = new BAParticipantRecoveryRecord(id, participant, true, coordinator);
+            BAParticipantRecoveryRecord recoveryRecord = new BAParticipantRecoveryRecord(id, participant, false, coordinator);
 
             if (!XTSBARecoveryManager.getRecoveryManager().writeParticipantRecoveryRecord(recoveryRecord)) {
                 // hmm, could not write entry log warning

Modified: labs/jbosstm/trunk/XTS/WS-T/dev/src11/com/arjuna/wst11/messaging/engines/ParticipantCompletionParticipantEngine.java
===================================================================
--- labs/jbosstm/trunk/XTS/WS-T/dev/src11/com/arjuna/wst11/messaging/engines/ParticipantCompletionParticipantEngine.java	2009-01-23 10:23:38 UTC (rev 24885)
+++ labs/jbosstm/trunk/XTS/WS-T/dev/src11/com/arjuna/wst11/messaging/engines/ParticipantCompletionParticipantEngine.java	2009-01-23 12:12:19 UTC (rev 24886)
@@ -402,6 +402,35 @@
     }
 
     /**
+     * Handle the recovery event.
+     *
+     * Active -> Active (invalid state)
+     * Canceling -> Canceling (invalid state)
+     * Completed -> Completed (resend completed)
+     * Closing -> Closing (invalid state)
+     * Compensating -> Compensating (invalid state)
+     * Failing-Active -> Failing-Active (invalid state)
+     * Failing-Canceling -> Failing-Canceling (invalid state)
+     * Failing-Compensating -> Failing-Compensating (invalid state)
+     * NotCompleting -> NotCompleting (invalid state)
+     * Exiting -> Exiting (invalid state)
+     * Ended -> Ended (invalid state)
+     */
+    public void recovery()
+    {
+        final State current ;
+        synchronized(this)
+        {
+            current = state ;
+        }
+
+        if (current == State.STATE_COMPLETED)
+        {
+            sendCompleted();
+        }
+    }
+
+    /**
      * Handle the soap fault event.
      * @param soapFault The soap fault.
      * @param addressingProperties The addressing context.

Modified: labs/jbosstm/trunk/XTS/WS-T/dev/src11/org/jboss/jbossts/xts11/recovery/participant/at/ATParticipantRecoveryRecord.java
===================================================================
--- labs/jbosstm/trunk/XTS/WS-T/dev/src11/org/jboss/jbossts/xts11/recovery/participant/at/ATParticipantRecoveryRecord.java	2009-01-23 10:23:38 UTC (rev 24885)
+++ labs/jbosstm/trunk/XTS/WS-T/dev/src11/org/jboss/jbossts/xts11/recovery/participant/at/ATParticipantRecoveryRecord.java	2009-01-23 12:12:19 UTC (rev 24886)
@@ -65,6 +65,7 @@
     public void activate() {
         ParticipantEngine engine = new ParticipantEngine(participant, id, State.STATE_PREPARED_SUCCESS, endpoint, true);
         ParticipantProcessor.getProcessor().activateParticipant(engine, getId());
+        engine.recovery();
     }
 
     /**

Modified: labs/jbosstm/trunk/XTS/WS-T/dev/src11/org/jboss/jbossts/xts11/recovery/participant/ba/BAParticipantRecoveryRecord.java
===================================================================
--- labs/jbosstm/trunk/XTS/WS-T/dev/src11/org/jboss/jbossts/xts11/recovery/participant/ba/BAParticipantRecoveryRecord.java	2009-01-23 10:23:38 UTC (rev 24885)
+++ labs/jbosstm/trunk/XTS/WS-T/dev/src11/org/jboss/jbossts/xts11/recovery/participant/ba/BAParticipantRecoveryRecord.java	2009-01-23 12:12:19 UTC (rev 24886)
@@ -69,10 +69,12 @@
         if (isParticipantCompletion) {
             ParticipantCompletionParticipantEngine engine = new ParticipantCompletionParticipantEngine(id, endpoint,  participant, State.STATE_COMPLETED, true);
             ParticipantCompletionParticipantProcessor.getProcessor().activateParticipant(engine, getId());
+            engine.recovery();
         } else {
             BusinessAgreementWithCoordinatorCompletionParticipant coordinatorCompletionParticipant = (BusinessAgreementWithCoordinatorCompletionParticipant) participant;
             CoordinatorCompletionParticipantEngine engine = new CoordinatorCompletionParticipantEngine(id, endpoint,  coordinatorCompletionParticipant, State.STATE_COMPLETED, true);
             CoordinatorCompletionParticipantProcessor.getProcessor().activateParticipant(engine, getId());
+            engine.recovery();
         }
     }
 




More information about the jboss-svn-commits mailing list