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

[jira] [Updated] (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:all-tabpanel ]

Sergey Chugunov updated IGNITE-8897:
------------------------------------
    Remaining Estimate: 72h
     Original Estimate: 72h

> 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)