[ https://issues.apache.org/jira/browse/ARTEMIS-4734?focusedWorklogId=916466&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-916466 ]
ASF GitHub Bot logged work on ARTEMIS-4734: ------------------------------------------- Author: ASF GitHub Bot Created on: 25/Apr/24 17:18 Start Date: 25/Apr/24 17:18 Worklog Time Spent: 10m Work Description: jbertram merged PR #4900: URL: https://github.com/apache/activemq-artemis/pull/4900 Issue Time Tracking ------------------- Worklog Id: (was: 916466) Time Spent: 20m (was: 10m) > Null dereferencing in ReplicationManager.java > --------------------------------------------- > > Key: ARTEMIS-4734 > URL: https://issues.apache.org/jira/browse/ARTEMIS-4734 > Project: ActiveMQ Artemis > Issue Type: Bug > Reporter: Galkin Alexey > Assignee: Justin Bertram > Priority: Major > Time Spent: 20m > Remaining Estimate: 0h > > {{repliToken}} can be 0. > In > {{org.apache.activemq.artemis.core.replication.ReplicationManager#sendReplicatePacket(org.apache.activemq.artemis.core.protocol.core.Packet, > boolean, org.apache.activemq.artemis.utils.ReusableLatch)}} the > {{repliToken}} is initialized with the value returned by ([line > 464|https://github.com/apache/activemq-artemis/blob/main/artemis-server/src/main/java/org/apache/activemq/artemis/core/replication/ReplicationManager.java]) > {{OperationContextImpl.getContext(ioExecutorFactory)}}, i.e.: > {code:java} > final OperationContext repliToken = > OperationContextImpl.getContext(ioExecutorFactory);{code} > Inside this method, a call is made to > {{OperationContextImpl.threadLocalContext.get()}}([line > 61|https://github.com/apache/activemq-artemis/blob/main/artemis-server/src/main/java/org/apache/activemq/artemis/core/persistence/impl/journal/OperationContextImpl.java]), > which returns the value from the thread that was set earlier. If no value > was set in the stream, then token will be {{null}}. > {code:java} > OperationContext token = OperationContextImpl.threadLocalContext.get();{code} > If {{ioExecutorFactory}} is {{null}} and there is no value set in the thread, > then the {{repliToken}} will remain {{null}} because the backing > {{getContext()}} method also returns {{null}} in this case. > So {{repliToken}} can be 0 if {{ioExecutorFactory}} is {{null}} and there is > no value set in the thread. > Found by Linux Verification Center (portal.linuxtesting.ru) with SVACE. > Author Alexey Galkin. > > -- This message was sent by Atlassian Jira (v8.20.10#820010)