Vyacheslav Koptilin created IGNITE-12621:
--------------------------------------------

             Summary: Node leave may cause NullPointerException during IO 
message processing if security is enabled
                 Key: IGNITE-12621
                 URL: https://issues.apache.org/jira/browse/IGNITE-12621
             Project: Ignite
          Issue Type: Bug
            Reporter: Vyacheslav Koptilin
            Assignee: Vyacheslav Koptilin
             Fix For: 2.9


In case the node will receive IO message from a dead node *after* receiving 
discovery message about node fail, {{ctx.discovery().node(uuid)}} will return 
{{null}}, which in turn will cause {{NullPointerException}}.
We can fix it by peeking disco cache history for retrieving attributes of the 
dead node.

See:
{code}
    /** {@inheritDoc} */
    @Override public OperationSecurityContext withContext(UUID nodeId) {
        return withContext(
            secCtxs.computeIfAbsent(nodeId,
                uuid -> nodeSecurityContext(
                    marsh, U.resolveClassLoader(ctx.config()), 
ctx.discovery().node(uuid)
                )
            )
        );
    }
{code}


{noformat}
Caused by: java.lang.NullPointerException
        at 
org.apache.ignite.internal.processors.security.SecurityUtils.nodeSecurityContext(SecurityUtils.java:135)
        at 
org.apache.ignite.internal.processors.security.IgniteSecurityProcessor.lambda$withContext$0(IgniteSecurityProcessor.java:112)
        at 
java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1660)
        at 
org.apache.ignite.internal.processors.security.IgniteSecurityProcessor.withContext(IgniteSecurityProcessor.java:111)
{noformat}






--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to