What I've done elsewhere (mostly at work) is to configure the main code (like a server) to accept port 0 from a test, instead of a "free" discovered port. This port ends up being used by a ServerSocket constructor or equivalent SSL class. The main class under test needs to have a getPort() method or methods depending on how deeply buried the server socket is, that queries the allocated ServerSocket. The test can then query the main code after it knows the socket is bound.
HTH, Gary On Sat, Oct 12, 2024, 3:16 PM Guillaume Nodet <gno...@apache.org> wrote: > > > Le sam. 12 oct. 2024 à 06:24, Emmanuel Lécharny <elecha...@gmail.com> a > écrit : > >> Indeed. But the point is that you can't fetch an available port and use >> it immediately and be sure it's not used by another process without some >> kind of global lock on your system... >> >> I don't see any other way to grab an available port from the OS, and >> guarantee it's not used when you have to bind a socket on it and release >> it immediately for use by another socket. >> > > If you bind a server socket on port 0, the OS will allocate a free port. > So just need to get the bound port and configure the client to use it ? > > >> Back to the issue: can you grab a StackTrace to see exactly where it >> blocks, in case there is another issue? >> >> Many thanks! >> >> On 11/10/2024 13:59, Gary Gregory wrote: >> > But it's not really doing that because it's NOT using the allocated >> > ServerSocket. Once that method exists, any other process in the >> > underlying OS can grab that port for itself. >> > >> > Gary >> > >> > On Fri, Oct 11, 2024, 7:53 AM Emmanuel Lécharny <elecha...@gmail.com >> > <mailto:elecha...@gmail.com>> wrote: >> > >> > >> > >> > On 11/10/2024 10:01, Gary Gregory wrote: >> > > Hi Emanuel, >> > > >> > > Why not use ephemeral ports? >> > >> > this is exactly what the AvailablePortFinder.getNextAvailable() >> > method does: >> > >> > public static int getNextAvailable() { >> > try (ServerSocket serverSocket = new ServerSocket(0)){ >> > // Here, we simply return an available port found by >> > the system >> > return serverSocket.getLocalPort(); >> > } catch (IOException ioe) { >> > throw new NoSuchElementException(ioe.getMessage()); >> > } >> > >> > >> > It might mean a bit of work update the >> > > tests to query the port and then use it, but it seems less probe >> to >> > > problems. I'll try again in a few hours. >> > > >> > > Gary >> > > >> > > On Thu, Oct 10, 2024, 10:17 PM Emmanuel Lécharny >> > <elecha...@gmail.com <mailto:elecha...@gmail.com> >> > > <mailto:elecha...@gmail.com <mailto:elecha...@gmail.com>>> >> wrote: >> > > >> > > Thanks Gary! >> > > >> > > DIRMINA777Test may fell due to some port collision (we use a >> > > AvailablePortFinder.getNextAvailable() call to find a port >> > that the >> > > Acceptor can use, but as some other tests may run >> > concurrently, the >> > > same >> > > port can be in use by another Acceptor, and the readFuture >> > can wait >> > > forever because the IoHandler that responds to connection is >> > not doing >> > > what is expected. >> > > >> > > It's not perfect, and the only solution is to run the test >> > another time. >> > > >> > > Could you give it another try? >> > > >> > > Side note: the AvailablePortFinder.getNextAvailable() method, >> > which is >> > > only used for tests, should probably be syncrhonized to avoid >> > being >> > > called by many threads at the same time. >> > > >> > > Thanks! >> > > >> > > On 10/10/2024 15:10, Gary Gregory wrote: >> > > > + 1 Release MINA 2.1.9 >> > > > >> > > > Release MINA 2.0.26: Running >> > > > org.apache.mina.transport.socket.nio.x hangs or takes >> > > > forever, I killed it after 30 minutes. >> > > > >> > > > - Tested the src ZIPs >> > > > - ASCs OK >> > > > - SHA512 files are not machine verifiable with `shasum >> > --check` >> > > due to >> > > > their incompatible format. >> > > > - mvn clean verify >> > > > - Using: >> > > > openjdk version "11.0.24" 2024-07-16 >> > > > OpenJDK Runtime Environment Homebrew (build 11.0.24+0) >> > > > OpenJDK 64-Bit Server VM Homebrew (build 11.0.24+0, mixed >> > mode) >> > > > >> > > > Apache Maven 3.9.9 >> (8e8579a9e76f7d015ee5ec7bfcdc97d260186937) >> > > > Maven home: /usr/local/Cellar/maven/3.9.9/libexec >> > > > Java version: 11.0.24, vendor: Homebrew, runtime: >> > > > >> > > >> > /usr/local/Cellar/openjdk@11 >> /11.0.24/libexec/openjdk.jdk/Contents/Home >> > > > Default locale: en_US, platform encoding: UTF-8 >> > > > OS name: "mac os x", version: "15.0.1", arch: "x86_64", >> > family: "mac" >> > > > >> > > > Darwin **** 24.0.0 Darwin Kernel Version 24.0.0: Tue Sep >> 24 >> > > 23:36:30 PDT >> > > > 2024; root:xnu-11215.1.12~1/RELEASE_X86_64 x86_64 >> > > > >> > > > Gary >> > > > >> > > > >> > > > On Wed, Oct 9, 2024 at 10:53 AM Emmanuel Lécharny >> > > <elecha...@gmail.com <mailto:elecha...@gmail.com> >> > <mailto:elecha...@gmail.com <mailto:elecha...@gmail.com>> >> > > > <mailto:elecha...@gmail.com <mailto:elecha...@gmail.com> >> > <mailto:elecha...@gmail.com <mailto:elecha...@gmail.com>>>> wrote: >> > > > >> > > > Hi! >> > > > >> > > > I have started this vote 9 days ago, still haven't >> get any >> > > vote yet... >> > > > >> > > > On 30/09/2024 19:21, Emmanuel Lecharny wrote: >> > > > > hi! >> > > > > >> > > > > WARNING: there are 2 votes to cast! >> > > > > >> > > > > >> > > > > This is a vote for a double release: >> > > > > * MINA 2.1.9 >> > > > > * MINA 2.0.26 >> > > > > >> > > > > Those versions are a maintenance realase, fixing a >> > bug in >> > > the way we >> > > > > treat Strings when reading a IoBuffer: >> > > > > >> > > > > DIRMINA-1181:Exception thrown when attempting to >> decode >> > > certain >> > > > UTF-16 chars >> > > > > >> > > > > >> > > > > >> > > > > Temporary tags have been created (they can be >> > removed if >> > > the vote >> > > > is not >> > > > > approved) : >> > > > > >> > > > > * MINA 2.1.9: >> > > > > >> > > > >> > > >> > >> https://github.com/apache/mina/commit/8df31da1597056b73f5d6dbf11c75ce13227ba60 >> < >> https://github.com/apache/mina/commit/8df31da1597056b73f5d6dbf11c75ce13227ba60> >> < >> https://github.com/apache/mina/commit/8df31da1597056b73f5d6dbf11c75ce13227ba60 >> < >> https://github.com/apache/mina/commit/8df31da1597056b73f5d6dbf11c75ce13227ba60>> >> < >> https://github.com/apache/mina/commit/8df31da1597056b73f5d6dbf11c75ce13227ba60 >> < >> https://github.com/apache/mina/commit/8df31da1597056b73f5d6dbf11c75ce13227ba60> >> < >> https://github.com/apache/mina/commit/8df31da1597056b73f5d6dbf11c75ce13227ba60 >> < >> https://github.com/apache/mina/commit/8df31da1597056b73f5d6dbf11c75ce13227ba60 >> >>> >> > > > > >> > > > > * MINA 2.0.26: >> > > > > >> > > > >> > > >> > >> https://github.com/apache/mina/commit/4d1cf35024ae565827b63c11bd0b42a62a1c3e49 >> < >> https://github.com/apache/mina/commit/4d1cf35024ae565827b63c11bd0b42a62a1c3e49> >> < >> https://github.com/apache/mina/commit/4d1cf35024ae565827b63c11bd0b42a62a1c3e49 >> < >> https://github.com/apache/mina/commit/4d1cf35024ae565827b63c11bd0b42a62a1c3e49>> >> < >> https://github.com/apache/mina/commit/4d1cf35024ae565827b63c11bd0b42a62a1c3e49 >> < >> https://github.com/apache/mina/commit/4d1cf35024ae565827b63c11bd0b42a62a1c3e49> >> < >> https://github.com/apache/mina/commit/4d1cf35024ae565827b63c11bd0b42a62a1c3e49 >> < >> https://github.com/apache/mina/commit/4d1cf35024ae565827b63c11bd0b42a62a1c3e49 >> >>> >> > > > > >> > > > > >> > > > > >> > > > > >> > > > > The final artifacts are stored in a staging >> repository: >> > > > > * MINA 2.1.9: >> > > > > >> > > > >> > > >> > >> https://repository.apache.org/content/repositories/orgapachemina-1105 < >> https://repository.apache.org/content/repositories/orgapachemina-1105> < >> https://repository.apache.org/content/repositories/orgapachemina-1105 < >> https://repository.apache.org/content/repositories/orgapachemina-1105>> < >> https://repository.apache.org/content/repositories/orgapachemina-1105 < >> https://repository.apache.org/content/repositories/orgapachemina-1105> < >> https://repository.apache.org/content/repositories/orgapachemina-1105 < >> https://repository.apache.org/content/repositories/orgapachemina-1105>>> >> > > > > * MINA 2.0.26: >> > > > > >> > > > >> > > >> > >> https://repository.apache.org/content/repositories/orgapachemina-1104 < >> https://repository.apache.org/content/repositories/orgapachemina-1104> < >> https://repository.apache.org/content/repositories/orgapachemina-1104 < >> https://repository.apache.org/content/repositories/orgapachemina-1104>> < >> https://repository.apache.org/content/repositories/orgapachemina-1104 < >> https://repository.apache.org/content/repositories/orgapachemina-1104> < >> https://repository.apache.org/content/repositories/orgapachemina-1104 < >> https://repository.apache.org/content/repositories/orgapachemina-1104>>> >> > > > > >> > > > > >> > > > > >> > > > > The distributions are available for download on : >> > > > > * MINA 2.1.9: >> > > > https://dist.apache.org/repos/dist/dev/mina/mina/2.1.9 >> > <https://dist.apache.org/repos/dist/dev/mina/mina/2.1.9> >> > > <https://dist.apache.org/repos/dist/dev/mina/mina/2.1.9 >> > <https://dist.apache.org/repos/dist/dev/mina/mina/2.1.9>> >> > > > >> > <https://dist.apache.org/repos/dist/dev/mina/mina/2.1.9 >> > <https://dist.apache.org/repos/dist/dev/mina/mina/2.1.9> >> > > <https://dist.apache.org/repos/dist/dev/mina/mina/2.1.9 >> > <https://dist.apache.org/repos/dist/dev/mina/mina/2.1.9>>> >> > > > > * MINA 2.0.26: >> > > > https://dist.apache.org/repos/dist/dev/mina/mina/2.0.26 >> > <https://dist.apache.org/repos/dist/dev/mina/mina/2.0.26> >> > > <https://dist.apache.org/repos/dist/dev/mina/mina/2.0.26 >> > <https://dist.apache.org/repos/dist/dev/mina/mina/2.0.26>> >> > > > >> > <https://dist.apache.org/repos/dist/dev/mina/mina/2.0.26 >> > <https://dist.apache.org/repos/dist/dev/mina/mina/2.0.26> >> > > <https://dist.apache.org/repos/dist/dev/mina/mina/2.0.26 >> > <https://dist.apache.org/repos/dist/dev/mina/mina/2.0.26>>> >> > > > > >> > > > > >> > > > > Let us vote : >> > > > > [ ] +1 | Release MINA 2.1.9 >> > > > > [ ] ± | Abstain >> > > > > [ ] -1 | Do *NOT* release MINA 2.1.9 >> > > > > >> > > > > >> > > > > [ ] +1 | Release MINA 2.0.26 >> > > > > [ ] ± | Abstain >> > > > > [ ] -1 | Do *NOT* release MINA 2.0.26 >> > > > > >> > > > > >> > > > > >> > > > >> > > > -- >> > > > *Emmanuel Lécharny* P. +33 (0)6 08 33 32 61 >> > > > elecha...@apache.org <mailto:elecha...@apache.org> >> > <mailto:elecha...@apache.org <mailto:elecha...@apache.org>> >> > > <mailto:elecha...@apache.org <mailto:elecha...@apache.org> >> > <mailto:elecha...@apache.org <mailto:elecha...@apache.org>>> >> > > > >> > > > >> > > >> > >> --------------------------------------------------------------------- >> > > > To unsubscribe, e-mail: >> > dev-unsubscr...@mina.apache.org <mailto: >> dev-unsubscr...@mina.apache.org> >> > > <mailto:dev-unsubscr...@mina.apache.org >> > <mailto:dev-unsubscr...@mina.apache.org>> >> > > > <mailto:dev-unsubscr...@mina.apache.org >> > <mailto:dev-unsubscr...@mina.apache.org> >> > > <mailto:dev-unsubscr...@mina.apache.org >> > <mailto:dev-unsubscr...@mina.apache.org>>> >> > > > For additional commands, e-mail: >> > dev-h...@mina.apache.org <mailto:dev-h...@mina.apache.org> >> > > <mailto:dev-h...@mina.apache.org >> > <mailto:dev-h...@mina.apache.org>> >> > > > <mailto:dev-h...@mina.apache.org >> > <mailto:dev-h...@mina.apache.org> >> > > <mailto:dev-h...@mina.apache.org >> > <mailto:dev-h...@mina.apache.org>>> >> > > > >> > > >> > > -- >> > > *Emmanuel Lécharny* P. +33 (0)6 08 33 32 61 >> > > elecha...@apache.org <mailto:elecha...@apache.org> >> > <mailto:elecha...@apache.org <mailto:elecha...@apache.org>> >> > > >> > >> > -- >> > *Emmanuel Lécharny* P. +33 (0)6 08 33 32 61 >> > elecha...@apache.org <mailto:elecha...@apache.org> >> > >> >> -- >> *Emmanuel Lécharny* P. +33 (0)6 08 33 32 61 >> elecha...@apache.org >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: dev-unsubscr...@mina.apache.org >> For additional commands, e-mail: dev-h...@mina.apache.org >> >> > > -- > ------------------------ > Guillaume Nodet > >