Gary… yep!  Countdown latch would od the trick for that.  I use that in all my 
thread based tests.

Jeff

> On Oct 13, 2024, at 6:10 AM, Gary Gregory <garydgreg...@gmail.com> wrote:
> 
> Great analysis, thank you.
> 
> Could the test be better synchronized using a count down latch?
> 
> Gary
> 
> On Sun, Oct 13, 2024, 1:09 AM Emmanuel Lécharny <elecha...@gmail.com> wrote:
> 
>> AFAIU, when you fetch an ephemeral port with a new ServerSocket(0), what
>> happens is that the address:port is in TIME_WAIT after the socket
>> closure, but as it's also using SO_REUSEADDR, the process can use it,
>> which guarantees it's available, and no other process can use it.
>> 
>> You just need to be sure no other test is going to call the
>> AvailablePortFinder.getNextAvailable() method.
>> 
>> So I retract what I said about the lock being caused by the wrong port
>> being used.
>> 
>> 
>> I analysed further the test and the Mina code, and I found there is a
>> race condition when using the read() command:
>> 
>> - On one thread, we do write a message when the session is opened
>> - On the other thread we set the session configuration UseReadOperation
>> flag to true, then do a read.
>> 
>> 
>> What happens - and I can reproduce the lock in debugging mode easily -
>> is that the read is executed too late, the message being already
>> propagated *before* the check for the UseReadOperation flag is switched
>> to 'true', so when read() is called, there is nothing to be read.
>> 
>> I can also reproduce the lock 100% by adding a Thread.sleep(10) before
>> setting the session configuration to accept read operation:
>> 
>>         try {
>>             IoConnector connector = new NioSocketConnector();
>>             connector.setHandler(new IoHandlerAdapter());
>>             ConnectFuture connectFuture = connector.connect(new
>> InetSocketAddress("localhost", port));
>>             connectFuture.awaitUninterruptibly();
>> 
>>             if (connectFuture.getException() != null) {
>>                 throw connectFuture.getException();
>>             }
>> 
>>             Thread.sleep( 10 );
>> 
>> connectFuture.getSession().getConfig().setUseReadOperation(true);
>> ...
>> 
>> 
>> To get it working with the sleep(10), it's enough to add a
>> Thread.sleep(11) in the sessionOpened handler method:
>> 
>>             @Override
>>             public void sessionOpened(IoSession session) throws Exception
>> {
>>                 Thread.sleep( 11 );
>> ...
>> 
>> Bottom line, the test is flaky. We should never expect a read to succeed
>> when the data being written are pushed by the sessionConnected()
>> handler's method.
>> There is no way we can get this fixed in MINA core code, because the
>> session only exists when it's opened, so too late for a configuration to
>> be injected in time - unless we are lucky - for it to be taken in
>> consideration when trying to do a read() on the client side.
>> 
>> In other words, this feature is badly designed. We should either
>> configure it when we create the server, so that it's available when the
>> session is created, or expect the user not to write anything in the
>> sessionOpened/sessionCreated handler's methods and assume that it will
>> be available on the client immediately...
>> 
>> I'll create a ticket for that issue. In the mean time, I don't think
>> it's a blocker for a release, because it's also present in every version
>> of MINA :/
>> 
>> 
>> On 12/10/2024 22:36, Gary Gregory wrote:
>>> 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
>>> <mailto:gno...@apache.org>> wrote:
>>> 
>>> 
>>> 
>>>    Le sam. 12 oct. 2024 à 06:24, Emmanuel Lécharny <elecha...@gmail.com
>>>    <mailto: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>
>>>> <mailto: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>>
>>>>> <mailto: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>>>
>>>>>> <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 <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>>>
>> <
>> 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>>>
>> <
>> 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>>> <
>> 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>>> <
>> 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>>>
>>>>>> 
>>>>      <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>>>
>>>>>> 
>>>> 
>>>          <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>>>
>>>>>    <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
>>>        <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>>>
>>>>>>    <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
>>>        <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>>>
>>>>>>    <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
>>>        <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>>
>>>>    <mailto: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>
>>>        <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>
>>> 
>>> 
>> ---------------------------------------------------------------------
>>>        To unsubscribe, e-mail: 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>
>>> 
>>> 
>>> 
>>>    --
>>>    ------------------------
>>>    Guillaume Nodet
>>> 
>> 
>> --
>> *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

Reply via email to