[
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)