Uploaded image for project: 'Geode'
  1. Geode
  2. GEODE-8664

JGroups exception is not propagated

    XMLWordPrintableJSON

Details

    Description

      AS A geode contributor

      I WANT exceptions thrown in DistributionImpl.start to be propagated

      SO THAT more information is provided while tackling issues.

       


      Additional information:

      After looking at an issue while starting a locator having to do with JGroupMessenger I noticed that exceptions from Membership.start are not correctly propagated in DistributionImpl.start method.

      To ilustrate the problem I attach below the reported exception while starting the locator:

       

      locator is exiting due to an exception
      org.apache.geode.GemFireConfigException: unable to create jgroups channel
      at org.apache.geode.distributed.internal.DistributionImpl.start(DistributionImpl.java:184)
      at org.apache.geode.distributed.internal.DistributionImpl.createDistribution(DistributionImpl.java:222)
      at org.apache.geode.distributed.internal.ClusterDistributionManager.<init>(ClusterDistributionManager.java:464)
      at org.apache.geode.distributed.internal.ClusterDistributionManager.<init>(ClusterDistributionManager.java:497)
      at org.apache.geode.distributed.internal.ClusterDistributionManager.create(ClusterDistributionManager.java:326)
      at org.apache.geode.distributed.internal.InternalDistributedSystem.initialize(InternalDistributedSystem.java:779)
      at org.apache.geode.distributed.internal.InternalDistributedSystem.access$200(InternalDistributedSystem.java:135)
      at org.apache.geode.distributed.internal.InternalDistributedSystem$Builder.build(InternalDistributedSystem.java:3033)
      at org.apache.geode.distributed.internal.InternalDistributedSystem.connectInternal(InternalDistributedSystem.java:290)
      at org.apache.geode.distributed.internal.InternalLocator.startDistributedSystem(InternalLocator.java:743)
      at org.apache.geode.distributed.internal.InternalLocator.startLocator(InternalLocator.java:388)
      at org.apache.geode.distributed.LocatorLauncher.start(LocatorLauncher.java:716)
      at org.apache.geode.distributed.LocatorLauncher.run(LocatorLauncher.java:623)
      at org.apache.geode.distributed.LocatorLauncher.main(LocatorLauncher.java:217)

       

      Thing is with that kind of information there's no way to know why the problem is happening, so the idea would be to propagate the exceptions, so it looks more like this:

      locator is exiting due to an exception
      org.apache.geode.SystemConnectException: unable to create jgroups channel
      at org.apache.geode.distributed.internal.DistributionImpl.start(DistributionImpl.java:186)
      at org.apache.geode.distributed.internal.DistributionImpl.createDistribution(DistributionImpl.java:222)
      at org.apache.geode.distributed.internal.ClusterDistributionManager.<init>(ClusterDistributionManager.java:464)
      at org.apache.geode.distributed.internal.ClusterDistributionManager.<init>(ClusterDistributionManager.java:497)
      at org.apache.geode.distributed.internal.ClusterDistributionManager.create(ClusterDistributionManager.java:326)
      at org.apache.geode.distributed.internal.InternalDistributedSystem.initialize(InternalDistributedSystem.java:779)
      at org.apache.geode.distributed.internal.InternalDistributedSystem.access$200(InternalDistributedSystem.java:135)
      at org.apache.geode.distributed.internal.InternalDistributedSystem$Builder.build(InternalDistributedSystem.java:3034)
      at org.apache.geode.distributed.internal.InternalDistributedSystem.connectInternal(InternalDistributedSystem.java:290)
      at org.apache.geode.distributed.internal.InternalLocator.startDistributedSystem(InternalLocator.java:743)
      at org.apache.geode.distributed.internal.InternalLocator.startLocator(InternalLocator.java:388)
      at org.apache.geode.distributed.LocatorLauncher.start(LocatorLauncher.java:716)
      at org.apache.geode.distributed.LocatorLauncher.run(LocatorLauncher.java:623)
      at org.apache.geode.distributed.LocatorLauncher.main(LocatorLauncher.java:217)
      
      Caused by: java.lang.Exception: failed to open a port in range 53-53
      at org.jgroups.protocols.UDP.createMulticastSocketWithBindPort(UDP.java:503)
      at org.jgroups.protocols.UDP.createSockets(UDP.java:348)
      at org.jgroups.protocols.UDP.start(UDP.java:266)
      at org.jgroups.stack.ProtocolStack.startStack(ProtocolStack.java:966)
      at org.jgroups.JChannel.startStack(JChannel.java:889)
      at org.jgroups.JChannel._preConnect(JChannel.java:553)
      at org.jgroups.JChannel.connect(JChannel.java:288)
      at org.jgroups.JChannel.connect(JChannel.java:279)
      at org.apache.geode.distributed.internal.membership.gms.messenger.JGroupsMessenger.start(JGroupsMessenger.java:393)
      at org.apache.geode.distributed.internal.membership.gms.Services.start(Services.java:203)
      at org.apache.geode.distributed.internal.membership.gms.GMSMembership.start(GMSMembership.java:1853)
      at org.apache.geode.distributed.internal.DistributionImpl.start(DistributionImpl.java:171)
      ... 13 more

      For example in this case I am trying to setup the binding range to 53-53 which is already bound by the local DNS server.
      Another example in which this is reproduced is, if you try to bind your locator to a public interface, you would get a JGroup exception which won't be propagated.

      Attachments

        1. GEODE-8664.patch
          1 kB
          Mario Salazar de Torres

        Activity

          People

            gaussianrecurrence Mario Salazar de Torres
            gaussianrecurrence Mario Salazar de Torres
            Votes:
            0 Vote for this issue
            Watchers:
            6 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: