OS-4018

lxbrand support TCP SO_REUSEPORT

Status:
Resolved
Resolution:
Fixed
Created:
2015-03-10T02:08:31.000-0400
Updated:
2020-01-22T17:43:04.350-0500

Description

The feature to bind multiple socket listeners (servers) to the same port on the same host was introduced in Linux kernel 3.9 (https://lwn.net/Articles/542629) and is not supported yet on LXz.

This gap was found when running Python's regression test suite. Multiple test failed with the error below:

ERROR: testTimeoutConnect (test.test_ftplib.TestTimeouts)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/share/python/test/test_ftplib.py", line 671, in setUp
    self.port = test_support.bind_port(self.sock)
  File "/usr/share/python/test/test_support.py", line 308, in bind_port
    if sock.getsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT) == 1:
  File "/usr/lib/python2.7/socket.py", line 224, in meth
    return getattr(self._sock,name)(*args)
error: [Errno 92] Protocol not available

The unit test code is attached to the ticket. Refer to OS-4014#icft=OS-4014 for instructions on running the Python regression test suite.

Comments (3)

Former user commented on 2015-07-17T14:47:12.000-0400:

Added Zendesk ticket id 183359 as the issue is also reported by a customer.

Former user commented on 2015-07-20T20:20:58.000-0400:

Raised the priority of this defect as more use cases are now affected by the socket feature gaps.

Former user commented on 2015-12-07T15:58:09.000-0500:

illumos-joyent commit 3100843 (branch master, by Patrick Mooney)

OS-4018#icft=OS-4018 lxbrand support TCP SO_REUSEPORT
Reviewed by: Robert Mustacchi <rm@joyent.com>
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>
Reviewed by: Cody Mello <cody.mello@joyent.com>