Details
-
Bug
-
Status: Resolved
-
Normal
-
Resolution: Fixed
-
None
-
Correctness - Recoverable Corruption / Loss
-
Normal
-
Normal
-
Performance Regression Test
-
All
-
None
-
Description
Since CASSANDRA-9067, Cassandra will use MemoryOutputStream to reconstruct BF Memory without re-ordering bytes, see OffsetBitSet#deserialize. But MemoryOutputStream use INT to track position and will overflow when BF size exceeds 2GB.
stacktrace
error: Illegal bounds [-2147483648..-2147483584); size: 4588588016 -- StackTrace -- java.lang.AssertionError: Illegal bounds [-2147483648..-2147483584); size: 4588588016 at org.apache.cassandra.io.util.Memory.checkBounds(Memory.java:185) at org.apache.cassandra.io.util.Memory.setBytes(Memory.java:138) at org.apache.cassandra.io.util.MemoryOutputStream.write(MemoryOutputStream.java:45)
Attachments
Issue Links
- is related to
-
CASSANDRA-9067 BloomFilter serialization format should not change byte ordering
- Resolved