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

Ilya Shishkov updated IGNITE-27722:
-----------------------------------
    Description: 
Initial optimization was introduced in IGNITE-3060. 
After refatoring it was removed in: 

  was:
Tcp discovery client worker may fire an assertion in {{DirectMessageState}}. 
See the stacktrace attached.

*Update:*
Attached patch [^Reproducer.patch] demonstrates, that {{TcpDicoveryIoSession}}, 
which is thread unsafe, is concurrently used from different threads (at least 
{{#serializeMessage}}).
In order to reproduce just run {{IgniteClientReconnectCollectionsTest}}.

{code:title=RingMessageWorker stack}
        at 
org.apache.ignite.spi.discovery.tcp.TcpDiscoveryIoSession.serializeMessage(TcpDiscoveryIoSession.java:297)
        at 
org.apache.ignite.spi.discovery.tcp.ServerImpl$RingMessageWorker.sendMessageToClients(ServerImpl.java:3393)
        at 
org.apache.ignite.spi.discovery.tcp.ServerImpl$RingMessageWorker.sendMessageAcrossRing(ServerImpl.java:3449)
        at 
org.apache.ignite.spi.discovery.tcp.ServerImpl$RingMessageWorker.processNodeAddFinishedMessage(ServerImpl.java:5423)
        at 
org.apache.ignite.spi.discovery.tcp.ServerImpl$RingMessageWorker.processNodeAddedMessage(ServerImpl.java:5019)
        at 
org.apache.ignite.spi.discovery.tcp.ServerImpl$RingMessageWorker.processMessage(ServerImpl.java:3287)
        at 
org.apache.ignite.spi.discovery.tcp.ServerImpl$RingMessageWorker.processMessage(ServerImpl.java:2959)
{code}

{code:title=ClientMessageWorker stack}
        at 
org.apache.ignite.spi.discovery.tcp.TcpDiscoveryIoSession.serializeMessage(TcpDiscoveryIoSession.java:300)
        at 
org.apache.ignite.spi.discovery.tcp.ServerImpl$ClientMessageWorker.processMessage(ServerImpl.java:7866)
        at 
org.apache.ignite.spi.discovery.tcp.ServerImpl$ClientMessageWorker.processMessage(ServerImpl.java:7766)
        at 
org.apache.ignite.spi.discovery.tcp.ServerImpl$MessageWorker.body(ServerImpl.java:8163)
        at 
org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:125)
        at 
org.apache.ignite.spi.discovery.tcp.ServerImpl$MessageWorkerThread.body(ServerImpl.java:8094)
        at org.apache.ignite.spi.IgniteSpiThread.run(IgniteSpiThread.java:58)]]
{code}

Problem is at least here [1]. Such calls should become thread-safe.

Links:
# 
https://github.com/apache/ignite/blob/38188bb3e7867c695c58f27f9d00a3af81ba78cc/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ServerImpl.java#L3393


> Investigate duplicated serialization in RingMessageWorker#sendMessageToClients
> ------------------------------------------------------------------------------
>
>                 Key: IGNITE-27722
>                 URL: https://issues.apache.org/jira/browse/IGNITE-27722
>             Project: Ignite
>          Issue Type: Task
>    Affects Versions: 2.18
>            Reporter: Ilya Shishkov
>            Assignee: Ilya Shishkov
>            Priority: Critical
>              Labels: IEP-132, ise
>             Fix For: 2.18
>
>
> Initial optimization was introduced in IGNITE-3060. 
> After refatoring it was removed in: 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to