[jira] [Commented] (CASSANDRA-4462) upgradesstables strips active data from sstables

2012-07-27 Thread Sylvain Lebresne (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-4462?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13423749#comment-13423749
 ] 

Sylvain Lebresne commented on CASSANDRA-4462:
-

bq. I'm not really convinced that GC_ALL and NO_GC are improvements since we 
don't really get any extra typesafety from it

The goal is not really to gain type safety, but to avoid having to take the few 
seconds to think about which of MIN_VALUE or MAX_VALUE means to not GC anything 
or conversely to GC everything. At least I have a tendency of screwing that up 
as showed by this issue, and I think having more explicit and readable constant 
names might avoid that kind of mistake in the future (again, at least for me). 
Anyway, I've committed as is, but if you really don't like, feel free to ninja 
edit it.

 upgradesstables strips active data from sstables
 

 Key: CASSANDRA-4462
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4462
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Affects Versions: 1.0.4
 Environment: Ubuntu 11.04 64-bit
Reporter: Mike Heffner
Assignee: Sylvain Lebresne
 Fix For: 1.0.11, 1.1.3

 Attachments: 4462.txt


 From the discussion here: 
 http://mail-archives.apache.org/mod_mbox/cassandra-user/201207.mbox/%3CCAOac0GCtyDqS6ocuHOuQqre4re5wKj3o-ZpUZGkGsjCHzDVbTA%40mail.gmail.com%3E
 We are trying to migrate a 0.8.8 cluster to 1.1.2 by migrating the sstables 
 from the 0.8.8 ring to a parallel 1.1.2 ring. However, every time we run the 
 `nodetool upgradesstables` step we find it removes active data from our CFs 
 -- leading to lost data in our application.
 The steps we took were:
 1. Bring up a 1.1.2 ring in the same AZ/data center configuration with
 tokens matching the corresponding nodes in the 0.8.8 ring.
 2. Create the same keyspace on 1.1.2.
 3. Create each CF in the keyspace on 1.1.2.
 4. Flush each node of the 0.8.8 ring.
 5. Rsync each non-compacted sstable from 0.8.8 to the corresponding node in
 1.1.2.
 6. Move each 0.8.8 sstable into the 1.1.2 directory structure by renaming the 
 file to the  /cassandra/data/keyspace/cf/keyspace-cf... format. For 
 example, for the keyspace Metrics and CF epochs_60 we get:
 cassandra/data/Metrics/epochs_60/Metrics-epochs_60-g-941-Data.db.
 7. On each 1.1.2 node run `nodetool -h localhost refresh Metrics CF` for 
 each CF in the keyspace. We notice that storage load jumps accordingly.
 8. On each 1.1.2 node run `nodetool -h localhost upgradesstables`.
 Afterwards we would test the validity of the data by comparing it with data 
 from the original 0.8.8 ring. After an upgradesstables command the data was 
 always incorrect.
 With further testing we found that we could successfully use scrub to convert 
 our sstables without data loss. However, any invocation of upgradesstables 
 causes active data to be culled from the sstables:
  INFO [CompactionExecutor:4] 2012-07-24 04:27:36,837 CompactionTask.java 
 (line 109) Compacting 
 [SSTableReader(path='/raid0/cassandra/data/Metrics/metrics_900/Metrics-metrics_900-hd-51-Data.db')]
  INFO [CompactionExecutor:4] 2012-07-24 04:27:51,090 CompactionTask.java 
 (line 221) Compacted to 
 [/raid0/cassandra/data/Metrics/metrics_900/Metrics-metrics_900-hd-58-Data.db,].
   60,449,155 to 2,578,102 (~4% of original) bytes for 4,002 keys at 
 0.172562MB/s.  Time: 14,248ms.
 These are the steps we've tried:
 WORKS refresh - scrub
 WORKS refresh - scrub - major compaction
 WORKS refresh - scrub - cleanup
 WORKS refresh - scrub - repair
 FAILS refresh - upgradesstables
 FAILS refresh - scrub - upgradesstables
 FAILS refresh - scrub - repair - upgradesstables
 FAILS refresh - scrub - major compaction - upgradesstables
 We have fewer than 143 million row keys in the CFs we're testing and none
 of the *-Filter.db files are  10MB, so I don't believe this is our
 problem: https://issues.apache.org/jira/browse/CASSANDRA-3820
 The keyspace is defined as:
 Keyspace: Metrics:
   Replication Strategy: org.apache.cassandra.locator.NetworkTopologyStrategy
   Durable Writes: true
 Options: [us-east:3]
 And the column family that we tested with is defined as:
 ColumnFamily: metrics_900
   Key Validation Class: org.apache.cassandra.db.marshal.UTF8Type
   Default column value validator: 
 org.apache.cassandra.db.marshal.BytesType
   Columns sorted by: 
 org.apache.cassandra.db.marshal.CompositeType(org.apache.cassandra.db.marshal.LongType,org.apache.cassandra.db.marshal.UTF8Type,org.apache.cassandra.db.marshal.UTF8Type)
   GC grace seconds: 0
   Compaction min/max thresholds: 4/32
   Read repair chance: 0.1
   DC Local Read repair chance: 0.0
   Replicate on write: 

