activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From wy96f <...@git.apache.org>
Subject [GitHub] activemq-artemis pull request #1851: fix npe bug while getting element in th...
Date Mon, 05 Feb 2018 11:07:40 GMT
GitHub user wy96f opened a pull request:

    https://github.com/apache/activemq-artemis/pull/1851

    fix npe bug while getting element in the process of rehash

    Hi, we found a bug in ConcurrentLongHashMap, as follows:
    
    12:32:31,000 WARN  [org.apache.activemq.artemis.core.replication.ReplicationEndpoint]
295: java.lang.ArrayIndexOutOfBoundsException: 295
            at org.apache.activemq.artemis.utils.collections.ConcurrentLongHashMap$Section.get(ConcurrentLongHashMap.java:230)
[artemis-commons-2.4.0.jar:2.4.0]
            at org.apache.activemq.artemis.utils.collections.ConcurrentLongHashMap.get(ConcurrentLongHashMap.java:117)
[artemis-commons-2.4.0.jar:2.4.0]
            at org.apache.activemq.artemis.core.journal.impl.JournalImpl.appendCommitRecord(JournalImpl.java:1185)
[artemis-journal-2.4.0.jar:2.4.0]
            at org.apache.activemq.artemis.core.journal.impl.JournalBase.appendCommitRecord(JournalBase.java:69)
[artemis-journal-2.4.0.jar:2.4.0]
            at org.apache.activemq.artemis.core.journal.impl.JournalImpl.appendCommitRecord(JournalImpl.java:91)
[artemis-journal-2.4.0.jar:2.4.0]
            at org.apache.activemq.artemis.core.replication.ReplicationEndpoint.handleCommitRollback(ReplicationEndpoint.java:635)
[artemis-server-2.4.0.jar:2.4.0]
            at org.apache.activemq.artemis.core.replication.ReplicationEndpoint.handlePacket(ReplicationEndpoint.java:191)
[artemis-server-2.4.0.jar:2.4.0]
            at org.apache.activemq.artemis.core.protocol.core.impl.ChannelImpl.handlePacket(ChannelImpl.java:638)
[artemis-core-client-2.4.0.jar:2.4.0]
            at org.apache.activemq.artemis.core.protocol.core.impl.RemotingConnectionImpl.doBufferReceived(RemotingConnectionImpl.java:392)
[artemis-core-client-2.4.0.jar:2.4.0]
            at org.apache.activemq.artemis.core.protocol.core.impl.RemotingConnectionImpl.bufferReceived(RemotingConnectionImpl.java:374)
[artemis-core-client-2.4.0.jar:2.4.0]
            at org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl$DelegatingBufferHandler.bufferReceived(ClientSessionFactoryImpl.java:1144)
[artemis-core-client-2.4.0.jar:2.4.0]
            at org.apache.activemq.artemis.core.remoting.impl.netty.ActiveMQChannelHandler.channelRead(ActiveMQChannelHandler.java:68)
[artemis-core-client-2.4.0.jar:2.4.0]
            at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
[netty-all-4.1.16.Final.jar:4.1.16.Final]
            at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
[netty-all-4.1.16.Final.jar:4.1.16.Final]
            at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
[netty-all-4.1.16.Final.jar:4.1.16.Final]
            at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:310)
[netty-all-4.1.16.Final.jar:4.1.16.Final]
            at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:297)
[netty-all-4.1.16.Final.jar:4.1.16.Final]
            at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:413)
[netty-all-4.1.16.Final.jar:4.1.16.Final]
            at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:265)
[netty-all-4.1.16.Final.jar:4.1.16.Final]
            at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
[netty-all-4.1.16.Final.jar:4.1.16.Final]
            at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
[netty-all-4.1.16.Final.jar:4.1.16.Final]
            at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:340)
[netty-all-4.1.16.Final.jar:4.1.16.Final]
            at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1359)
[netty-all-4.1.16.Final.jar:4.1.16.Final]
            at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:362)
[netty-all-4.1.16.Final.jar:4.1.16.Final]
            at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:348)
[netty-all-4.1.16.Final.jar:4.1.16.Final]
            at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:935)
[netty-all-4.1.16.Final.jar:4.1.16.Final]
            at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:797)
[netty-all-4.1.16.Final.jar:4.1.16.Final]
            at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:404)
[netty-all-4.1.16.Final.jar:4.1.16.Final]
            at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:304) [netty-all-4.1.16.Final.jar:4.1.16.Final]
            at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:858)
[netty-all-4.1.16.Final.jar:4.1.16.Final]
            at java.lang.Thread.run(Thread.java:745) [rt.jar:1.8.0_121]
    
    The get thread saw doubled capacity first and at the moment values had not been assigned
new values, so npe occurred. We should assign capacity after the keys and values. The volatile
modifier would be needed to generate store barrier to make sure keys/values data are visible
to other threads before the capacity is.

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/wy96f/activemq-artemis concurrent_hash_long_map

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/activemq-artemis/pull/1851.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #1851
    
----
commit ca6548d1739d4dba1e7114742ddf06a2a84aae3a
Author: yang wei <wy96fyw@...>
Date:   2018-02-05T10:12:18Z

    fix npe bug while getting element in the process of rehash

----


---

Mime
View raw message