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

Sergey Chugunov updated IGNITE-8897:
------------------------------------
    Description: 
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:
{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.

  was:
There is no array index boundary check in code verifying BaselineHistory on new 
node join so it may end up with ArrayIndexOutOfBoundsException.

We need to check bltHistory size and if node joins with incorrect bltHistory we 
should refuse the join.


> 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
>    Affects Versions: 2.5
>            Reporter: Sergey Chugunov
>            Assignee: Sergey Chugunov
>            Priority: Critical
>             Fix For: 2.7
>
>
> 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:
> {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)

Reply via email to