[jira] [Commented] (CASSANDRA-4462) upgradesstables strips active data from sstables

2012-07-26 Thread Sylvain Lebresne (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-4462?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13423231#comment-13423231
 ] 

Sylvain Lebresne commented on CASSANDRA-4462:
-

Best way to make sure would be to test with the patch :)

But since you have ttl, I would say that yes, there is a good chance that's 
related.

 upgradesstables strips active data from sstables
 

 Key: CASSANDRA-4462
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4462
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Affects Versions: 1.1.2
 Environment: Ubuntu 11.04 64-bit
Reporter: Mike Heffner
 Fix For: 1.1.3

 Attachments: 4462.txt


 From the discussion here: 
 http://mail-archives.apache.org/mod_mbox/cassandra-user/201207.mbox/%3CCAOac0GCtyDqS6ocuHOuQqre4re5wKj3o-ZpUZGkGsjCHzDVbTA%40mail.gmail.com%3E
 We are trying to migrate a 0.8.8 cluster to 1.1.2 by migrating the sstables 
 from the 0.8.8 ring to a parallel 1.1.2 ring. However, every time we run the 
 `nodetool upgradesstables` step we find it removes active data from our CFs 
 -- leading to lost data in our application.
 The steps we took were:
 1. Bring up a 1.1.2 ring in the same AZ/data center configuration with
 tokens matching the corresponding nodes in the 0.8.8 ring.
 2. Create the same keyspace on 1.1.2.
 3. Create each CF in the keyspace on 1.1.2.
 4. Flush each node of the 0.8.8 ring.
 5. Rsync each non-compacted sstable from 0.8.8 to the corresponding node in
 1.1.2.
 6. Move each 0.8.8 sstable into the 1.1.2 directory structure by renaming the 
 file to the  /cassandra/data/keyspace/cf/keyspace-cf... format. For 
 example, for the keyspace Metrics and CF epochs_60 we get:
 cassandra/data/Metrics/epochs_60/Metrics-epochs_60-g-941-Data.db.
 7. On each 1.1.2 node run `nodetool -h localhost refresh Metrics CF` for 
 each CF in the keyspace. We notice that storage load jumps accordingly.
 8. On each 1.1.2 node run `nodetool -h localhost upgradesstables`.
 Afterwards we would test the validity of the data by comparing it with data 
 from the original 0.8.8 ring. After an upgradesstables command the data was 
 always incorrect.
 With further testing we found that we could successfully use scrub to convert 
 our sstables without data loss. However, any invocation of upgradesstables 
 causes active data to be culled from the sstables:
  INFO [CompactionExecutor:4] 2012-07-24 04:27:36,837 CompactionTask.java 
 (line 109) Compacting 
 [SSTableReader(path='/raid0/cassandra/data/Metrics/metrics_900/Metrics-metrics_900-hd-51-Data.db')]
  INFO [CompactionExecutor:4] 2012-07-24 04:27:51,090 CompactionTask.java 
 (line 221) Compacted to 
 [/raid0/cassandra/data/Metrics/metrics_900/Metrics-metrics_900-hd-58-Data.db,].
   60,449,155 to 2,578,102 (~4% of original) bytes for 4,002 keys at 
 0.172562MB/s.  Time: 14,248ms.
 These are the steps we've tried:
 WORKS refresh - scrub
 WORKS refresh - scrub - major compaction
 WORKS refresh - scrub - cleanup
 WORKS refresh - scrub - repair
 FAILS refresh - upgradesstables
 FAILS refresh - scrub - upgradesstables
 FAILS refresh - scrub - repair - upgradesstables
 FAILS refresh - scrub - major compaction - upgradesstables
 We have fewer than 143 million row keys in the CFs we're testing and none
 of the *-Filter.db files are  10MB, so I don't believe this is our
 problem: https://issues.apache.org/jira/browse/CASSANDRA-3820
 The keyspace is defined as:
 Keyspace: Metrics:
   Replication Strategy: org.apache.cassandra.locator.NetworkTopologyStrategy
   Durable Writes: true
 Options: [us-east:3]
 And the column family that we tested with is defined as:
 ColumnFamily: metrics_900
   Key Validation Class: org.apache.cassandra.db.marshal.UTF8Type
   Default column value validator: 
 org.apache.cassandra.db.marshal.BytesType
   Columns sorted by: 
 org.apache.cassandra.db.marshal.CompositeType(org.apache.cassandra.db.marshal.LongType,org.apache.cassandra.db.marshal.UTF8Type,org.apache.cassandra.db.marshal.UTF8Type)
   GC grace seconds: 0
   Compaction min/max thresholds: 4/32
   Read repair chance: 0.1
   DC Local Read repair chance: 0.0
   Replicate on write: true
   Caching: KEYS_ONLY
   Bloom Filter FP chance: default
   Built indexes: []
   Compaction Strategy: 
 org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy
   Compression Options:
 sstable_compression: org.apache.cassandra.io.compress.SnappyCompressor
 All rows have a TTL of 30 days and a gc_grace=0 so it's possible that a small 
 number of older columns would be removed during a 
 compaction/scrub/upgradesstables step. However, the majority should still be 
 kept as 

