[jboss-svn-commits] JBL Code SVN: r22846 - in labs/jbosstm/workspace/adinn/orchestration: src/org/jboss/jbossts/orchestration/agent and 5 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Sep 17 09:24:00 EDT 2008
Author: adinn
Date: 2008-09-17 09:24:00 -0400 (Wed, 17 Sep 2008)
New Revision: 22846
Modified:
labs/jbosstm/workspace/adinn/orchestration/build.xml
labs/jbosstm/workspace/adinn/orchestration/src/org/jboss/jbossts/orchestration/agent/Transformer.java
labs/jbosstm/workspace/adinn/orchestration/src/org/jboss/jbossts/orchestration/rule/Event.java
labs/jbosstm/workspace/adinn/orchestration/src/org/jboss/jbossts/orchestration/rule/Rule.java
labs/jbosstm/workspace/adinn/orchestration/src/org/jboss/jbossts/orchestration/rule/binding/Binding.java
labs/jbosstm/workspace/adinn/orchestration/src/org/jboss/jbossts/orchestration/rule/expression/ComparisonExpression.java
labs/jbosstm/workspace/adinn/orchestration/src/org/jboss/jbossts/orchestration/rule/expression/ExpressionHelper.java
labs/jbosstm/workspace/adinn/orchestration/src/org/jboss/jbossts/orchestration/rule/expression/FieldExpression.java
labs/jbosstm/workspace/adinn/orchestration/src/org/jboss/jbossts/orchestration/rule/expression/Variable.java
labs/jbosstm/workspace/adinn/orchestration/src/org/jboss/jbossts/orchestration/rule/type/Type.java
labs/jbosstm/workspace/adinn/orchestration/src/org/jboss/jbossts/test/HandlerClass.java
Log:
added extra rules to test scenario to trace transaction replay and patched type checker/interpreter to fix errors uncovered by those rules
Modified: labs/jbosstm/workspace/adinn/orchestration/build.xml
===================================================================
--- labs/jbosstm/workspace/adinn/orchestration/build.xml 2008-09-17 11:53:42 UTC (rev 22845)
+++ labs/jbosstm/workspace/adinn/orchestration/build.xml 2008-09-17 13:24:00 UTC (rev 22846)
@@ -58,12 +58,14 @@
load XTS code -->
<property name="xts.lib.dir" value="${xts.home}/lib"/>
+ <property name="xts.sar.dir" value="${xts.home}/sar"/>
<property name="jboss.lib.dir" value="${jboss.home}/lib"/>
<property name="jboss.client.dir" value="${jboss.home}/client"/>
<property name="jboss.server.lib.dir" value="${jboss.home}/server/default/lib"/>
<property name="jboss.server.deploy.dir" value="${jboss.home}/server/default/deploy"/>
<property name="xts.lib.jars" value="ws-c10.jar wscf10.jar wscf.jar ws-t10.jar ws-t.jar wstx11.jar wsas.jar ws-c11.jar wscf11.jar ws-c.jar ws-t11.jar wstx10.jar wstx.jar"/>
+ <property name="xts.sar.jars" value="jbossxts.sar"/>
<property name="jboss.lib.jars" value="stax-api.jar"/>
<property name="jboss.client.jars" value="jbossall-client.jar"/>
<property name="jboss.server.lib.jars" value="jbossjta.jar jbossws-common.jar jbossws-framework.jar jbossws-spi.jar jbossws-native-saaj.jar jbossws-native-jaxws.jar jbossws-native-jaxws-ext.jar jbossws-native-jaxrpc.jar jboss-javaee.jar"/>
@@ -172,6 +174,7 @@
<fileset dir="${ext.lib.dir}" includes="${ext.antlr.jars}"/>
<!-- xts, jta and jboss as jars-->
<fileset dir="${xts.lib.dir}" includes="${xts.lib.jars}"/>
+ <fileset dir="${xts.sar.dir}" includes="${xts.sar.jars}"/>
<fileset dir="${jboss.lib.dir}" includes="${jboss.lib.jars}"/>
<fileset dir="${jboss.client.dir}" includes="${jboss.client.jars}"/>
<fileset dir="${jboss.server.lib.dir}" includes="${jboss.server.lib.jars}"/>
@@ -196,6 +199,7 @@
<fileset dir="${ext.lib.dir}" includes="${ext.antlr.jars}"/>
<!-- xts, jta and jboss as jars-->
<fileset dir="${xts.lib.dir}" includes="${xts.lib.jars}"/>
+ <fileset dir="${xts.sar.dir}" includes="${xts.sar.jars}"/>
<fileset dir="${jboss.lib.dir}" includes="${jboss.lib.jars}"/>
<fileset dir="${jboss.client.dir}" includes="${jboss.client.jars}"/>
<fileset dir="${jboss.server.lib.dir}" includes="${jboss.server.lib.jars}"/>
@@ -222,6 +226,7 @@
<fileset dir="${ext.lib.dir}" includes="${ext.antlr.jars}"/>
<!-- xts, jta and jboss as jars-->
<fileset dir="${xts.lib.dir}" includes="${xts.lib.jars}"/>
+ <fileset dir="${xts.sar.dir}" includes="${xts.sar.jars}"/>
<fileset dir="${jboss.lib.dir}" includes="${jboss.lib.jars}"/>
<fileset dir="${jboss.client.dir}" includes="${jboss.client.jars}"/>
<fileset dir="${jboss.server.lib.dir}" includes="${jboss.server.lib.jars}"/>
@@ -244,6 +249,7 @@
<fileset dir="${ext.lib.dir}" includes="${ext.antlr.jars}"/>
<!-- xts, jta and jboss as jars-->
<fileset dir="${xts.lib.dir}" includes="${xts.lib.jars}"/>
+ <fileset dir="${xts.sar.dir}" includes="${xts.sar.jars}"/>
<fileset dir="${jboss.lib.dir}" includes="${jboss.lib.jars}"/>
<fileset dir="${jboss.client.dir}" includes="${jboss.client.jars}"/>
<fileset dir="${jboss.server.lib.dir}" includes="${jboss.server.lib.jars}"/>
@@ -267,6 +273,7 @@
<fileset dir="${ext.lib.dir}" includes="${ext.antlr.jars}"/>
<!-- xts, jta and jboss as jars-->
<fileset dir="${xts.lib.dir}" includes="${xts.lib.jars}"/>
+ <fileset dir="${xts.sar.dir}" includes="${xts.sar.jars}"/>
<fileset dir="${jboss.lib.dir}" includes="${jboss.lib.jars}"/>
<fileset dir="${jboss.client.dir}" includes="${jboss.client.jars}"/>
<fileset dir="${jboss.server.lib.dir}" includes="${jboss.server.lib.jars}"/>
@@ -288,6 +295,7 @@
<fileset dir="${ext.lib.dir}" includes="${ext.antlr.jars}"/>
<!-- xts, jta and jboss as jars-->
<fileset dir="${xts.lib.dir}" includes="${xts.lib.jars}"/>
+ <fileset dir="${xts.sar.dir}" includes="${xts.sar.jars}"/>
<fileset dir="${jboss.lib.dir}" includes="${jboss.lib.jars}"/>
<fileset dir="${jboss.client.dir}" includes="${jboss.client.jars}"/>
<fileset dir="${jboss.server.lib.dir}" includes="${jboss.server.lib.jars}"/>
@@ -322,6 +330,7 @@
<fileset dir="${ext.lib.dir}" includes="${ext.antlr.jars}"/>
<!-- xts, jta and jboss as jars-->
<fileset dir="${xts.lib.dir}" includes="${xts.lib.jars}"/>
+ <fileset dir="${xts.sar.dir}" includes="${xts.sar.jars}"/>
<fileset dir="${jboss.lib.dir}" includes="${jboss.lib.jars}"/>
<fileset dir="${jboss.client.dir}" includes="${jboss.client.jars}"/>
<fileset dir="${jboss.server.lib.dir}" includes="${jboss.server.lib.jars}"/>
@@ -339,6 +348,7 @@
<fileset dir="${ext.lib.dir}" includes="${ext.antlr.jars}"/>
<!-- xts, jta and jboss as jars-->
<fileset dir="${xts.lib.dir}" includes="${xts.lib.jars}"/>
+ <fileset dir="${xts.sar.dir}" includes="${xts.sar.jars}"/>
<fileset dir="${jboss.lib.dir}" includes="${jboss.lib.jars}"/>
<fileset dir="${jboss.client.dir}" includes="${jboss.client.jars}"/>
<fileset dir="${jboss.server.lib.dir}" includes="${jboss.server.lib.jars}"/>
Modified: labs/jbosstm/workspace/adinn/orchestration/src/org/jboss/jbossts/orchestration/agent/Transformer.java
===================================================================
--- labs/jbosstm/workspace/adinn/orchestration/src/org/jboss/jbossts/orchestration/agent/Transformer.java 2008-09-17 11:53:42 UTC (rev 22845)
+++ labs/jbosstm/workspace/adinn/orchestration/src/org/jboss/jbossts/orchestration/agent/Transformer.java 2008-09-17 13:24:00 UTC (rev 22846)
@@ -48,7 +48,7 @@
EventHandler eventHandler = method.getAnnotation(EventHandler.class);
if (eventHandler != null) {
String target = eventHandler.targetClass();
- if (isTransformable(target)) {
+ if (isTransformable(target) && !isOrchestrationClass(target)) {
List<Annotation> clazzes = targetToHandlerClassMap.get(target);
if (clazzes == null) {
clazzes = new ArrayList<Annotation>();
@@ -282,7 +282,7 @@
*/
private boolean isTransformable(String className)
{
- return (className.startsWith("com.arjuna."));
+ return (className.startsWith("com.arjuna.") || className.startsWith("org.jboss."));
}
/**
* the instrumentation interface to the JVM
Modified: labs/jbosstm/workspace/adinn/orchestration/src/org/jboss/jbossts/orchestration/rule/Event.java
===================================================================
--- labs/jbosstm/workspace/adinn/orchestration/src/org/jboss/jbossts/orchestration/rule/Event.java 2008-09-17 11:53:42 UTC (rev 22845)
+++ labs/jbosstm/workspace/adinn/orchestration/src/org/jboss/jbossts/orchestration/rule/Event.java 2008-09-17 13:24:00 UTC (rev 22846)
@@ -179,7 +179,11 @@
String message = "Event.createBindings : rebinding disallowed for variable " + token.getText() + " @ " + token.getLine() + "." + token.getCharPositionInLine();
throw new TypeException(message);
}
-
+ // if the binding type is undefined and the expression type is defined propagate the
+ // expression type to the binding
+ if (binding.getType() == Type.UNDEFINED && expr.getType() != Type.UNDEFINED) {
+ binding.setType(expr.getType());
+ }
binding.setValue(expr);
bindings.append(binding);
}
Modified: labs/jbosstm/workspace/adinn/orchestration/src/org/jboss/jbossts/orchestration/rule/Rule.java
===================================================================
--- labs/jbosstm/workspace/adinn/orchestration/src/org/jboss/jbossts/orchestration/rule/Rule.java 2008-09-17 11:53:42 UTC (rev 22845)
+++ labs/jbosstm/workspace/adinn/orchestration/src/org/jboss/jbossts/orchestration/rule/Rule.java 2008-09-17 13:24:00 UTC (rev 22846)
@@ -418,7 +418,7 @@
*/
public boolean debug(String text)
{
- System.out.println("rule " + rule.getName() + " : " + text);
+ System.out.println("rule.debug{" + rule.getName() + "} : " + text);
return true;
}
@@ -692,7 +692,7 @@
protected void execute0()
throws ExecuteException
{
- System.out.println(rule.getName() + " execute0");
+ // System.out.println(rule.getName() + " execute0");
executeEvent();
if (executeCondition()) {
executeAction();
@@ -712,21 +712,21 @@
private void executeEvent()
throws ExecuteException
{
- System.out.println(rule.getName() + " executeEvent");
+ // System.out.println(rule.getName() + " executeEvent");
rule.getEvent().interpret(this);
}
private boolean executeCondition()
throws ExecuteException
{
- System.out.println(rule.getName() + " executeCondition");
+ // System.out.println(rule.getName() + " executeCondition");
return rule.getCondition().interpret(this);
}
private void executeAction()
throws ExecuteException
{
- System.out.println(rule.getName() + " executeAction");
+ // System.out.println(rule.getName() + " executeAction");
rule.getAction().interpret(this);
}
Modified: labs/jbosstm/workspace/adinn/orchestration/src/org/jboss/jbossts/orchestration/rule/binding/Binding.java
===================================================================
--- labs/jbosstm/workspace/adinn/orchestration/src/org/jboss/jbossts/orchestration/rule/binding/Binding.java 2008-09-17 11:53:42 UTC (rev 22845)
+++ labs/jbosstm/workspace/adinn/orchestration/src/org/jboss/jbossts/orchestration/rule/binding/Binding.java 2008-09-17 13:24:00 UTC (rev 22846)
@@ -15,7 +15,7 @@
public Binding(String name)
{
- this(name, null, null);
+ this(name, Type.UNDEFINED, null);
}
public Binding(String name, Type type)
@@ -26,7 +26,7 @@
public Binding(String name, Type type, Expression value)
{
this.name = name;
- this.type = type;
+ this.type = (type != null ? type : Type.UNDEFINED);
this.value = value;
if (name.equals("-1")) {
index = -1;
@@ -78,6 +78,10 @@
return type;
}
+ public void setType(Type type)
+ {
+ }
+
public boolean isHelper()
{
return index == -1;
Modified: labs/jbosstm/workspace/adinn/orchestration/src/org/jboss/jbossts/orchestration/rule/expression/ComparisonExpression.java
===================================================================
--- labs/jbosstm/workspace/adinn/orchestration/src/org/jboss/jbossts/orchestration/rule/expression/ComparisonExpression.java 2008-09-17 11:53:42 UTC (rev 22845)
+++ labs/jbosstm/workspace/adinn/orchestration/src/org/jboss/jbossts/orchestration/rule/expression/ComparisonExpression.java 2008-09-17 13:24:00 UTC (rev 22846)
@@ -16,12 +16,14 @@
public ComparisonExpression(int oper, Token token, Expression left, Expression right)
{
super(oper, token, left, right);
+ comparisonType = Type.UNDEFINED;
}
public Type typeCheck(Bindings bindings, TypeGroup typegroup, Type expected) throws TypeException {
// TODO allow comparison of non-numeric values
Type type1 = getOperand(0).typeCheck(bindings, typegroup, Type.N);
Type type2 = getOperand(1).typeCheck(bindings, typegroup, Type.N);
+ comparisonType = Type.promote(type1, type2);
type = Type.Z;
if (Type.dereference(expected).isDefined() && !expected.isAssignableFrom(type)) {
throw new TypeException("ComparisonExpression.typeCheck : invalid expected result type " + expected.getName() + getPos());
@@ -38,7 +40,7 @@
Number value2 = (Number)getOperand(1).interpret(helper);
// type is the result of promoting one or other or both of the operands
// and they should be converted to this type before doing the compare operation
- if (type == type.B || type == type.S || type == type.I) {
+ if (comparisonType == type.B || comparisonType == type.S || comparisonType == type.I) {
int i1 = value1.intValue();
int i2 = value2.intValue();
boolean result;
@@ -67,7 +69,7 @@
break;
}
return result;
- } else if (type == type.J) {
+ } else if (comparisonType == type.J) {
long l1 = value1.longValue();
long l2 = value2.longValue();
boolean result;
@@ -96,7 +98,7 @@
break;
}
return result;
- } else if (type == type.F) {
+ } else if (comparisonType == type.F) {
float f1 = value1.floatValue();
float f2 = value2.floatValue();
boolean result;
@@ -125,7 +127,7 @@
break;
}
return result;
- } else if (type == type.D) {
+ } else if (comparisonType == type.D) {
double d1 = value1.doubleValue();
double d2 = value2.doubleValue();
boolean result;
@@ -154,7 +156,7 @@
break;
}
return result;
- } else { // (type == type.C)
+ } else { // (comparisonType == type.C)
char c1 = (char)value1.intValue();
char c2 = (char)value2.intValue();
boolean result;
@@ -190,4 +192,5 @@
throw new ExecuteException("ComparisonExpression.interpret : unexpected exception for operation " + token + getPos() + " in rule " + helper.getName(), e);
}
}
+ private Type comparisonType;
}
\ No newline at end of file
Modified: labs/jbosstm/workspace/adinn/orchestration/src/org/jboss/jbossts/orchestration/rule/expression/ExpressionHelper.java
===================================================================
--- labs/jbosstm/workspace/adinn/orchestration/src/org/jboss/jbossts/orchestration/rule/expression/ExpressionHelper.java 2008-09-17 11:53:42 UTC (rev 22845)
+++ labs/jbosstm/workspace/adinn/orchestration/src/org/jboss/jbossts/orchestration/rule/expression/ExpressionHelper.java 2008-09-17 13:24:00 UTC (rev 22846)
@@ -324,7 +324,7 @@
if (type == Type.STRING) {
// must be doing String concatenation
operand1 = createExpression(bindings, child1, Type.STRING);
- operand2 = createExpression(bindings, child2, Type.STRING);
+ operand2 = createExpression(bindings, child2, Type.UNDEFINED);
expr = new StringPlusExpression(token, operand1, operand2);
} else if (type.isNumeric()) {
// must be doing arithmetic
@@ -340,7 +340,7 @@
int convertedOper = OperExpression.convertOper(oper);
expr = new ArithmeticExpression(convertedOper, token, operand1, operand2);
} else if (operand1.getType() == Type.STRING) {
- operand2 = createExpression(bindings, child2, Type.STRING);
+ operand2 = createExpression(bindings, child2, Type.UNDEFINED);
expr = new StringPlusExpression(token, operand1, operand2);
} else {
operand2 = createExpression(bindings, child2, Type.UNDEFINED);
Modified: labs/jbosstm/workspace/adinn/orchestration/src/org/jboss/jbossts/orchestration/rule/expression/FieldExpression.java
===================================================================
--- labs/jbosstm/workspace/adinn/orchestration/src/org/jboss/jbossts/orchestration/rule/expression/FieldExpression.java 2008-09-17 11:53:42 UTC (rev 22845)
+++ labs/jbosstm/workspace/adinn/orchestration/src/org/jboss/jbossts/orchestration/rule/expression/FieldExpression.java 2008-09-17 13:24:00 UTC (rev 22846)
@@ -50,13 +50,6 @@
return false;
}
- // use the binding type to type ref
-
- if (ownerType[0].isUndefined()) {
- Type bindingType = binding.getType();
- ownerType[0] = bindingType;
- }
-
return true;
}
@@ -64,7 +57,10 @@
// check the owner type is defined and then start searching for
// the types of each field referenced from it
- ownerType[0] = Type.dereference(ownerType[0]);
+ Binding binding = bindings.lookup(ref);
+ Type bindingType = binding.getType();
+ ownerType[0] = Type.dereference(bindingType);
+
if (ownerType[0].isUndefined()) {
throw new TypeException("FieldExpresssion.typeCheck : unbound instance " + ref + getPos());
}
Modified: labs/jbosstm/workspace/adinn/orchestration/src/org/jboss/jbossts/orchestration/rule/expression/Variable.java
===================================================================
--- labs/jbosstm/workspace/adinn/orchestration/src/org/jboss/jbossts/orchestration/rule/expression/Variable.java 2008-09-17 11:53:42 UTC (rev 22845)
+++ labs/jbosstm/workspace/adinn/orchestration/src/org/jboss/jbossts/orchestration/rule/expression/Variable.java 2008-09-17 13:24:00 UTC (rev 22846)
@@ -43,34 +43,23 @@
Binding binding = bindings.lookup(name);
if (binding == null) {
- System.err.println("VarExpresssion.bind : unbound variable " + name + getPos());
+ System.err.println("Variable.bind : unbound variable " + name + getPos());
return false;
}
- // if this type is undefined then adopt the type of the binding so that this
- // variable gets typed whenever the binding does otherwise ensure the types are
- // compatible
+ // adopt the binding type
- type = Type.dereference(type);
-
- if (type.isUndefined()) {
- this.type = binding.getType();
- } else {
- Type bindingType = binding.getType();
+ this.type = binding.getType();
- if (!bindingType.isAssignableFrom(this.type)) {
- System.err.println("VarExpresssion.bind : type " + this.type.getName() + " of variable " + name + " conflicts with bound type " + bindingType.getName() + getPos());
- return false;
- }
- }
-
return true;
}
public Type typeCheck(Bindings bindings, TypeGroup typegroup, Type expected) throws TypeException {
// type must be defined by now or we are in trouble
- type = Type.dereference(type);
+ Binding binding = bindings.lookup(name);
+ type = Type.dereference(binding.getType());
+
if (type.isUndefined()) {
throw new TypeException("Variable.typeCheck : unable to derive type for variable " + name + getPos());
}
Modified: labs/jbosstm/workspace/adinn/orchestration/src/org/jboss/jbossts/orchestration/rule/type/Type.java
===================================================================
--- labs/jbosstm/workspace/adinn/orchestration/src/org/jboss/jbossts/orchestration/rule/type/Type.java 2008-09-17 11:53:42 UTC (rev 22845)
+++ labs/jbosstm/workspace/adinn/orchestration/src/org/jboss/jbossts/orchestration/rule/type/Type.java 2008-09-17 13:24:00 UTC (rev 22846)
@@ -436,7 +436,7 @@
{
this.typeName = typeName;
- if (clazz == null && (flags & F_PRIMITIVE) == 0) {
+ if (clazz == null) {
flags |= F_UNKNOWN;
}
@@ -694,20 +694,20 @@
// unknown type marker
final public static int F_UNKNOWN = 0x1000;
// primitive type marker
- final public static int F_PRIMITIVE = 0x2000;
+ final public static int F_PRIMITIVE = 0x2000;
// string type marker
final public static int F_STRING = 0x4000;
// we need to cope with array types
- final public static Type Z = new Type("boolean", null, F_BOOLEAN|F_PRIMITIVE);
- final public static Type B = new Type("byte", null, F_INTEGRAL|F_PRIMITIVE);
- final public static Type S = new Type("short", null, F_INTEGRAL|F_PRIMITIVE);
- final public static Type C = new Type("char", null, F_INTEGRAL|F_PRIMITIVE);
- final public static Type I = new Type("int", null, F_INTEGRAL|F_PRIMITIVE);
- final public static Type J = new Type("long", null, F_INTEGRAL|F_PRIMITIVE);
- final public static Type F = new Type("float", null, F_FLOATING|F_PRIMITIVE);
- final public static Type D = new Type("double", null, F_FLOATING|F_PRIMITIVE);
+ final public static Type Z = new Type("boolean", boolean.class, F_BOOLEAN|F_PRIMITIVE);
+ final public static Type B = new Type("byte", byte.class, F_INTEGRAL|F_PRIMITIVE);
+ final public static Type S = new Type("short", short.class, F_INTEGRAL|F_PRIMITIVE);
+ final public static Type C = new Type("char", char.class, F_INTEGRAL|F_PRIMITIVE);
+ final public static Type I = new Type("int", int.class, F_INTEGRAL|F_PRIMITIVE);
+ final public static Type J = new Type("long", long.class, F_INTEGRAL|F_PRIMITIVE);
+ final public static Type F = new Type("float", float.class, F_FLOATING|F_PRIMITIVE);
+ final public static Type D = new Type("double", double.class, F_FLOATING|F_PRIMITIVE);
// pseudo type representing an undefined numeric primitive type
final public static Type N = new Type("", null, F_UNKNOWN|F_NUMERIC|F_PRIMITIVE);
Modified: labs/jbosstm/workspace/adinn/orchestration/src/org/jboss/jbossts/test/HandlerClass.java
===================================================================
--- labs/jbosstm/workspace/adinn/orchestration/src/org/jboss/jbossts/test/HandlerClass.java 2008-09-17 11:53:42 UTC (rev 22845)
+++ labs/jbosstm/workspace/adinn/orchestration/src/org/jboss/jbossts/test/HandlerClass.java 2008-09-17 13:24:00 UTC (rev 22846)
@@ -54,7 +54,7 @@
"identifier:String = engine.getId()",
condition = "recovered",
action = "debug(\"adding countdown for \" + identifier),\n" +
- "addCountDown(identifier, 2)"
+ "addCountDown(identifier, 1)"
) public static void handleNewEngine()
{
// activates a counter identified by a recovered engine's identifier when the engine is recreated
@@ -80,4 +80,35 @@
// kills the current thread when a committed message is received for an engine whose identifier identifies
// an active counter
}
+ @EventHandler(
+ targetClass="org.jboss.jbossts.xts.recovery.RecoverACCoordinator",
+ targetMethod="replayPhase2",
+ targetLine = 76,
+ event = "coordinator = $0,\n" +
+ "cid : CoordinatorId = coordinator.identifier(),\n" +
+ "PREPARED : int = 5,\n" +
+ "COMMITTING : int = 6,\n" +
+ "status : int = coordinator.status()",
+ condition = "(status == ActionStatus.PREPARED)\n" +
+ "OR" +
+ "(status == ActionStatus.COMMITTING)\n",
+ action = "debug(\"replaying commit for prepared transaction \" + cid)"
+ ) public static void handleReplayPhase2()
+ {
+ // traces replay of a prepared transaction
+ }
+ @EventHandler(
+ targetClass="org.jboss.jbossts.xts.recovery.RecoverACCoordinator",
+ targetMethod="replayPhase2",
+ targetLine = 76,
+ event = "coordinator = $0,\n" +
+ "cid : CoordinatorId = coordinator.identifier(),\n" +
+ "COMMITTED : int = 7,\n" +
+ "status : int = coordinator.status()",
+ condition = "status == ActionStatus.COMMITTED",
+ action = "debug(\"replaying commit for heuristic committed transaction \" + cid)"
+ ) public static void handleHeuristicCommittedReplayPhase2()
+ {
+ // traces replay of a heuristic committed transaction
+ }
}
More information about the jboss-svn-commits
mailing list