[
http://jira.jboss.com/jira/browse/JBAS-5536?page=comments#action_12413480 ]
Galder Zamarreno commented on JBAS-5536:
----------------------------------------
Funnily enough, UnifiedInvokerHAProxy does have a updateClusterInfo()
method:
private void updateClusterInfo(ArrayList newReplicants, long currentViewId)
{
if(familyClusterInfo != null)
{
familyClusterInfo.updateClusterInfo(newReplicants, currentViewId);
if (trace)
{
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));
}
}
}
}
But it does not extend InvokerProxyHA. That's good even though the method is
declared as private cos for a 4.x fix, we'd need to try to avoid changing
UnifiedInvokerHAProxy
at all if possible. This could be achieved making ProxyFactoryHA call updateClusterInfo
via reflection.
For JBoss 5, we just have to make that method public and UnifiedInvokerHAProxy
extend UnifiedInvokerHAProxy. If we want to do this properly for JB 5, we have to debate
the
suitability instanceof calls in ProxyFactoryHA which is rather dubious.
UnifiedInvokerHAProxy replicants are not updated when other nodes
undeploy beans
--------------------------------------------------------------------------------
Key: JBAS-5536
URL:
http://jira.jboss.com/jira/browse/JBAS-5536
Project: JBoss Application Server
Issue Type: Bug
Security Level: Public(Everyone can see)
Components: Clustering, Remoting
Affects Versions: JBossAS-5.0.0.Beta4, JBossAS-4.2.2.GA
Reporter: Galder Zamarreno
Assigned To: Galder Zamarreno
Priority: Critical
We have a big regression at out hands. When we moved to unified
invokers, we lost the ability for home/bean proxies to be updated
when another node undeploys a bean. Why?
ProxyFactoryHA.replicantsChanged looks something like this
(the trace logs were added by me during debugging):
public synchronized void replicantsChanged (String key,
List newReplicants,
int newReplicantsViewId)
{
try
{
if (homeInvoker instanceof InvokerProxyHA)
{
if (log.isTraceEnabled())
{
log.trace("Updating home proxy with new replicants " +
target.getReplicants() + ", view=" + target.getCurrentViewId ());
}
((InvokerProxyHA)homeInvoker).updateClusterInfo (target.getReplicants(),
target.getCurrentViewId ());
}
if (beanInvoker instanceof InvokerProxyHA)
{
if (log.isTraceEnabled())
{
log.trace("Updating bean proxy with new replicants " +
target.getReplicants() + ", view=" + target.getCurrentViewId ());
}
((InvokerProxyHA)beanInvoker).updateClusterInfo (target.getReplicants(),
target.getCurrentViewId ());
}
log.debug ("Rebinding in JNDI... " + key);
rebindHomeProxy ();
}
catch (Exception none)
{
log.debug (none);
}
}
UnifiedInvokerHAProxy *does not* implement InvokerProxyHA, so unified invoker ha
proxies will never have their replicants updated.
--
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