You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Vyacheslav Koptilin (Jira)" <ji...@apache.org> on 2022/02/27 18:52:00 UTC

[jira] [Resolved] (IGNITE-16585) NPE during exception handling in DelegatingStateMachine

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

Vyacheslav Koptilin resolved IGNITE-16585.
------------------------------------------
    Resolution: Duplicate

The fix is already available under IGNITE-16010

> NPE during exception handling in DelegatingStateMachine
> -------------------------------------------------------
>
>                 Key: IGNITE-16585
>                 URL: https://issues.apache.org/jira/browse/IGNITE-16585
>             Project: Ignite
>          Issue Type: Bug
>            Reporter: Konstantin Orlov
>            Priority: Major
>              Labels: ignite-3
>
> Exception handling in {{org.apache.ignite.internal.raft.server.impl.JraftServerImpl.DelegatingStateMachine#onApply}} can't handle an exceptions witout a message. The problem is caused by constructor method of the {{org.apache.ignite.raft.jraft.Status}} class which uses a passed message as a template and tries to render it without any null checking. This results in another NPE (stacktrace is shown below) that hides the original one.
> {code:java}
> 2022-02-18 17:45:26:311 +0300 [ERROR][%ItIndexDdlTest_null_2%JRaft-FSMCaller-Disruptor-_stripe_19-0][StripedDisruptor] Handle disruptor event error [name=%ItIndexDdlTest_null_2%JRaft-FSMCaller-Disruptor-, event=org.apache.ignite.raft.jraft.core.FSMCallerImpl$ApplyTask@72ea5694, hasHandler=false]
> java.lang.NullPointerException
> 	at java.base/java.util.regex.Matcher.getTextLength(Matcher.java:1770)
> 	at java.base/java.util.regex.Matcher.reset(Matcher.java:416)
> 	at java.base/java.util.regex.Matcher.<init>(Matcher.java:253)
> 	at java.base/java.util.regex.Pattern.matcher(Pattern.java:1133)
> 	at java.base/java.util.Formatter.parse(Formatter.java:2700)
> 	at java.base/java.util.Formatter.format(Formatter.java:2655)
> 	at java.base/java.util.Formatter.format(Formatter.java:2609)
> 	at java.base/java.lang.String.format(String.java:2897)
> 	at org.apache.ignite.raft.jraft.Status.<init>(Status.java:108)
> 	at org.apache.ignite.internal.raft.server.impl.JraftServerImpl$DelegatingStateMachine.onApply(JraftServerImpl.java:445)
> 	at org.apache.ignite.raft.jraft.core.FSMCallerImpl.doApplyTasks(FSMCallerImpl.java:539)
> 	at org.apache.ignite.raft.jraft.core.FSMCallerImpl.doCommitted(FSMCallerImpl.java:507)
> 	at org.apache.ignite.raft.jraft.core.FSMCallerImpl.runApplyTask(FSMCallerImpl.java:437)
> 	at org.apache.ignite.raft.jraft.core.FSMCallerImpl$ApplyTaskHandler.onEvent(FSMCallerImpl.java:134)
> 	at org.apache.ignite.raft.jraft.core.FSMCallerImpl$ApplyTaskHandler.onEvent(FSMCallerImpl.java:128)
> 	at org.apache.ignite.raft.jraft.disruptor.StripedDisruptor$StripeEntryHandler.onEvent(StripedDisruptor.java:215)
> 	at org.apache.ignite.raft.jraft.disruptor.StripedDisruptor$StripeEntryHandler.onEvent(StripedDisruptor.java:179)
> 	at com.lmax.disruptor.BatchEventProcessor.run(BatchEventProcessor.java:137)
> 	at java.base/java.lang.Thread.run(Thread.java:834)
> {code}



--
This message was sent by Atlassian Jira
(v8.20.1#820001)