[jira] [Commented] (CASSANDRA-4462) upgradesstables strips active data from sstables

2012-07-26 Thread Mike Heffner (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-4462?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13423249#comment-13423249
 ] 

Mike Heffner commented on CASSANDRA-4462:
-

Fair enough, though we are not quite equipped to test patch sets yet so it 
might take awhile.

 upgradesstables strips active data from sstables
 

 Key: CASSANDRA-4462
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4462
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Affects Versions: 1.1.2
 Environment: Ubuntu 11.04 64-bit
Reporter: Mike Heffner
 Fix For: 1.1.3

 Attachments: 4462.txt


 From the discussion here: 
 http://mail-archives.apache.org/mod_mbox/cassandra-user/201207.mbox/%3CCAOac0GCtyDqS6ocuHOuQqre4re5wKj3o-ZpUZGkGsjCHzDVbTA%40mail.gmail.com%3E
 We are trying to migrate a 0.8.8 cluster to 1.1.2 by migrating the sstables 
 from the 0.8.8 ring to a parallel 1.1.2 ring. However, every time we run the 
 `nodetool upgradesstables` step we find it removes active data from our CFs 
 -- leading to lost data in our application.
 The steps we took were:
 1. Bring up a 1.1.2 ring in the same AZ/data center configuration with
 tokens matching the corresponding nodes in the 0.8.8 ring.
 2. Create the same keyspace on 1.1.2.
 3. Create each CF in the keyspace on 1.1.2.
 4. Flush each node of the 0.8.8 ring.
 5. Rsync each non-compacted sstable from 0.8.8 to the corresponding node in
 1.1.2.
 6. Move each 0.8.8 sstable into the 1.1.2 directory structure by renaming the 
 file to the  /cassandra/data/keyspace/cf/keyspace-cf... format. For 
 example, for the keyspace Metrics and CF epochs_60 we get:
 cassandra/data/Metrics/epochs_60/Metrics-epochs_60-g-941-Data.db.
 7. On each 1.1.2 node run `nodetool -h localhost refresh Metrics CF` for 
 each CF in the keyspace. We notice that storage load jumps accordingly.
 8. On each 1.1.2 node run `nodetool -h localhost upgradesstables`.
 Afterwards we would test the validity of the data by comparing it with data 
 from the original 0.8.8 ring. After an upgradesstables command the data was 
 always incorrect.
 With further testing we found that we could successfully use scrub to convert 
 our sstables without data loss. However, any invocation of upgradesstables 
 causes active data to be culled from the sstables:
  INFO [CompactionExecutor:4] 2012-07-24 04:27:36,837 CompactionTask.java 
 (line 109) Compacting 
 [SSTableReader(path='/raid0/cassandra/data/Metrics/metrics_900/Metrics-metrics_900-hd-51-Data.db')]
  INFO [CompactionExecutor:4] 2012-07-24 04:27:51,090 CompactionTask.java 
 (line 221) Compacted to 
 [/raid0/cassandra/data/Metrics/metrics_900/Metrics-metrics_900-hd-58-Data.db,].
   60,449,155 to 2,578,102 (~4% of original) bytes for 4,002 keys at 
 0.172562MB/s.  Time: 14,248ms.
 These are the steps we've tried:
 WORKS refresh - scrub
 WORKS refresh - scrub - major compaction
 WORKS refresh - scrub - cleanup
 WORKS refresh - scrub - repair
 FAILS refresh - upgradesstables
 FAILS refresh - scrub - upgradesstables
 FAILS refresh - scrub - repair - upgradesstables
 FAILS refresh - scrub - major compaction - upgradesstables
 We have fewer than 143 million row keys in the CFs we're testing and none
 of the *-Filter.db files are  10MB, so I don't believe this is our
 problem: https://issues.apache.org/jira/browse/CASSANDRA-3820
 The keyspace is defined as:
 Keyspace: Metrics:
   Replication Strategy: org.apache.cassandra.locator.NetworkTopologyStrategy
   Durable Writes: true
 Options: [us-east:3]
 And the column family that we tested with is defined as:
 ColumnFamily: metrics_900
   Key Validation Class: org.apache.cassandra.db.marshal.UTF8Type
   Default column value validator: 
 org.apache.cassandra.db.marshal.BytesType
   Columns sorted by: 
 org.apache.cassandra.db.marshal.CompositeType(org.apache.cassandra.db.marshal.LongType,org.apache.cassandra.db.marshal.UTF8Type,org.apache.cassandra.db.marshal.UTF8Type)
   GC grace seconds: 0
   Compaction min/max thresholds: 4/32
   Read repair chance: 0.1
   DC Local Read repair chance: 0.0
   Replicate on write: true
   Caching: KEYS_ONLY
   Bloom Filter FP chance: default
   Built indexes: []
   Compaction Strategy: 
 org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy
   Compression Options:
 sstable_compression: org.apache.cassandra.io.compress.SnappyCompressor
 All rows have a TTL of 30 days and a gc_grace=0 so it's possible that a small 
 number of older columns would be removed during a 
 compaction/scrub/upgradesstables step. However, the majority should still be 
 kept as their TTL's have not expired yet.

