Uploaded image for project: 'Hadoop Common'
  1. Hadoop Common
  2. HADOOP-16238

Add the possbility to set SO_REUSEADDR in IPC Server Listener

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Resolved
    • Minor
    • Resolution: Fixed
    • None
    • 3.3.0
    • ipc
    • None

    Description

      Currently we can't enable SO_REUSEADDR in the IPC Server. In some circumstances, this would be desirable, see explanation here:

      https://developer.ibm.com/tutorials/l-sockpit/#pitfall-3-address-in-use-error-eaddrinuse-

      Rarely it also causes problems in a test case TestMiniMRClientCluster.testRestart:

      2019-04-04 11:21:31,896 INFO [main] service.AbstractService (AbstractService.java:noteFailure(273)) - Service org.apache.hadoop.yarn.server.resourcemanager.AdminService failed in state STARTED; cause: org.apache.hadoop.yarn.exceptions.YarnRuntimeException: java.net.BindException: Problem binding to [test-host:35491] java.net.BindException: Address already in use; For more details see: http://wiki.apache.org/hadoop/BindException
      org.apache.hadoop.yarn.exceptions.YarnRuntimeException: java.net.BindException: Problem binding to [test-host:35491] java.net.BindException: Address already in use; For more details see: http://wiki.apache.org/hadoop/BindException
       at org.apache.hadoop.yarn.factories.impl.pb.RpcServerFactoryPBImpl.getServer(RpcServerFactoryPBImpl.java:138)
       at org.apache.hadoop.yarn.ipc.HadoopYarnProtoRPC.getServer(HadoopYarnProtoRPC.java:65)
       at org.apache.hadoop.yarn.ipc.YarnRPC.getServer(YarnRPC.java:54)
       at org.apache.hadoop.yarn.server.resourcemanager.AdminService.startServer(AdminService.java:178)
       at org.apache.hadoop.yarn.server.resourcemanager.AdminService.serviceStart(AdminService.java:165)
       at org.apache.hadoop.service.AbstractService.start(AbstractService.java:194)
       at org.apache.hadoop.service.CompositeService.serviceStart(CompositeService.java:121)
       at org.apache.hadoop.yarn.server.resourcemanager.ResourceManager.serviceStart(ResourceManager.java:1244)
       at org.apache.hadoop.service.AbstractService.start(AbstractService.java:194)
       at org.apache.hadoop.yarn.server.MiniYARNCluster.startResourceManager(MiniYARNCluster.java:355)
       at org.apache.hadoop.yarn.server.MiniYARNCluster.access$300(MiniYARNCluster.java:127)
       at org.apache.hadoop.yarn.server.MiniYARNCluster$ResourceManagerWrapper.serviceStart(MiniYARNCluster.java:493)
       at org.apache.hadoop.service.AbstractService.start(AbstractService.java:194)
       at org.apache.hadoop.service.CompositeService.serviceStart(CompositeService.java:121)
       at org.apache.hadoop.yarn.server.MiniYARNCluster.serviceStart(MiniYARNCluster.java:312)
       at org.apache.hadoop.mapreduce.v2.MiniMRYarnCluster.serviceStart(MiniMRYarnCluster.java:210)
       at org.apache.hadoop.service.AbstractService.start(AbstractService.java:194)
       at org.apache.hadoop.mapred.MiniMRYarnClusterAdapter.restart(MiniMRYarnClusterAdapter.java:73)
       at org.apache.hadoop.mapred.TestMiniMRClientCluster.testRestart(TestMiniMRClientCluster.java:114)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

       

      At least for testing, having this socket option enabled is benefical. We could enable this with a new property like ipc.server.reuseaddr.

      Attachments

        1. HADOOP-16238-001.patch
          4 kB
          Peter Bacsko
        2. HADOOP-16238-002.patch
          4 kB
          Peter Bacsko
        3. HADOOP-16238-003.patch
          4 kB
          Peter Bacsko
        4. HADOOP-16238-004.patch
          3 kB
          Peter Bacsko
        5. HADOOP-16238-005.patch
          3 kB
          Peter Bacsko

        Issue Links

          Activity

            People

              pbacsko Peter Bacsko
              pbacsko Peter Bacsko
              Votes:
              0 Vote for this issue
              Watchers:
              6 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: