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

Evgeny Stanilovsky updated IGNITE-18072:
----------------------------------------
    Fix Version/s: 3.2
                       (was: 3.1)

> Help diagnose situations when a sender sends an incomplete message
> ------------------------------------------------------------------
>
>                 Key: IGNITE-18072
>                 URL: https://issues.apache.org/jira/browse/IGNITE-18072
>             Project: Ignite
>          Issue Type: Improvement
>          Components: networking
>            Reporter: Roman Puchkovskiy
>            Assignee: Roman Puchkovskiy
>            Priority: Major
>              Labels: ignite-3
>             Fix For: 3.2
>
>
> The following scenario is possible.
>  # Due to a misconfiguration, some required serializer is not registered
>  # A message starts to be written, namely its groupId and messageTypeId are 
> written
>  # Now we try to write the message (probably we write some part of it), but 
> this fails with an exception due to a missing serializer. So the message is 
> only partly written
>  # Next message is written successfully
>  # The receiver tries to read first message. It has no idea that only part of 
> it is written, so it also consumes the beginning of the next message. The 
> first message is read incorrectly, but we don't know this yet
>  # The receiver tries to read second message (starting somewhere in the 
> middle of its bytes). This usually causes an assertion of an exception due to 
> a missing groupId/messageTypeId, or, if we have (bad) luck, this can lead to 
> reading a wrong message (that was never sent)
>  # Sooner or later, an exception happens on the receiving side, but its 
> message will be misleading
> This might make diagnosing 'what happened' by looking at the receiver's logs 
> problematic. We could add an additional step: before writing the message 
> groupId+messageTypeId, visit the message (including its parts) and check that 
> all serializers are registered. If not, write some special marker (like short 
> -1) followed by groupId+messageTypeId and nothing more for this message (then 
> throw an exception). TheĀ  receiving side will be able to interpret this as 
> 'no serializer' situation and log an appropriate diagnostic message before 
> throing an exception.
> This situation mostly happens at development time, so we could only enable 
> this additional screening step when we are in the development mode (for 
> example, when assertions are enabled).
> This could also relate to rolling upgrades.



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

Reply via email to