--
This message is 

[jira] [Commented] (CASSANDRA-4462) upgradesstables strips active data from sstables

2012-07-26 Thread Jonathan Ellis (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-4462?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13423252#comment-13423252
 ] 

Jonathan Ellis commented on CASSANDRA-4462:
---

+1 on the basic fix, but I'm not really convinced that GC_ALL and NO_GC are 
improvements since we don't really get any extra typesafety from it.  (Maybe 
switching to an enum for ALL, NONE, and CURRENT_TIME enum would be okay though? 
 But that's out of scope here.)

 upgradesstables strips active data from sstables
 

 Key: CASSANDRA-4462
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4462
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Affects Versions: 1.0.4
 Environment: Ubuntu 11.04 64-bit
Reporter: Mike Heffner
 Fix For: 1.0.11, 1.1.3

 Attachments: 4462.txt


 From the discussion here: 
 http://mail-archives.apache.org/mod_mbox/cassandra-user/201207.mbox/%3CCAOac0GCtyDqS6ocuHOuQqre4re5wKj3o-ZpUZGkGsjCHzDVbTA%40mail.gmail.com%3E
 We are trying to migrate a 0.8.8 cluster to 1.1.2 by migrating the sstables 
 from the 0.8.8 ring to a parallel 1.1.2 ring. However, every time we run the 
 `nodetool upgradesstables` step we find it removes active data from our CFs 
 -- leading to lost data in our application.
 The steps we took were:
 1. Bring up a 1.1.2 ring in the same AZ/data center configuration with
 tokens matching the corresponding nodes in the 0.8.8 ring.
 2. Create the same keyspace on 1.1.2.
 3. Create each CF in the keyspace on 1.1.2.
 4. Flush each node of the 0.8.8 ring.
 5. Rsync each non-compacted sstable from 0.8.8 to the corresponding node in
 1.1.2.
 6. Move each 0.8.8 sstable into the 1.1.2 directory structure by renaming the 
 file to the  /cassandra/data/keyspace/cf/keyspace-cf... format. For 
 example, for the keyspace Metrics and CF epochs_60 we get:
 cassandra/data/Metrics/epochs_60/Metrics-epochs_60-g-941-Data.db.
 7. On each 1.1.2 node run `nodetool -h localhost refresh Metrics CF` for 
 each CF in the keyspace. We notice that storage load jumps accordingly.
 8. On each 1.1.2 node run `nodetool -h localhost upgradesstables`.
 Afterwards we would test the validity of the data by comparing it with data 
 from the original 0.8.8 ring. After an upgradesstables command the data was 
 always incorrect.
 With further testing we found that we could successfully use scrub to convert 
 our sstables without data loss. However, any invocation of upgradesstables 
 causes active data to be culled from the sstables:
  INFO [CompactionExecutor:4] 2012-07-24 04:27:36,837 CompactionTask.java 
 (line 109) Compacting 
 [SSTableReader(path='/raid0/cassandra/data/Metrics/metrics_900/Metrics-metrics_900-hd-51-Data.db')]
  INFO [CompactionExecutor:4] 2012-07-24 04:27:51,090 CompactionTask.java 
 (line 221) Compacted to 
 [/raid0/cassandra/data/Metrics/metrics_900/Metrics-metrics_900-hd-58-Data.db,].
   60,449,155 to 2,578,102 (~4% of original) bytes for 4,002 keys at 
 0.172562MB/s.  Time: 14,248ms.
 These are the steps we've tried:
 WORKS refresh - scrub
 WORKS refresh - scrub - major compaction
 WORKS refresh - scrub - cleanup
 WORKS refresh - scrub - repair
 FAILS refresh - upgradesstables
 FAILS refresh - scrub - upgradesstables
 FAILS refresh - scrub - repair - upgradesstables
 FAILS refresh - scrub - major compaction - upgradesstables
 We have fewer than 143 million row keys in the CFs we're testing and none
 of the *-Filter.db files are  10MB, so I don't believe this is our
 problem: https://issues.apache.org/jira/browse/CASSANDRA-3820
 The keyspace is defined as:
 Keyspace: Metrics:
   Replication Strategy: org.apache.cassandra.locator.NetworkTopologyStrategy
   Durable Writes: true
 Options: [us-east:3]
 And the column family that we tested with is defined as:
 ColumnFamily: metrics_900
   Key Validation Class: org.apache.cassandra.db.marshal.UTF8Type
   Default column value validator: 
 org.apache.cassandra.db.marshal.BytesType
   Columns sorted by: 
 org.apache.cassandra.db.marshal.CompositeType(org.apache.cassandra.db.marshal.LongType,org.apache.cassandra.db.marshal.UTF8Type,org.apache.cassandra.db.marshal.UTF8Type)
   GC grace seconds: 0
   Compaction min/max thresholds: 4/32
   Read repair chance: 0.1
   DC Local Read repair chance: 0.0
   Replicate on write: true
   Caching: KEYS_ONLY
   Bloom Filter FP chance: default
   Built indexes: []
   Compaction Strategy: 
 org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy
   Compression Options:
 sstable_compression: org.apache.cassandra.io.compress.SnappyCompressor
 All rows have a TTL of 30 days and a gc_grace=0 so it's possible that a small 
 number of 

