[
https://issues.apache.org/jira/browse/CASSANDRA-5903?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13745320#comment-13745320
]
Vijay commented on CASSANDRA-5903:
----------------------------------
Not sure yet, still trying to figure it out (Since i am more curious)... A
simple test shows it might run out after 17B to 18B keys in a single SSTable
(thats a giant SST) :)
{code}
for (int i = 0; i < 30; i++) {
long items = (i * 1000000000L);
System.out.println("Items: " + items + " byteCount: " +
(OpenBitSet.bits2words(items) * 8));
}
{code}
{noformat}
Items: 0 byteCount: 0
Items: 1000000000 byteCount: 125000000
Items: 2000000000 byteCount: 250000000
Items: 3000000000 byteCount: 375000000
Items: 4000000000 byteCount: 500000000
Items: 5000000000 byteCount: 625000000
Items: 6000000000 byteCount: 750000000
Items: 7000000000 byteCount: 875000000
Items: 8000000000 byteCount: 1000000000
Items: 9000000000 byteCount: 1125000000
Items: 10000000000 byteCount: 1250000000
Items: 11000000000 byteCount: 1375000000
Items: 12000000000 byteCount: 1500000000
Items: 13000000000 byteCount: 1625000000
Items: 14000000000 byteCount: 1750000000
Items: 15000000000 byteCount: 1875000000
Items: 16000000000 byteCount: 2000000000
Items: 17000000000 byteCount: 2125000000
Items: 18000000000 byteCount: -2044967296
Items: 19000000000 byteCount: -1919967296
Items: 20000000000 byteCount: -1794967296
...
{noformat}
> Integer overflow in OffHeapBitSet when bloomfilter > 2GB
> --------------------------------------------------------
>
> Key: CASSANDRA-5903
> URL: https://issues.apache.org/jira/browse/CASSANDRA-5903
> Project: Cassandra
> Issue Type: Bug
> Components: Core
> Reporter: Taylan Develioglu
> Assignee: Vijay
> Fix For: 1.2.9
>
>
> In org.apache.cassandra.utils.obs.OffHeapBitSet.
> byteCount overflows and causes an IllegalArgument exception in
> Memory.allocate when bloomfilter is > 2GB.
> Suggest changing byteCount to long.
> {code:title=OffHeapBitSet.java}
> public OffHeapBitSet(long numBits)
> {
> // OpenBitSet.bits2words calculation is there for backward
> compatibility.
> int byteCount = OpenBitSet.bits2words(numBits) * 8;
> bytes = RefCountedMemory.allocate(byteCount);
> // flush/clear the existing memory.
> clear();
> }
> {code}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira