[jira] [Commented] (AMQ-6431) BitArrayBin doesn't work well with index larger than Integer.MAX_VALUE
[ https://issues.apache.org/jira/browse/AMQ-6431?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15517197#comment-15517197 ] ASF subversion and git services commented on AMQ-6431: -- Commit bf7a19eead5ed9fac08f4220a3ec82dc6abdb7e3 in activemq's branch refs/heads/activemq-5.14.x from [~cshannon] [ https://git-wip-us.apache.org/repos/asf?p=activemq.git;h=bf7a19e ] https://issues.apache.org/jira/browse/AMQ-6431 Fixing BitArrayBin to not overflow in certain cases with numbers larger than Int max (cherry picked from commit 09456480b838efd97297679840d33f7949449e21) > BitArrayBin doesn't work well with index larger than Integer.MAX_VALUE > -- > > Key: AMQ-6431 > URL: https://issues.apache.org/jira/browse/AMQ-6431 > Project: ActiveMQ > Issue Type: Bug > Components: JMS client >Affects Versions: 5.14.0 >Reporter: 王庆焕 >Assignee: Christopher L. Shannon > Attachments: BitArrayBinTest.java > > > I have a problem with "messageid deplicate". Then I found it's a > bug(AMQ-5016) in activemq5.9.0 , so I download the activemq5.14.0. I run the > BitArrayBinTest.java: > {code} > public static void main(String[] args) { >BitArrayBin toTest = new BitArrayBin(1024); >long largeNum = Integer.MAX_VALUE*2L +100L; >toTest.setBit(largeNum, true); >System.out.println(toTest.getBit(largeNum)); > } > {code} > I expect the results to be "true",but the result of running the above code > is "false". > I debug the code,and I found a method 'getBin(long index)' in class > BitArrayBin. Code as follows: > {code} > private int getBin(long index) { > int answer = 0; > if (longFirstIndex < 0) { > longFirstIndex = (int) (index - (index % BitArray.LONG_SIZE)); > } else if (longFirstIndex >= 0) { > answer = (int)((index - longFirstIndex) / BitArray.LONG_SIZE); > } > return answer; > } > {code} > I think the problem is in code ‘longFirstIndex = (int) (index - (index % > BitArray.LONG_SIZE))‘. When index is larger than Integer.MAX_VALUE, > longFirstIndex will be negative. I think this line of code should be > modified to ‘longFirstIndex = (long) (index - (index % BitArray.LONG_SIZE));’ > > -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (AMQ-6431) BitArrayBin doesn't work well with index larger than Integer.MAX_VALUE
[ https://issues.apache.org/jira/browse/AMQ-6431?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15517196#comment-15517196 ] ASF subversion and git services commented on AMQ-6431: -- Commit 09456480b838efd97297679840d33f7949449e21 in activemq's branch refs/heads/master from [~cshannon] [ https://git-wip-us.apache.org/repos/asf?p=activemq.git;h=0945648 ] https://issues.apache.org/jira/browse/AMQ-6431 Fixing BitArrayBin to not overflow in certain cases with numbers larger than Int max > BitArrayBin doesn't work well with index larger than Integer.MAX_VALUE > -- > > Key: AMQ-6431 > URL: https://issues.apache.org/jira/browse/AMQ-6431 > Project: ActiveMQ > Issue Type: Bug > Components: JMS client >Affects Versions: 5.14.0 >Reporter: 王庆焕 >Assignee: Christopher L. Shannon > Attachments: BitArrayBinTest.java > > > I have a problem with "messageid deplicate". Then I found it's a > bug(AMQ-5016) in activemq5.9.0 , so I download the activemq5.14.0. I run the > BitArrayBinTest.java: > {code} > public static void main(String[] args) { >BitArrayBin toTest = new BitArrayBin(1024); >long largeNum = Integer.MAX_VALUE*2L +100L; >toTest.setBit(largeNum, true); >System.out.println(toTest.getBit(largeNum)); > } > {code} > I expect the results to be "true",but the result of running the above code > is "false". > I debug the code,and I found a method 'getBin(long index)' in class > BitArrayBin. Code as follows: > {code} > private int getBin(long index) { > int answer = 0; > if (longFirstIndex < 0) { > longFirstIndex = (int) (index - (index % BitArray.LONG_SIZE)); > } else if (longFirstIndex >= 0) { > answer = (int)((index - longFirstIndex) / BitArray.LONG_SIZE); > } > return answer; > } > {code} > I think the problem is in code ‘longFirstIndex = (int) (index - (index % > BitArray.LONG_SIZE))‘. When index is larger than Integer.MAX_VALUE, > longFirstIndex will be negative. I think this line of code should be > modified to ‘longFirstIndex = (long) (index - (index % BitArray.LONG_SIZE));’ > > -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (AMQ-6431) BitArrayBin doesn't work well with index larger than Integer.MAX_VALUE
[ https://issues.apache.org/jira/browse/AMQ-6431?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15496765#comment-15496765 ] Timothy Bish commented on AMQ-6431: --- Suggest you add to or create a unit tests for this class that can demonstrate the issue. > BitArrayBin doesn't work well with index larger than Integer.MAX_VALUE > -- > > Key: AMQ-6431 > URL: https://issues.apache.org/jira/browse/AMQ-6431 > Project: ActiveMQ > Issue Type: Bug > Components: JMS client >Affects Versions: 5.14.0 >Reporter: 王庆焕 > > I have a problem with "messageid deplicate". Then I found it's a > bug(AMQ-5016) in activemq5.9.0 , so I download the activemq5.14.0. I run the > BitArrayBinTest.java: > {code} > public static void main(String[] args) { >BitArrayBin toTest = new BitArrayBin(1024); >long largeNum = Integer.MAX_VALUE*2L +100L; >toTest.setBit(largeNum, true); >System.out.println(toTest.getBit(largeNum)); > } > {code} > I expect the results to be "true",but the result of running the above code > is "false". > I debug the code,and I found a method 'getBin(long index)' in class > BitArrayBin. Code as follows: > {code} > private int getBin(long index) { > int answer = 0; > if (longFirstIndex < 0) { > longFirstIndex = (int) (index - (index % BitArray.LONG_SIZE)); > } else if (longFirstIndex >= 0) { > answer = (int)((index - longFirstIndex) / BitArray.LONG_SIZE); > } > return answer; > } > {code} > I think the problem is in code ‘longFirstIndex = (int) (index - (index % > BitArray.LONG_SIZE))‘. When index is larger than Integer.MAX_VALUE, > longFirstIndex will be negative. I think this line of code should be > modified to ‘longFirstIndex = (long) (index - (index % BitArray.LONG_SIZE));’ > > -- This message was sent by Atlassian JIRA (v6.3.4#6332)