[jboss-jira] [JBoss JIRA] Commented: (JBAS-5536) UnifiedInvokerHAProxy replicants are not updated when other nodes undeploy beans
Galder Zamarreno (JIRA)
jira-events at lists.jboss.org
Wed May 21 05:16:06 EDT 2008
[ 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
More information about the jboss-jira
mailing list