[jboss-jira] [JBoss JIRA] Resolved: (JGRP-264) Multiplexer: reconnect fails

Bela Ban (JIRA) jira-events at jboss.com
Fri Jul 28 04:29:11 EDT 2006


     [ http://jira.jboss.com/jira/browse/JGRP-264?page=all ]

Bela Ban resolved JGRP-264.
---------------------------

    Resolution: Done

Fixed by adding the id/MuxChannel binding back into Multiplexer.services on connect() (it was removed on disconnect(), so we want to be symmetric)

> Multiplexer: reconnect fails
> ----------------------------
>
>                 Key: JGRP-264
>                 URL: http://jira.jboss.com/jira/browse/JGRP-264
>             Project: JGroups
>          Issue Type: Bug
>    Affects Versions: 2.2.8, 2.2.9, 2.3, 2.2.9.1, 2.2.9.2, 2.2.9 SP3 (2.2.9.3), 2.3 SP1
>            Reporter: Bela Ban
>         Assigned To: Bela Ban
>             Fix For: 2.4
>
>
> [Brian Stansberry]
> AS test o.j.t.c.partition.test.PartitionRestartUnitTestCase surfaced an
> issue with the multiplexer and a disconnect followed by a reconnect (w/o
> close()).
> Problem is basically the Map<String, Channel> service field in
> Multiplexer. A service gets added to this map when a MuxChannel is
> created.  It currently gets removed as part of
> Multiplexer.handleServiceDown(), which gets called as part of
> disconnect().
> Problem is once its removed, it doesn't get added again as part of
> connect() processing, so thereafter things fail. I think it should be
> removed as part of close(), but haven't looked carefully enough to see
> if would have side effects.
> I've added a couple tests to MultiplexerTest to ensure things work with
> a disconnect() followed by a new connect().
> I looked at it a little bit and it seemed an easy solution was to move
> the call to Multiplexer.unregister() from
> Multiplexer.handleServiceDown() to JChannelFactory.close().
> Index: JChannelFactory.java
> ===================================================================
> RCS file:
> /cvsroot/javagroups/JGroups/src/org/jgroups/JChannelFactory.java,v
> retrieving revision 1.29
> diff -u -r1.29 JChannelFactory.java
> --- JChannelFactory.java	14 Jul 2006 12:17:24 -0000	1.29
> +++ JChannelFactory.java	26 Jul 2006 21:35:24 -0000
> @@ -389,6 +389,7 @@
>                      if(addr != null) {
>                          try {
>                              mux.sendServiceDownMessage(ch.getId(),
> addr);
> +                            mux.unregister(ch.getId());
>                          }
>                          catch(Exception e) {
>                              if(log.isErrorEnabled())
> Index: mux/Multiplexer.java
> ===================================================================
> RCS file:
> /cvsroot/javagroups/JGroups/src/org/jgroups/mux/Multiplexer.java,v
> retrieving revision 1.17
> diff -u -r1.17 Multiplexer.java
> --- mux/Multiplexer.java	14 Jul 2006 13:09:25 -0000	1.17
> +++ mux/Multiplexer.java	26 Jul 2006 21:35:26 -0000
> @@ -599,9 +599,9 @@
>              }
>          }
>  
> -        Address local_address=getLocalAddress();
> -        if(local_address != null && host != null &&
> host.equals(local_address))
> -            unregister(service);
> +//        Address local_address=getLocalAddress();
> +//        if(local_address != null && host != null &&
> host.equals(local_address))
> +//            unregister(service);
>      }
> With this, as the MultiplexerTest cases pass, as does the AS integration
> test. 
>  

-- 
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