daml/libs-scala
Andreas Herrmann a1da025b78
FreePort draw from outside ephemeral port range (#10774)
* Test case for LockedFreePort not colliding with port 0

changelog_begin
changelog_end

* Discover dynamic port range on Linux

* Random port generator outside ephemeral range

* remove dev comments

* Draw FreePort from outside the ephemeral port range

Note, there is a race condition between the socket being closed and the
lock-file being created in LockedFreePort. This is not a new issue, it
was already present with the previous port 0 based implementation.

LockedFreePort handles this by attempting to find a free port and taking
a file lock multiple times.

But, it could happen that A `find`s port N, and obtains the lock, but
doesn't bind port N again, yet; then B binds port N during `find`; then
A attempts to bind port N before B could release it again and fails
because B still holds it.

* Select dynamic port range based on OS

* Detect dynamic port range on MacOS and Windows

* Import sysctl from Nix on MacOS

changelog_begin
changelog_end

* Windows line separator

* FreePort helpers visibility

* Use more informative exception types

* Use a more light weight unit test

* Add comments

* Fix Windows

* Update libs-scala/ports/src/main/scala/com/digitalasset/ports/FreePort.scala

Co-authored-by: Stefano Baghino <43749967+stefanobaghino-da@users.noreply.github.com>

* Update libs-scala/ports/src/main/scala/com/digitalasset/ports/FreePort.scala

Co-authored-by: Stefano Baghino <43749967+stefanobaghino-da@users.noreply.github.com>

* Add a comment to clarify the generated port range

* fmt

* unused import

* Split libs-scala/ports

Splits the FreePort and LockedFreePort components into a separate
library as this is only used for testing purposes.

Co-authored-by: Andreas Herrmann <andreas.herrmann@tweag.io>
Co-authored-by: Stefano Baghino <43749967+stefanobaghino-da@users.noreply.github.com>
2021-09-07 15:41:43 +02:00
..
adjustable-clock update copyright notices for 2021 (#8257) 2021-01-01 19:49:51 +01:00
auth-utils update copyright notices for 2021 (#8257) 2021-01-01 19:49:51 +01:00
build-info update copyright notices for 2021 (#8257) 2021-01-01 19:49:51 +01:00
concurrent Switch from @silent to @nowarn. (#9498) 2021-04-26 19:46:14 +00:00
contextualized-logging participant-integration-api: Fix completion debug log output. (#10415) 2021-07-27 12:53:38 +00:00
db-utils enable JSON search index on Oracle by default (#10539) 2021-08-31 09:29:36 +00:00
doobie-slf4j Add //libs-scala/doobie-slf4j and replace usages of jdkLogHandler (#8731) 2021-02-03 10:45:05 +00:00
flyway-testing Upgrade Flyway to v7. (#10594) 2021-08-17 10:29:13 +00:00
fs-utils Example export (#9756) 2021-05-21 09:36:25 +02:00
gatling-utils Upgrade Scalatest to v3.2.9. (#10576) 2021-08-12 23:19:35 +00:00
grpc-reverse-proxy Enhance grpc-test-utils and grpc-reverse-proxy to use Resources (#8606) 2021-01-25 13:27:48 +01:00
grpc-server-reflection-client Enhance grpc-test-utils and grpc-reverse-proxy to use Resources (#8606) 2021-01-25 13:27:48 +01:00
grpc-test-utils Upgrade Scalatest to v3.2.9. (#10576) 2021-08-12 23:19:35 +00:00
grpc-utils Do not drop details when converting between gRPC Status classes [KVL-1084] (#10745) 2021-09-06 12:22:15 +02:00
logging-entries Move logging value definitions alongside their objects. (#10439) 2021-07-29 09:21:27 +00:00
nameof Publish nameof library (#9798) 2021-05-26 09:58:02 +00:00
oracle-testing Introduce dependency on Oracle image version (#10597) 2021-08-17 13:28:26 +00:00
ports FreePort draw from outside ephemeral port range (#10774) 2021-09-07 15:41:43 +02:00
postgresql-testing FreePort draw from outside ephemeral port range (#10774) 2021-09-07 15:41:43 +02:00
resources resources: Only mutate test mock objects inside synchronized blocks. (#9869) 2021-06-01 12:50:42 +00:00
resources-akka participant-integration-api: Use Scheduler, and add more tests to configuration initialization. [KVL-1046] (#10461) 2021-08-03 14:49:00 +00:00
resources-grpc Restrict extensibility of ServerResourceOwner (#8660) 2021-01-28 10:47:28 +00:00
scala-utils [JSON-API/trigger-service] Refactor db conn (#10497) 2021-08-09 09:56:58 +00:00
scalatest-utils Upgrade Scalatest to v3.2.9. (#10576) 2021-08-12 23:19:35 +00:00
timer-utils timer-utils: If RetryStrategy eventually fails, explain what happened. (#10511) 2021-08-09 07:32:25 +00:00