[
https://issues.apache.org/jira/browse/CASSANDRA-21551?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18102909#comment-18102909
]
David Capwell commented on CASSANDRA-21551:
-------------------------------------------
+1 from Alan / Scott in GH; starting merge
> Accord: DefaultLocalListeners.remove adds nulls which then leads to NPE when
> .clear gets called
> -----------------------------------------------------------------------------------------------
>
> Key: CASSANDRA-21551
> URL: https://issues.apache.org/jira/browse/CASSANDRA-21551
> Project: Apache Cassandra
> Issue Type: Bug
> Components: Accord
> Reporter: David Capwell
> Assignee: David Capwell
> Priority: Normal
> Fix For: NA
>
> Time Spent: 1h
> Remaining Estimate: 0h
>
> This was found by Cassandra test
> org.apache.cassandra.service.accord.journal.AccordJournalBurnTest.testOne
> {code}
> Failed on seed 3395908238430601
> accord.burn.SimulationException: Failed on seed 3395908238430601
> Caused by: java.lang.NullPointerException
> at
> accord.impl.DefaultLocalListeners.lambda$clear$4(DefaultLocalListeners.java:562)
> at
> java.base/java.util.concurrent.ConcurrentHashMap.forEach(ConcurrentHashMap.java:1603)
> at
> accord.impl.DefaultLocalListeners.clear(DefaultLocalListeners.java:556)
> at
> accord.local.CommandStore.unsafeClearForTesting(CommandStore.java:214)
> at
> accord.impl.InMemoryCommandStore.unsafeClearForTesting(InMemoryCommandStore.java:1227)
> at accord.impl.basic.Cluster.lambda$run$27(Cluster.java:774)
> at
> accord.impl.basic.RecurringPendingRunnable.run(RecurringPendingRunnable.java:57)
> at accord.impl.basic.Cluster.processNext(Cluster.java:339)
> at accord.impl.basic.Cluster.processPending(Cluster.java:291)
> at accord.impl.basic.Cluster.run(Cluster.java:836)
> at accord.burn.BurnTestBase.burn(BurnTestBase.java:581)
> at
> org.apache.cassandra.service.accord.journal.AccordJournalBurnTest.testOne(AccordJournalBurnTest.java:191)
> at
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> {code}
> The root cause is that when the listeners are removed we add a null in its
> place, but the clear method doesn’t handle that and NPE
> Code for remove:
> {code}
> listeners[index] = null;
> {code}
> Code for clear:
> {code}
> listeners.listeners[i].index = -1;
> {code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]