You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Anton Kalashnikov (JIRA)" <ji...@apache.org> on 2018/07/16 11:45:00 UTC

[jira] [Commented] (IGNITE-8897) Node with longer BaselineHistory joining the cluster causes cluster stopping

    [ https://issues.apache.org/jira/browse/IGNITE-8897?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16545101#comment-16545101 ] 

Anton Kalashnikov commented on IGNITE-8897:
-------------------------------------------

Looks good for me. Tests also looks permissible. It can be merged.

> Node with longer BaselineHistory joining the cluster causes cluster stopping
> ----------------------------------------------------------------------------
>
>                 Key: IGNITE-8897
>                 URL: https://issues.apache.org/jira/browse/IGNITE-8897
>             Project: Ignite
>          Issue Type: Bug
>          Components: persistence
>    Affects Versions: 2.5
>            Reporter: Sergey Chugunov
>            Assignee: Sergey Chugunov
>            Priority: Critical
>             Fix For: 2.7
>
>   Original Estimate: 72h
>  Remaining Estimate: 72h
>
> There is no array index boundary check in code verifying BaselineHistory on new node join so it may end up with ArrayIndexOutOfBoundsException, exception stack trace looks like this (failure handler is configured):
> {noformat}
> [org.apache.ignite.Ignite] Critical system error detected. Will be handled accordingly to configured handler [hnd=class o.a.i.failure.StopNodeOrHaltFailureHandler, failureCtx=FailureContext [type=SYSTEM_WORKER_TERMINATION, err=java.lang.IndexOutOfBoundsException: Index: 17, Size: 17]]
> java.lang.IndexOutOfBoundsException: Index: 17, Size: 17
>         at java.util.ArrayList.rangeCheck(ArrayList.java:653)
>         at java.util.ArrayList.get(ArrayList.java:429)
>         at org.apache.ignite.internal.processors.cluster.BaselineTopologyHistory.isCompatibleWith(BaselineTopologyHistory.java:97)
>         at org.apache.ignite.internal.processors.cluster.GridClusterStateProcessor.validateNode(GridClusterStateProcessor.java:981)
>         at org.apache.ignite.internal.managers.GridManagerAdapter$1.validateNode(GridManagerAdapter.java:566)
>         at org.apache.ignite.spi.discovery.tcp.ServerImpl$RingMessageWorker.processJoinRequestMessage(ServerImpl.java:3629)
>         at org.apache.ignite.spi.discovery.tcp.ServerImpl$RingMessageWorker.processMessage(ServerImpl.java:2736)
>         at org.apache.ignite.spi.discovery.tcp.ServerImpl$RingMessageWorker.processMessage(ServerImpl.java:2536)
>         at org.apache.ignite.spi.discovery.tcp.ServerImpl$MessageWorkerAdapter.body(ServerImpl.java:6775)
>         at org.apache.ignite.spi.discovery.tcp.ServerImpl$RingMessageWorker.body(ServerImpl.java:2621)
>         at org.apache.ignite.spi.IgniteSpiThread.run(IgniteSpiThread.java:62)
> {noformat}
> We need to check bltHistory size and if node joins with incorrect bltHistory we should refuse the join.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)