You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@geode.apache.org by "Dale Emery (Jira)" <ji...@apache.org> on 2021/10/14 23:54:00 UTC

[jira] [Closed] (GEODE-9725) AvailablePort inherently incompatible with default membership port range

     [ https://issues.apache.org/jira/browse/GEODE-9725?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Dale Emery closed GEODE-9725.
-----------------------------

> AvailablePort inherently incompatible with default membership port range
> ------------------------------------------------------------------------
>
>                 Key: GEODE-9725
>                 URL: https://issues.apache.org/jira/browse/GEODE-9725
>             Project: Geode
>          Issue Type: Bug
>          Components: tests
>    Affects Versions: 1.15.0
>            Reporter: Dale Emery
>            Assignee: Dale Emery
>            Priority: Major
>              Labels: GeodeOperationAPI, pull-request-available
>             Fix For: 1.15.0
>
>
> {{AvailablePortHelperIntegrationTest}} failed in CI:
>  [https://concourse.apachegeode-ci.info/teams/main/pipelines/apache-develop-main/jobs/integration-test-openjdk8/builds/259]
> *Cause:* {{AvailablePort}} and {{AvailablePortHelper}} have methods to retrieve an "available" port from the membership port range. This feature is both unnecessary and inherently unreliable.
> *Inherently unreliable:* The default membership port range overlaps each OS's ephemeral port range. An ephemeral port deemed to be "available" by one of these methods can be put into use by another process even before the method returns. It is not safe to rely on such a port to remain available after it is checked.
> *Unnecessary:* Currently the only callers that request ports from the membership port range are two tests in {{DistributedSystemDUnitTest}}. In each case, the test uses the returned ports to +set+ the membership port range for a member. There is no need for the ports to come from any particular range.
> There are no other uses of this feature, either in the product or in tests.
> *Solution:* Remove this feature from {{AvailablePort}} and {{AvailablePortHelper}}.
> *Alternatives:*
>  * {{DistributedSystemDUnitTest}} can get available ports from the available port range. This range is safe to use (assuming all other concurrently-running tests are well-behaved).
>  * A caller that needs ports in a specific range can call {{AvailablePort.getRandomAvailablePortInRange(lower, upper, protocol)}}.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)