Return-Path: X-Original-To: apmail-activemq-dev-archive@www.apache.org Delivered-To: apmail-activemq-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 6395E113E2 for ; Wed, 6 Aug 2014 14:23:16 +0000 (UTC) Received: (qmail 79773 invoked by uid 500); 6 Aug 2014 14:23:15 -0000 Delivered-To: apmail-activemq-dev-archive@activemq.apache.org Received: (qmail 79701 invoked by uid 500); 6 Aug 2014 14:23:15 -0000 Mailing-List: contact dev-help@activemq.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@activemq.apache.org Delivered-To: mailing list dev@activemq.apache.org Received: (qmail 79597 invoked by uid 99); 6 Aug 2014 14:23:15 -0000 Received: from arcas.apache.org (HELO arcas.apache.org) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 06 Aug 2014 14:23:15 +0000 Date: Wed, 6 Aug 2014 14:23:15 +0000 (UTC) From: "Gary Tully (JIRA)" To: dev@activemq.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Resolved] (AMQ-5016) BitArrayBin doesn't work well with index larger than Integer.MAX_VALUE MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/AMQ-5016?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Gary Tully resolved AMQ-5016. ----------------------------- Resolution: Fixed Assignee: Gary Tully add long field so that existing serialized records can be read. http://git-wip-us.apache.org/repos/asf/activemq/commit/58ae402b > BitArrayBin doesn't work well with index larger than Integer.MAX_VALUE > ---------------------------------------------------------------------- > > Key: AMQ-5016 > URL: https://issues.apache.org/jira/browse/AMQ-5016 > Project: ActiveMQ > Issue Type: Bug > Components: JMS client > Affects Versions: 5.9.0 > Reporter: Dan Yu > Assignee: Gary Tully > Fix For: 5.11.0 > > Attachments: BitArrayBinTest.java > > > In BitArrayBin class, the index's unit type is long. It also has a variable called firstIndex, which store the index where the window starts. And that firstindex's unit is int. If the index is bigger than Integer.MAX_VALUE, setBit() and getBit() starts to return bad value. > The defect causes activemq client to perform badly when receiving message that sequence id is bigger than max interger. It spends most of the time to shift window, and also blocks other consumer threads. Below is the jstack log that shows the problem. > {code} > "ActiveMQ Session Task-869879" prio=10 tid=0x00007f412d6ee000 nid=0x3cbe runnable [0x00007f405b7b6000] > java.lang.Thread.State: RUNNABLE > at java.util.LinkedList.linkLast(LinkedList.java:140) > at java.util.LinkedList.add(LinkedList.java:336) > at org.apache.activemq.util.BitArrayBin.getBitArray(BitArrayBin.java:123) > at org.apache.activemq.util.BitArrayBin.setBit(BitArrayBin.java:59) > at org.apache.activemq.ActiveMQMessage AuditNoSync.isDuplicate(ActiveMQMessageAuditNoSyn c.java:160) > at org.apache.activemq.ActiveMQMessageAudit.isDuplicate(ActiveMQMessageAudit.java:59) > - locked <0x00007f46a0138ab0> (a org.apache.activemq.ActiveMQMessageAudit) > at org.apache.activemq.ActiveMQMessage AuditNoSync.isDuplicate(ActiveMQMessageAuditNoSyn c.java:140) > at org.apache.activemq.ConnectionAudit.isDuplicate(ConnectionAudit.java:52) > - locked <0x00007f4881e6b968> (a org.apache.activemq.ConnectionAudit) > at org.apache.activemq.ActiveMQConnection.isDuplicate(ActiveMQConnection.java:2291) > at org.apache.activemq.ActiveMQMessageConsumer.dispatch(ActiveMQMessageConsumer.java:1223) > - locked <0x00007f45db222fb8> (a java.lang.Object) > at org.apache.activemq.ActiveMQSessionExecutor.dispatch(ActiveMQSessionExecutor.java:134) > at org.apache.activemq.ActiveMQSessionExecutor.iterate(ActiveMQSessionExecutor.java:205) > at org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:127) > at org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:48) > at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) > at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) > at java.lang.Thread.run(Thread.java:722) > {code} -- This message was sent by Atlassian JIRA (v6.2#6252)