Details
-
Bug
-
Status: Closed
-
Minor
-
Resolution: Fixed
-
1.12.0, 1.13.0
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.