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

Aleksandr Chesnokov updated IGNITE-27554:
-----------------------------------------
    Description: 
h2. Problem

When a node with a different Ignite version tries to join (e.g. 2.17 to 2.18), 
the discovery handshake may fail before node validation.
We expect a clear message like:
"Remote node rejected due to incompatible version for cluster join"
but it is not printed. Instead, logs show low-level errors like 
StreamCorruptedException, EOFException, or Connection reset, so the real reason 
(version mismatch) is unclear.

The root cause is that the discovery message serialization format changed: 
after IGNITE_HEADER the new protocol writes an extra leading byte (serMode), 
while older nodes do not write it. As a result, the new node cannot even read 
TcpDiscoveryHandshakeRequest and logs:
"Received unexpected byte while reading discovery message: -84"
This message is confusing for support and does not explain what action to take.
h2. Steps to reproduce
 # Build latest version of Ignite. Let's call it new node
 # Build Ignite from commit 354ac793. Let's call it old node
 # Try to connect them

 

  was:
h2. Problem

When a node with a different Ignite version tries to join (e.g. 2.17 to 2.18), 
the discovery handshake may fail before node validation.
We expect a clear message like:
"Remote node rejected due to incompatible version for cluster join"
but it is not printed. Instead, logs show low-level errors like 
StreamCorruptedException, EOFException, or Connection reset, so the real reason 
(version mismatch) is unclear.

The root cause is that the discovery message serialization format changed: 
after IGNITE_HEADER the new protocol writes an extra leading byte (serMode), 
while older nodes do not write it. As a result, the new node cannot even read 
TcpDiscoveryHandshakeRequest and logs:
"Received unexpected byte while reading discovery message: -84"
This message is confusing for support and does not explain what action to take.

 


> Improve discovery handshake diagnostics for incompatible versions
> -----------------------------------------------------------------
>
>                 Key: IGNITE-27554
>                 URL: https://issues.apache.org/jira/browse/IGNITE-27554
>             Project: Ignite
>          Issue Type: Improvement
>            Reporter: Aleksandr Chesnokov
>            Assignee: Aleksandr Chesnokov
>            Priority: Major
>
> h2. Problem
> When a node with a different Ignite version tries to join (e.g. 2.17 to 
> 2.18), the discovery handshake may fail before node validation.
> We expect a clear message like:
> "Remote node rejected due to incompatible version for cluster join"
> but it is not printed. Instead, logs show low-level errors like 
> StreamCorruptedException, EOFException, or Connection reset, so the real 
> reason (version mismatch) is unclear.
> The root cause is that the discovery message serialization format changed: 
> after IGNITE_HEADER the new protocol writes an extra leading byte (serMode), 
> while older nodes do not write it. As a result, the new node cannot even read 
> TcpDiscoveryHandshakeRequest and logs:
> "Received unexpected byte while reading discovery message: -84"
> This message is confusing for support and does not explain what action to 
> take.
> h2. Steps to reproduce
>  # Build latest version of Ignite. Let's call it new node
>  # Build Ignite from commit 354ac793. Let's call it old node
>  # Try to connect them
>  



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

Reply via email to