[jira] [Commented] (CASSANDRA-4462) upgradesstables strips active data from sstables

2012-07-25 Thread Mike Heffner (JIRA)

[ 
https://issues.apache.org/jira/browse/CASSANDRA-4462?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13422186#comment-13422186
 ] 

Mike Heffner commented on CASSANDRA-4462:
-

Would that typo lead to the behavior we saw where non-tombstoned data would be 
removed from the sstable during an upgradesstables run?

 upgradesstables strips active data from sstables
 

 Key: CASSANDRA-4462
 URL: https://issues.apache.org/jira/browse/CASSANDRA-4462
 Project: Cassandra
  Issue Type: Bug
  Components: Core
Affects Versions: 1.1.2
 Environment: Ubuntu 11.04 64-bit
Reporter: Mike Heffner
 Fix For: 1.1.3

 Attachments: 4462.txt


 From the discussion here: 
 http://mail-archives.apache.org/mod_mbox/cassandra-user/201207.mbox/%3CCAOac0GCtyDqS6ocuHOuQqre4re5wKj3o-ZpUZGkGsjCHzDVbTA%40mail.gmail.com%3E
 We are trying to migrate a 0.8.8 cluster to 1.1.2 by migrating the sstables 
 from the 0.8.8 ring to a parallel 1.1.2 ring. However, every time we run the 
 `nodetool upgradesstables` step we find it removes active data from our CFs 
 -- leading to lost data in our application.
 The steps we took were:
 1. Bring up a 1.1.2 ring in the same AZ/data center configuration with
 tokens matching the corresponding nodes in the 0.8.8 ring.
 2. Create the same keyspace on 1.1.2.
 3. Create each CF in the keyspace on 1.1.2.
 4. Flush each node of the 0.8.8 ring.
 5. Rsync each non-compacted sstable from 0.8.8 to the corresponding node in
 1.1.2.
 6. Move each 0.8.8 sstable into the 1.1.2 directory structure by renaming the 
 file to the  /cassandra/data/keyspace/cf/keyspace-cf... format. For 
 example, for the keyspace Metrics and CF epochs_60 we get:
 cassandra/data/Metrics/epochs_60/Metrics-epochs_60-g-941-Data.db.
 7. On each 1.1.2 node run `nodetool -h localhost refresh Metrics CF` for 
 each CF in the keyspace. We notice that storage load jumps accordingly.
 8. On each 1.1.2 node run `nodetool -h localhost upgradesstables`.
 Afterwards we would test the validity of the data by comparing it with data 
 from the original 0.8.8 ring. After an upgradesstables command the data was 
 always incorrect.
 With further testing we found that we could successfully use scrub to convert 
 our sstables without data loss. However, any invocation of upgradesstables 
 causes active data to be culled from the sstables:
  INFO [CompactionExecutor:4] 2012-07-24 04:27:36,837 CompactionTask.java 
 (line 109) Compacting 
 [SSTableReader(path='/raid0/cassandra/data/Metrics/metrics_900/Metrics-metrics_900-hd-51-Data.db')]
  INFO [CompactionExecutor:4] 2012-07-24 04:27:51,090 CompactionTask.java 
 (line 221) Compacted to 
 [/raid0/cassandra/data/Metrics/metrics_900/Metrics-metrics_900-hd-58-Data.db,].
   60,449,155 to 2,578,102 (~4% of original) bytes for 4,002 keys at 
 0.172562MB/s.  Time: 14,248ms.
 These are the steps we've tried:
 WORKS refresh - scrub
 WORKS refresh - scrub - major compaction
 WORKS refresh - scrub - cleanup
 WORKS refresh - scrub - repair
 FAILS refresh - upgradesstables
 FAILS refresh - scrub - upgradesstables
 FAILS refresh - scrub - repair - upgradesstables
 FAILS refresh - scrub - major compaction - upgradesstables
 We have fewer than 143 million row keys in the CFs we're testing and none
 of the *-Filter.db files are  10MB, so I don't believe this is our
 problem: https://issues.apache.org/jira/browse/CASSANDRA-3820
 The keyspace is defined as:
 Keyspace: Metrics:
   Replication Strategy: org.apache.cassandra.locator.NetworkTopologyStrategy
   Durable Writes: true
 Options: [us-east:3]
 And the column family that we tested with is defined as:
 ColumnFamily: metrics_900
   Key Validation Class: org.apache.cassandra.db.marshal.UTF8Type
   Default column value validator: 
 org.apache.cassandra.db.marshal.BytesType
   Columns sorted by: 
 org.apache.cassandra.db.marshal.CompositeType(org.apache.cassandra.db.marshal.LongType,org.apache.cassandra.db.marshal.UTF8Type,org.apache.cassandra.db.marshal.UTF8Type)
   GC grace seconds: 0
   Compaction min/max thresholds: 4/32
   Read repair chance: 0.1
   DC Local Read repair chance: 0.0
   Replicate on write: true
   Caching: KEYS_ONLY
   Bloom Filter FP chance: default
   Built indexes: []
   Compaction Strategy: 
 org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy
   Compression Options:
 sstable_compression: org.apache.cassandra.io.compress.SnappyCompressor
 All rows have a TTL of 30 days and a gc_grace=0 so it's possible that a small 
 number of older columns would be removed during a 
 compaction/scrub/upgradesstables step. However, the majority should still be 
 kept as their TTL's have