Details
-
Bug
-
Status: Open
-
Normal
-
Resolution: Unresolved
-
None
-
None
-
Normal
Description
CASSANDRA-7953 can lead to range tombstones not properly being compacted. When trying to upgrade from Cassandra 2.0.X to 2.1.X, running upgradesstables (either via nodetool OR the offline version) does not work, as it crashes with OOM. This essentially means if you are running a version of Cassandra 2.0.X for a period of time where lots of range tombstones have been generated; you will be unable to upgrade to Cassandra 2.1.X following the normal procedures. Hence upgrade from 2.0.X to 2.1.X is essentially broken if you hit CASSANDRA-7953.
I hit this while trying to upgrade to Cassandra 2.1.17.
Offline Version:
- sstableupgrade storagegrid s3_usage_delta
Found 15 sstables that need upgrading.
Upgrading SSTableReader(path='/var/local/cassandra/data/0/storagegrid/s3_usage_delta/storagegrid-s3_usage_delta-jb-20230-Data.db')
ERROR 22:38:24,626 LEAK DETECTED: a reference (org.apache.cassandra.utils.concurrent.Ref$State@6821300e) to class org.apache.cassandra.io.sstable.SSTableReader$InstanceTidier@244363601:/var/local/cassandra/data/0/storagegrid/s3_usage_delta/storagegrid-s3_usage_delta-ka-79531 was not released before the reference was garbage collected
ERROR 22:38:24,631 LEAK DETECTED: a reference (org.apache.cassandra.utils.concurrent.Ref$State@2891457f) to class org.apache.cassandra.io.sstable.SSTableReader$InstanceTidier@1230033823:/var/local/cassandra/data/0/storagegrid/s3_usage_delta/storagegrid-s3_usage_delta-ka-79532 was not released before the reference was garbage collected
Exception in thread "ScheduledTasks:1" Exception in thread "metrics-meter-tick-thread-2" java.lang.OutOfMemoryError: Java heap space
at java.lang.Class.getName0(Native Method)
at java.lang.Class.getName(Class.java:642)
at java.lang.Throwable.toString(Throwable.java:479)
at java.lang.Throwable.<init>(Throwable.java:311)
at java.lang.Exception.<init>(Exception.java:102)
at java.util.concurrent.ExecutionException.<init>(ExecutionException.java:90)
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.util.concurrent.FutureTask.get(FutureTask.java:192)
at org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor.extractThrowable(DebuggableThreadPoolExecutor.java:246)
at org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor.logExceptionsAfterExecute(DebuggableThreadPoolExecutor.java:210)
at org.apache.cassandra.concurrent.DebuggableScheduledThreadPoolExecutor.afterExecute(DebuggableScheduledThreadPoolExecutor.java:89)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1150)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
java.lang.OutOfMemoryError: Java heap space
java.lang.OutOfMemoryError: Java heap space
ERROR 22:41:21,080 Error in ThreadPoolExecutor
java.lang.OutOfMemoryError: Java heap space
ERROR 22:41:21,080 JVM state determined to be unstable. Exiting forcefully due to:
java.lang.OutOfMemoryError: Java heap space
root@DC1-SN-10-224-6-066:/var/local/cassandra/data/0 #