[
http://jira.jboss.com/jira/browse/JBAS-4455?page=comments#action_12390316 ]
Galder Zamarreno commented on JBAS-4455:
----------------------------------------
2, 3 and 6 todos have been done.
Still todo:
1.- test with legacy pooled invoker, which uses the JRMP invoker
proxy ha, so don't foresee any issues there.
4.- port this feature to 4.2.x.
5.- create subtasks for documentation for 4.2.x and trunk
LoadBalancePolicy that tries to pin all requests associated with a tx
to one server
-----------------------------------------------------------------------------------
Key: JBAS-4455
URL:
http://jira.jboss.com/jira/browse/JBAS-4455
Project: JBoss Application Server
Issue Type: Feature Request
Security Level: Public(Everyone can see)
Components: Clustering
Reporter: Brian Stansberry
Assigned To: Galder Zamarreno
Priority: Minor
Fix For: JBossAS-5.0.0.Beta3
The HA proxies don't allow failover once a tx has reached a server. This can lead to
this kind of situation:
EJB A deployed on nodes 1 and 2.
EJB B deployed on nodes 1 and 2.
1) Start tx, invoke on A.1.
2) Lookup B.
3) Invoke on B. LB policy picks B.2
4) Node 2 is dead for some reason so call fails.
5) Can't fail over because tx context won't allow a failover after a call has
reached a server.
But, B.1 is fine and is running on the only node the tx has invoked on. :(
Approach to improving this. This is based on JRMPInovkerProxyHA methods, but the idea is
generic:
In invocationHasReachedAServer, instead of storing null as the value, you store the
target (key is the tx).
In invoke, if there's a tx, you add that target (if there is one) to the invocation
as transient metadata
The LB policy gets passed the invocation as an arg when it chooses a target (this is
already in the API)
LB policy checks for the metadata. If there, and that target is in its target list,
return that target
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira