[jboss-cvs] JBossAS SVN: r68927 - in branches/Branch_4_2/cluster/src/main/org/jboss: invocation/jrmp/interfaces and 1 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Sun Jan 13 17:20:00 EST 2008
Author: galder.zamarreno at jboss.com
Date: 2008-01-13 17:20:00 -0500 (Sun, 13 Jan 2008)
New Revision: 68927
Added:
branches/Branch_4_2/cluster/src/main/org/jboss/ha/framework/interfaces/TransactionSticky.java
branches/Branch_4_2/cluster/src/main/org/jboss/ha/framework/interfaces/TransactionStickyFirstAvailable.java
branches/Branch_4_2/cluster/src/main/org/jboss/ha/framework/interfaces/TransactionStickyFirstAvailableIdenticalAllProxies.java
branches/Branch_4_2/cluster/src/main/org/jboss/ha/framework/interfaces/TransactionStickyRandomRobin.java
branches/Branch_4_2/cluster/src/main/org/jboss/ha/framework/interfaces/TransactionStickyRoundRobin.java
Modified:
branches/Branch_4_2/cluster/src/main/org/jboss/invocation/jrmp/interfaces/JRMPInvokerProxyHA.java
branches/Branch_4_2/cluster/src/main/org/jboss/invocation/unified/interfaces/UnifiedInvokerHAProxy.java
Log:
[JBAS-4455] Transaction sticky load balance policies have been created for each of the default existing ones. JRMP and Unified invoker proxy ha classes now contain the logic to put/get sticky target from the transaction failover authorisation map.
Added: branches/Branch_4_2/cluster/src/main/org/jboss/ha/framework/interfaces/TransactionSticky.java
===================================================================
--- branches/Branch_4_2/cluster/src/main/org/jboss/ha/framework/interfaces/TransactionSticky.java (rev 0)
+++ branches/Branch_4_2/cluster/src/main/org/jboss/ha/framework/interfaces/TransactionSticky.java 2008-01-13 22:20:00 UTC (rev 68927)
@@ -0,0 +1,112 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2007, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ha.framework.interfaces;
+
+import org.jboss.invocation.Invocation;
+import org.jboss.logging.Logger;
+
+/**
+ * Root transaction sticky load balance policy class that checks whether there's
+ * a sticky target associated with the current invocation and based on that
+ * returns the associated target or delegates to the given load balance policy
+ * to choose a new target if there's no target associated with the invocation.
+ *
+ * @author <a href="mailto:galder.zamarreno at jboss.com">Galder Zamarreno</a>
+ */
+public class TransactionSticky implements LoadBalancePolicy
+{
+ /** The serialVersionUID */
+ private static final long serialVersionUID = -8750524198817324850L;
+
+ private static final Logger log = Logger.getLogger(TransactionSticky.class);
+
+ private transient boolean trace;
+
+ private final LoadBalancePolicy delegateLoadBalancePolicy;
+
+ public TransactionSticky(LoadBalancePolicy delegate)
+ {
+ delegateLoadBalancePolicy = delegate;
+
+ if (trace)
+ {
+ log.trace("transaction sticky load balance policy delegates to: " + delegateLoadBalancePolicy);
+ }
+ }
+
+ /**
+ * This method returns either, a new target based on RoundRobin policy, or
+ * if there's a ongoing transaction, the target associated with that
+ * transaction.
+ *
+ * @param familyClusterInfo cluster family information
+ * @param invocation current invocation
+ * @return a new target or the target associated with the transaction
+ */
+ public Object chooseTarget(FamilyClusterInfo clusterFamily, Invocation routingDecision)
+ {
+ trace = log.isTraceEnabled();
+ Object txStickyTarget = routingDecision.getTransientValue("TX_STICKY_TARGET");
+ if (txStickyTarget != null && clusterFamily.getTargets().contains(txStickyTarget))
+ {
+ if (trace)
+ {
+ log.trace("transaction bound target exists: " + txStickyTarget);
+ }
+
+ return txStickyTarget;
+ }
+
+ return chooseNewTarget(clusterFamily, routingDecision);
+ }
+
+ public void init(HARMIClient father)
+ {
+ delegateLoadBalancePolicy.init(father);
+ }
+
+ public Object chooseTarget(FamilyClusterInfo clusterFamily)
+ {
+ return delegateLoadBalancePolicy.chooseTarget(clusterFamily);
+ }
+
+ /**
+ * Choses a new target based on delegate load balance policy.
+ *
+ * @param familyClusterInfo cluster family information
+ * @param invocation current invocation
+ * @return a new target
+ */
+ protected Object chooseNewTarget(FamilyClusterInfo familyClusterInfo, Invocation invocation)
+ {
+ Object newTarget = delegateLoadBalancePolicy.chooseTarget(familyClusterInfo, invocation);
+
+ if (trace)
+ {
+ log.trace("new target chosen: " + newTarget);
+ }
+
+ invocation.getTransientPayload().put("TX_STICKY_TARGET", newTarget);
+
+ return newTarget;
+ }
+}
Added: branches/Branch_4_2/cluster/src/main/org/jboss/ha/framework/interfaces/TransactionStickyFirstAvailable.java
===================================================================
--- branches/Branch_4_2/cluster/src/main/org/jboss/ha/framework/interfaces/TransactionStickyFirstAvailable.java (rev 0)
+++ branches/Branch_4_2/cluster/src/main/org/jboss/ha/framework/interfaces/TransactionStickyFirstAvailable.java 2008-01-13 22:20:00 UTC (rev 68927)
@@ -0,0 +1,43 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2007, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ha.framework.interfaces;
+
+/**
+ * First available transaction sticky load balance policy.
+ *
+ * @author <a href="mailto:galder.zamarreno at jboss.com">Galder Zamarreno</a>
+ */
+public class TransactionStickyFirstAvailable extends TransactionSticky
+{
+
+ /** The serialVersionUID */
+ private static final long serialVersionUID = -8688525543058853326L;
+
+ /**
+ * Create a new TransactionStickyFirstAvailable.
+ */
+ public TransactionStickyFirstAvailable()
+ {
+ super(new FirstAvailable());
+ }
+
+}
Added: branches/Branch_4_2/cluster/src/main/org/jboss/ha/framework/interfaces/TransactionStickyFirstAvailableIdenticalAllProxies.java
===================================================================
--- branches/Branch_4_2/cluster/src/main/org/jboss/ha/framework/interfaces/TransactionStickyFirstAvailableIdenticalAllProxies.java (rev 0)
+++ branches/Branch_4_2/cluster/src/main/org/jboss/ha/framework/interfaces/TransactionStickyFirstAvailableIdenticalAllProxies.java 2008-01-13 22:20:00 UTC (rev 68927)
@@ -0,0 +1,44 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2007, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ha.framework.interfaces;
+
+/**
+ * First available indentical all proxies transaction sticky load balance policy.
+ *
+ * @author <a href="mailto:galder.zamarreno at jboss.com">Galder Zamarreno</a>
+ */
+public class TransactionStickyFirstAvailableIdenticalAllProxies extends TransactionSticky
+{
+
+ /** The serialVersionUID */
+ private static final long serialVersionUID = -108026886517429364L;
+
+ /**
+ * Create a new TransactionStickyFirstAvailableIdenticalAllProxies.
+ *
+ */
+ public TransactionStickyFirstAvailableIdenticalAllProxies()
+ {
+ super(new FirstAvailableIdenticalAllProxies());
+ }
+
+}
Added: branches/Branch_4_2/cluster/src/main/org/jboss/ha/framework/interfaces/TransactionStickyRandomRobin.java
===================================================================
--- branches/Branch_4_2/cluster/src/main/org/jboss/ha/framework/interfaces/TransactionStickyRandomRobin.java (rev 0)
+++ branches/Branch_4_2/cluster/src/main/org/jboss/ha/framework/interfaces/TransactionStickyRandomRobin.java 2008-01-13 22:20:00 UTC (rev 68927)
@@ -0,0 +1,43 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2007, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ha.framework.interfaces;
+
+/**
+ * Random robin transaction sticky load balace policy.
+ *
+ * @author <a href="mailto:galder.zamarreno at jboss.com">Galder Zamarreno</a>
+ */
+public class TransactionStickyRandomRobin extends TransactionSticky
+{
+
+ /** The serialVersionUID */
+ private static final long serialVersionUID = -2684882134710754122L;
+
+ /**
+ * Create a new TransactionStickyRandomRobin.
+ */
+ public TransactionStickyRandomRobin()
+ {
+ super(new RandomRobin());
+ }
+
+}
Added: branches/Branch_4_2/cluster/src/main/org/jboss/ha/framework/interfaces/TransactionStickyRoundRobin.java
===================================================================
--- branches/Branch_4_2/cluster/src/main/org/jboss/ha/framework/interfaces/TransactionStickyRoundRobin.java (rev 0)
+++ branches/Branch_4_2/cluster/src/main/org/jboss/ha/framework/interfaces/TransactionStickyRoundRobin.java 2008-01-13 22:20:00 UTC (rev 68927)
@@ -0,0 +1,43 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2007, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ha.framework.interfaces;
+
+/**
+ * Round robin transaction sticky load balance policy
+ *
+ * @author <a href="mailto:galder.zamarreno at jboss.com">Galder Zamarreno</a>
+ */
+public class TransactionStickyRoundRobin extends TransactionSticky
+{
+
+ /** The serialVersionUID */
+ private static final long serialVersionUID = 8195610955344716827L;
+
+ /**
+ * Create a new TransactionStickyRoundRobin.
+ */
+ public TransactionStickyRoundRobin()
+ {
+ super(new RoundRobin());
+ }
+
+}
Modified: branches/Branch_4_2/cluster/src/main/org/jboss/invocation/jrmp/interfaces/JRMPInvokerProxyHA.java
===================================================================
--- branches/Branch_4_2/cluster/src/main/org/jboss/invocation/jrmp/interfaces/JRMPInvokerProxyHA.java 2008-01-13 11:24:52 UTC (rev 68926)
+++ branches/Branch_4_2/cluster/src/main/org/jboss/invocation/jrmp/interfaces/JRMPInvokerProxyHA.java 2008-01-13 22:20:00 UTC (rev 68927)
@@ -163,7 +163,14 @@
log.trace("after reaching the server, transaction propagation context (tpc) is " + tpc);
}
- txFailoverAuthorizations.put(tpc, null);
+ Object stickyTarget = invocation.getTransientValue("TX_STICKY_TARGET");
+
+ if (trace && stickyTarget != null)
+ {
+ log.trace("remember transaction bound target[" + stickyTarget + "] for tpc[" + tpc + "]");
+ }
+
+ txFailoverAuthorizations.put(tpc, stickyTarget);
}
}
}
@@ -180,6 +187,9 @@
//
int failoverCounter = 0;
invocation.setValue ("FAILOVER_COUNTER", new Integer(failoverCounter), PayloadKey.AS_IS);
+
+ // If transaction sticky, put chosen target
+ putIfExistsTransactionTarget(invocation, getTransactionPropagationContext());
// We are going to go through a Remote invocation, switch to a Marshalled Invocation
MarshalledInvocation mi = new MarshalledInvocation(invocation);
@@ -382,6 +392,38 @@
return tpc;
}
+ /**
+ * Called at the beginning of the invocation to check whether the current tpc
+ * is already present in the tx failover map. If it is, get the chosen
+ * target associated to it and add it to the invocation transient payload so
+ * that the load balance policy can choose the right target.
+ */
+ protected void putIfExistsTransactionTarget(Invocation invocation, Object tpc)
+ {
+ if (tpc != null)
+ {
+ synchronized (tpc)
+ {
+ if (trace)
+ {
+ log.trace("in the proxy, transaction propagation context (tpc) is " + tpc);
+ }
+
+ Object stickyTarget = txFailoverAuthorizations.get(tpc);
+
+ if (stickyTarget != null)
+ {
+ if (trace)
+ {
+ log.trace("put transaction bound target [" + stickyTarget + "] into transient payload");
+ }
+
+ invocation.getTransientPayload().put("TX_STICKY_TARGET", stickyTarget);
+ }
+ }
+ }
+ }
+
// Private -------------------------------------------------------
// Inner classes -------------------------------------------------
Modified: branches/Branch_4_2/cluster/src/main/org/jboss/invocation/unified/interfaces/UnifiedInvokerHAProxy.java
===================================================================
--- branches/Branch_4_2/cluster/src/main/org/jboss/invocation/unified/interfaces/UnifiedInvokerHAProxy.java 2008-01-13 11:24:52 UTC (rev 68926)
+++ branches/Branch_4_2/cluster/src/main/org/jboss/invocation/unified/interfaces/UnifiedInvokerHAProxy.java 2008-01-13 22:20:00 UTC (rev 68927)
@@ -69,11 +69,19 @@
public static final WeakHashMap txFailoverAuthorizations = new WeakHashMap();
+ /** Trace level logging flag only set when the proxy is created or read from JNDI */
+ private static boolean trace = false;
public UnifiedInvokerHAProxy()
{
super();
- log.debug("UnifiedInvokerHAProxy constructor called with no arguments.");
+ trace = log.isTraceEnabled();
+
+ if (trace)
+ {
+ log.trace("UnifiedInvokerHAProxy constructor called with no arguments.");
+ }
+
setSubSystem("invokerha");
}
@@ -86,6 +94,7 @@
this.familyClusterInfo = ClusteringTargetsRepository.initTarget(proxyFamilyName, targets, viewId);
this.loadBalancePolicy = policy;
this.proxyFamilyName = proxyFamilyName;
+ trace = log.isTraceEnabled();
setSubSystem("invokerha");
}
@@ -97,7 +106,7 @@
{
synchronized(tpc)
{
- if (log.isTraceEnabled())
+ if (trace)
{
log.trace("checking tx failover authorisation map with tpc " + tpc);
}
@@ -117,12 +126,19 @@
{
synchronized(tpc)
{
- if (log.isTraceEnabled())
+ if (trace)
{
log.trace("after reaching the server, transaction propagation context (tpc) is " + tpc);
}
- txFailoverAuthorizations.put(tpc, null);
+ Object stickyTarget = invocation.getTransientValue("TX_STICKY_TARGET");
+
+ if (trace && stickyTarget != null)
+ {
+ log.trace("remember transaction bound target[" + stickyTarget + "] for tpc[" + tpc + "]");
+ }
+
+ txFailoverAuthorizations.put(tpc, stickyTarget);
}
}
}
@@ -179,6 +195,9 @@
//
int failoverCounter = 0;
invocation.setValue("FAILOVER_COUNTER", new Integer(failoverCounter), PayloadKey.AS_IS);
+
+ // If transaction sticky, put chosen target
+ putIfExistsTransactionTarget(invocation, getTransactionPropagationContext());
Object response = null;
Exception lastException = null;
@@ -192,12 +211,18 @@
{
invocation.setValue("CLUSTER_VIEW_ID", new Long(this.familyClusterInfo.getCurrentViewId()));
- log.debug("Client cluster view id: " + familyClusterInfo.getCurrentViewId());
- log.debug(printPossibleTargets());
+ if (trace)
+ {
+ log.trace("Client cluster view id: " + familyClusterInfo.getCurrentViewId());
+ log.trace(printPossibleTargets());
+ }
Client clientInstance = getClient(invocation);
- log.debug("Making invocation on " + clientInstance.getInvoker().getLocator());
+ if (trace)
+ {
+ log.trace("Making invocation on " + clientInstance.getInvoker().getLocator());
+ }
response = clientInstance.invoke(invocation, null);
@@ -205,7 +230,10 @@
if(response instanceof Exception)
{
- log.debug("Invocation returened exception: " + response);
+ if (trace)
+ {
+ log.trace("Invocation returned exception: " + response);
+ }
if(response instanceof GenericClusteringException)
{
GenericClusteringException gcex = (GenericClusteringException) response;
@@ -236,7 +264,10 @@
failoverCounter++;
invocation.setValue("FAILOVER_COUNTER", new Integer(failoverCounter), PayloadKey.AS_IS);
- log.debug("Received GenericClusteringException where request was not completed. Will retry.");
+ if (trace)
+ {
+ log.trace("Received GenericClusteringException where request was not completed. Will retry.");
+ }
continue;
}
@@ -279,7 +310,11 @@
}
catch(CannotConnectException cncEx)
{
- log.debug("Invocation failed: CannotConnectException - " + cncEx, cncEx);
+ if (trace)
+ {
+ log.trace("Invocation failed: CannotConnectException - " + cncEx, cncEx);
+ }
+
removeDeadTarget(getLocator());
resetView();
failoverAuthorized = txContextAllowsFailover(invocation);
@@ -316,7 +351,10 @@
failoverCounter++;
invocation.setValue("FAILOVER_COUNTER", new Integer(failoverCounter), PayloadKey.AS_IS);
- log.debug("Received GenericClusteringException where request was not completed. Will retry.");
+ if (trace)
+ {
+ log.trace("Received GenericClusteringException where request was not completed. Will retry.");
+ }
}
else
{
@@ -326,7 +364,10 @@
}
catch(RemoteException aex)
{
- log.debug("Invocation failed: RemoteException - " + aex, aex);
+ if (trace)
+ {
+ log.trace("Invocation failed: RemoteException - " + aex, aex);
+ }
// per Jira issue JBREM-61
if(isStrictRMIException())
@@ -340,7 +381,10 @@
}
catch(Throwable throwable)
{
- log.debug("Invocation failed: " + throwable, throwable);
+ if (trace)
+ {
+ log.trace("Invocation failed: " + throwable, throwable);
+ }
// this is somewhat of a hack as remoting throws throwable,
// so will let Exception types bubble up, but if Throwable type,
@@ -392,7 +436,10 @@
if(this.familyClusterInfo != null)
{
familyClusterInfo.removeDeadTarget(locator);
- log.debug("Removed " + locator + " from target list.");
+ if (trace)
+ {
+ log.trace("Removed " + locator + " from target list.");
+ }
}
}
}
@@ -403,11 +450,14 @@
if(familyClusterInfo != null)
{
familyClusterInfo.updateClusterInfo(newReplicants, currentViewId);
- log.debug("Updating cluster info. New view id: " + currentViewId);
- log.debug("New cluster target list is:");
- for(int x = 0; x < newReplicants.size(); x++)
+ if (trace)
{
- log.debug(newReplicants.get(x));
+ log.trace("Updating cluster info. New view id: " + currentViewId);
+ log.trace("New cluster target list is:");
+ for(int x = 0; x < newReplicants.size(); x++)
+ {
+ log.trace(newReplicants.get(x));
+ }
}
}
}
@@ -464,6 +514,12 @@
default:
throw new StreamCorruptedException("Unknown version seen: " + version);
}
+
+ trace = log.isTraceEnabled();
+ if(trace)
+ {
+ log.trace("Init, clusterInfo: "+familyClusterInfo+", policy="+loadBalancePolicy);
+ }
}
/**
@@ -476,4 +532,36 @@
TransactionPropagationContextFactory tpcFactory = TransactionPropagationContextUtil.getTPCFactoryClientSide();
return (tpcFactory == null) ? null : tpcFactory.getTransactionPropagationContext();
}
+
+ /**
+ * Called at the beginning of the invocation to check whether the current tpc
+ * is already present in the tx failover map. If it is, get the chosen
+ * target associated to it and add it to the invocation transient payload so
+ * that the load balance policy can choose the right target.
+ */
+ protected void putIfExistsTransactionTarget(Invocation invocation, Object tpc)
+ {
+ if (tpc != null)
+ {
+ synchronized (tpc)
+ {
+ if (trace)
+ {
+ log.trace("in the proxy, transaction propagation context (tpc) is " + tpc);
+ }
+
+ Object stickyTarget = txFailoverAuthorizations.get(tpc);
+
+ if (stickyTarget != null)
+ {
+ if (trace)
+ {
+ log.trace("put transaction bound target [" + stickyTarget + "] into transient payload");
+ }
+
+ invocation.getTransientPayload().put("TX_STICKY_TARGET", stickyTarget);
+ }
+ }
+ }
+ }
}
\ No newline at end of file
More information about the jboss-cvs-commits
mailing list