[jira] [Updated] (CASSANDRA-5855) Scrub does not understand compound primary key created in CQL 3 beta
[ https://issues.apache.org/jira/browse/CASSANDRA-5855?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Tyler Hobbs updated CASSANDRA-5855: --- Attachment: 0001-Correctly-validate-sparse-composite-columns.patch Patch 0001 should apply to 1.1 or 1.2. It's not the most general technique, so I welcome any suggestions, but it does fix this particular issue. If a sparse composite schema is being used, only the last composite component is used to try to look up the column validator. I'll also note that this code path is currently only used by scrub, so it should be safe to test. Scrub does not understand compound primary key created in CQL 3 beta Key: CASSANDRA-5855 URL: https://issues.apache.org/jira/browse/CASSANDRA-5855 Project: Cassandra Issue Type: Bug Components: Tools Reporter: J.B. Langston Assignee: Tyler Hobbs Attachments: 0001-Correctly-validate-sparse-composite-columns.patch We have a customer who was using the beta version of CQL 3 in DSE 3.0 which includes Cassandra 1.1.9 plus patches backported from later versions. They've now upgraded to DSE 3.1, which includes Cassandra 1.2.6 plus patches. When restarting for the first time after running upgradesstables, they noticed the following error in the log: {noformat} Thread[SSTableBatchOpen:2,5,main] java.lang.AssertionError at org.apache.cassandra.utils.ByteBufferUtil.readBytes(ByteBufferUtil.java:401) at org.apache.cassandra.io.sstable.IndexSummary$IndexSummarySerializer.deserialize(IndexSummary.java:124) at org.apache.cassandra.io.sstable.SSTableReader.loadSummary(SSTableReader.java:426) at org.apache.cassandra.io.sstable.SSTableReader.load(SSTableReader.java:360) at org.apache.cassandra.io.sstable.SSTableReader.open(SSTableReader.java:201) at org.apache.cassandra.io.sstable.SSTableReader.open(SSTableReader.java:154) at org.apache.cassandra.io.sstable.SSTableReader$1.run(SSTableReader.java:241) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) {noformat} This error was also reported on CASSANDRA-5703. The comments suggested it was caused by an empty row key, so I had them run scrub on it. When they did, scrub reported the following warning almost 4 million times: {noformat} WARN [CompactionExecutor:27] 2013-08-02 10:13:13,041 OutputHandler.java (line 52) Row at 530332255 is unreadable; skipping to next WARN [CompactionExecutor:27] 2013-08-02 10:13:13,041 OutputHandler.java (line 57) Non-fatal error reading row (stacktrace follows) java.lang.RuntimeException: Error validating row DecoratedKey(139154446688383793922009760478335751546, 735fc9da503b11e2844b123140ff209f) at org.apache.cassandra.io.sstable.SSTableIdentityIterator.getColumnFamilyWithColumns(SSTableIdentityIterator.java:243) at org.apache.cassandra.db.compaction.PrecompactedRow.merge(PrecompactedRow.java:114) at org.apache.cassandra.db.compaction.PrecompactedRow.init(PrecompactedRow.java:98) at org.apache.cassandra.db.compaction.CompactionController.getCompactedRow(CompactionController.java:160) at org.apache.cassandra.db.compaction.CompactionController.getCompactedRow(CompactionController.java:166) at org.apache.cassandra.db.compaction.Scrubber.scrub(Scrubber.java:173) at org.apache.cassandra.db.compaction.CompactionManager.scrubOne(CompactionManager.java:529) at org.apache.cassandra.db.compaction.CompactionManager.doScrub(CompactionManager.java:518) at org.apache.cassandra.db.compaction.CompactionManager.access$400(CompactionManager.java:73) at org.apache.cassandra.db.compaction.CompactionManager$3.perform(CompactionManager.java:283) at org.apache.cassandra.db.compaction.CompactionManager$2.call(CompactionManager.java:253) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) Caused by: org.apache.cassandra.db.marshal.MarshalException: String didn't validate. at org.apache.cassandra.db.marshal.UTF8Type.validate(UTF8Type.java:66) at
[jira] [Updated] (CASSANDRA-5855) Scrub does not understand compound primary key created in CQL 3 beta
[ https://issues.apache.org/jira/browse/CASSANDRA-5855?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Jonathan Ellis updated CASSANDRA-5855: -- Attachment: 5855-followup.txt Attached followup patch to make it collection-aware. Scrub does not understand compound primary key created in CQL 3 beta Key: CASSANDRA-5855 URL: https://issues.apache.org/jira/browse/CASSANDRA-5855 Project: Cassandra Issue Type: Bug Components: Tools Reporter: J.B. Langston Assignee: Tyler Hobbs Attachments: 0001-Correctly-validate-sparse-composite-columns.patch, 5855-followup.txt We have a customer who was using the beta version of CQL 3 in DSE 3.0 which includes Cassandra 1.1.9 plus patches backported from later versions. They've now upgraded to DSE 3.1, which includes Cassandra 1.2.6 plus patches. When restarting for the first time after running upgradesstables, they noticed the following error in the log: {noformat} Thread[SSTableBatchOpen:2,5,main] java.lang.AssertionError at org.apache.cassandra.utils.ByteBufferUtil.readBytes(ByteBufferUtil.java:401) at org.apache.cassandra.io.sstable.IndexSummary$IndexSummarySerializer.deserialize(IndexSummary.java:124) at org.apache.cassandra.io.sstable.SSTableReader.loadSummary(SSTableReader.java:426) at org.apache.cassandra.io.sstable.SSTableReader.load(SSTableReader.java:360) at org.apache.cassandra.io.sstable.SSTableReader.open(SSTableReader.java:201) at org.apache.cassandra.io.sstable.SSTableReader.open(SSTableReader.java:154) at org.apache.cassandra.io.sstable.SSTableReader$1.run(SSTableReader.java:241) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) {noformat} This error was also reported on CASSANDRA-5703. The comments suggested it was caused by an empty row key, so I had them run scrub on it. When they did, scrub reported the following warning almost 4 million times: {noformat} WARN [CompactionExecutor:27] 2013-08-02 10:13:13,041 OutputHandler.java (line 52) Row at 530332255 is unreadable; skipping to next WARN [CompactionExecutor:27] 2013-08-02 10:13:13,041 OutputHandler.java (line 57) Non-fatal error reading row (stacktrace follows) java.lang.RuntimeException: Error validating row DecoratedKey(139154446688383793922009760478335751546, 735fc9da503b11e2844b123140ff209f) at org.apache.cassandra.io.sstable.SSTableIdentityIterator.getColumnFamilyWithColumns(SSTableIdentityIterator.java:243) at org.apache.cassandra.db.compaction.PrecompactedRow.merge(PrecompactedRow.java:114) at org.apache.cassandra.db.compaction.PrecompactedRow.init(PrecompactedRow.java:98) at org.apache.cassandra.db.compaction.CompactionController.getCompactedRow(CompactionController.java:160) at org.apache.cassandra.db.compaction.CompactionController.getCompactedRow(CompactionController.java:166) at org.apache.cassandra.db.compaction.Scrubber.scrub(Scrubber.java:173) at org.apache.cassandra.db.compaction.CompactionManager.scrubOne(CompactionManager.java:529) at org.apache.cassandra.db.compaction.CompactionManager.doScrub(CompactionManager.java:518) at org.apache.cassandra.db.compaction.CompactionManager.access$400(CompactionManager.java:73) at org.apache.cassandra.db.compaction.CompactionManager$3.perform(CompactionManager.java:283) at org.apache.cassandra.db.compaction.CompactionManager$2.call(CompactionManager.java:253) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) Caused by: org.apache.cassandra.db.marshal.MarshalException: String didn't validate. at org.apache.cassandra.db.marshal.UTF8Type.validate(UTF8Type.java:66) at org.apache.cassandra.db.Column.validateFields(Column.java:292) at org.apache.cassandra.db.ColumnFamily.validateColumnFields(ColumnFamily.java:382) at org.apache.cassandra.io.sstable.SSTableIdentityIterator.getColumnFamilyWithColumns(SSTableIdentityIterator.java:239) ... 15 more {noformat} The customer did some testing and they've determined that
[jira] [Updated] (CASSANDRA-5855) Scrub does not understand compound primary key created in CQL 3 beta
[ https://issues.apache.org/jira/browse/CASSANDRA-5855?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] J.B. Langston updated CASSANDRA-5855: - Description: We have a customer who was using the beta version of CQL 3 in DSE 3.0 which includes Cassandra 1.1.9 plus patches backported from later versions. They've now upgraded to DSE 3.1, which includes Cassandra 1.2.6 plus patches. When starting up for the first time after running upgradesstables, they noticed the following error in the log: Thread[SSTableBatchOpen:2,5,main] java.lang.AssertionError at org.apache.cassandra.utils.ByteBufferUtil.readBytes(ByteBufferUtil.java:401) at org.apache.cassandra.io.sstable.IndexSummary$IndexSummarySerializer.deserialize(IndexSummary.java:124) at org.apache.cassandra.io.sstable.SSTableReader.loadSummary(SSTableReader.java:426) at org.apache.cassandra.io.sstable.SSTableReader.load(SSTableReader.java:360) at org.apache.cassandra.io.sstable.SSTableReader.open(SSTableReader.java:201) at org.apache.cassandra.io.sstable.SSTableReader.open(SSTableReader.java:154) at org.apache.cassandra.io.sstable.SSTableReader$1.run(SSTableReader.java:241) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) This error was also reported on CASSANDRA-5703. The comments suggested it was caused by an empty row key, so I had them run scrub on it. When they did, scrub reported the following warning almost 4 million times: WARN [CompactionExecutor:27] 2013-08-02 10:13:13,041 OutputHandler.java (line 52) Row at 530332255 is unreadable; skipping to next WARN [CompactionExecutor:27] 2013-08-02 10:13:13,041 OutputHandler.java (line 57) Non-fatal error reading row (stacktrace follows) java.lang.RuntimeException: Error validating row DecoratedKey(139154446688383793922009760478335751546, 735fc9da503b11e2844b123140ff209f) at org.apache.cassandra.io.sstable.SSTableIdentityIterator.getColumnFamilyWithColumns(SSTableIdentityIterator.java:243) at org.apache.cassandra.db.compaction.PrecompactedRow.merge(PrecompactedRow.java:114) at org.apache.cassandra.db.compaction.PrecompactedRow.init(PrecompactedRow.java:98) at org.apache.cassandra.db.compaction.CompactionController.getCompactedRow(CompactionController.java:160) at org.apache.cassandra.db.compaction.CompactionController.getCompactedRow(CompactionController.java:166) at org.apache.cassandra.db.compaction.Scrubber.scrub(Scrubber.java:173) at org.apache.cassandra.db.compaction.CompactionManager.scrubOne(CompactionManager.java:529) at org.apache.cassandra.db.compaction.CompactionManager.doScrub(CompactionManager.java:518) at org.apache.cassandra.db.compaction.CompactionManager.access$400(CompactionManager.java:73) at org.apache.cassandra.db.compaction.CompactionManager$3.perform(CompactionManager.java:283) at org.apache.cassandra.db.compaction.CompactionManager$2.call(CompactionManager.java:253) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) Caused by: org.apache.cassandra.db.marshal.MarshalException: String didn't validate. at org.apache.cassandra.db.marshal.UTF8Type.validate(UTF8Type.java:66) at org.apache.cassandra.db.Column.validateFields(Column.java:292) at org.apache.cassandra.db.ColumnFamily.validateColumnFields(ColumnFamily.java:382) at org.apache.cassandra.io.sstable.SSTableIdentityIterator.getColumnFamilyWithColumns(SSTableIdentityIterator.java:239) ... 15 more The customer did some testing and they've determined that the issue only exists when taking a Cassandra 1.1 sstable with compound primary keys and running scrub on it in either Cassandra 1.1 or 1.2. It appears that the scrub does not understand the 1.1 compound primary key so is invalidating the row. The customer provided a cassandra data directory that's from DSE 3.0. Running nodetool scrub in either DSE 3.0 or 3.1 generates all sorts of exceptions. If you fire up cassandra before running the scrub, running this query: select count(*) from b_projectsubscription_project; will return 88. After the scrub, it returns 0. When I discussed this with Alexey Yeschenko, he said that if he recalls correctly, the beta didn't have row markers, and did not use a
[jira] [Updated] (CASSANDRA-5855) Scrub does not understand compound primary key created in CQL 3 beta
[ https://issues.apache.org/jira/browse/CASSANDRA-5855?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] J.B. Langston updated CASSANDRA-5855: - Description: We have a customer who was using the beta version of CQL 3 in DSE 3.0 which includes Cassandra 1.1.9 plus patches backported from later versions. They've now upgraded to DSE 3.1, which includes Cassandra 1.2.6 plus patches. When restarting for the first time after running upgradesstables, they noticed the following error in the log: Thread[SSTableBatchOpen:2,5,main] java.lang.AssertionError at org.apache.cassandra.utils.ByteBufferUtil.readBytes(ByteBufferUtil.java:401) at org.apache.cassandra.io.sstable.IndexSummary$IndexSummarySerializer.deserialize(IndexSummary.java:124) at org.apache.cassandra.io.sstable.SSTableReader.loadSummary(SSTableReader.java:426) at org.apache.cassandra.io.sstable.SSTableReader.load(SSTableReader.java:360) at org.apache.cassandra.io.sstable.SSTableReader.open(SSTableReader.java:201) at org.apache.cassandra.io.sstable.SSTableReader.open(SSTableReader.java:154) at org.apache.cassandra.io.sstable.SSTableReader$1.run(SSTableReader.java:241) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) This error was also reported on CASSANDRA-5703. The comments suggested it was caused by an empty row key, so I had them run scrub on it. When they did, scrub reported the following warning almost 4 million times: WARN [CompactionExecutor:27] 2013-08-02 10:13:13,041 OutputHandler.java (line 52) Row at 530332255 is unreadable; skipping to next WARN [CompactionExecutor:27] 2013-08-02 10:13:13,041 OutputHandler.java (line 57) Non-fatal error reading row (stacktrace follows) java.lang.RuntimeException: Error validating row DecoratedKey(139154446688383793922009760478335751546, 735fc9da503b11e2844b123140ff209f) at org.apache.cassandra.io.sstable.SSTableIdentityIterator.getColumnFamilyWithColumns(SSTableIdentityIterator.java:243) at org.apache.cassandra.db.compaction.PrecompactedRow.merge(PrecompactedRow.java:114) at org.apache.cassandra.db.compaction.PrecompactedRow.init(PrecompactedRow.java:98) at org.apache.cassandra.db.compaction.CompactionController.getCompactedRow(CompactionController.java:160) at org.apache.cassandra.db.compaction.CompactionController.getCompactedRow(CompactionController.java:166) at org.apache.cassandra.db.compaction.Scrubber.scrub(Scrubber.java:173) at org.apache.cassandra.db.compaction.CompactionManager.scrubOne(CompactionManager.java:529) at org.apache.cassandra.db.compaction.CompactionManager.doScrub(CompactionManager.java:518) at org.apache.cassandra.db.compaction.CompactionManager.access$400(CompactionManager.java:73) at org.apache.cassandra.db.compaction.CompactionManager$3.perform(CompactionManager.java:283) at org.apache.cassandra.db.compaction.CompactionManager$2.call(CompactionManager.java:253) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) Caused by: org.apache.cassandra.db.marshal.MarshalException: String didn't validate. at org.apache.cassandra.db.marshal.UTF8Type.validate(UTF8Type.java:66) at org.apache.cassandra.db.Column.validateFields(Column.java:292) at org.apache.cassandra.db.ColumnFamily.validateColumnFields(ColumnFamily.java:382) at org.apache.cassandra.io.sstable.SSTableIdentityIterator.getColumnFamilyWithColumns(SSTableIdentityIterator.java:239) ... 15 more The customer did some testing and they've determined that the issue only exists when taking a Cassandra 1.1 sstable with compound primary keys and running scrub on it in either Cassandra 1.1 or 1.2. It appears that the scrub does not understand the 1.1 compound primary key so is invalidating the row. The customer provided a cassandra data directory that's from DSE 3.0. Running nodetool scrub in either DSE 3.0 or 3.1 generates all sorts of exceptions. If you fire up cassandra before running the scrub, running this query: select count(*) from b_projectsubscription_project; will return 88. After the scrub, it returns 0. When I discussed this with Alexey Yeschenko, he said that if he recalls correctly, the beta didn't have row markers, and did not use a
[jira] [Updated] (CASSANDRA-5855) Scrub does not understand compound primary key created in CQL 3 beta
[ https://issues.apache.org/jira/browse/CASSANDRA-5855?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] J.B. Langston updated CASSANDRA-5855: - Description: We have a customer who was using the beta version of CQL 3 in DSE 3.0 which includes Cassandra 1.1.9 plus patches backported from later versions. They've now upgraded to DSE 3.1, which includes Cassandra 1.2.6 plus patches. When restarting for the first time after running upgradesstables, they noticed the following error in the log: Thread[SSTableBatchOpen:2,5,main] java.lang.AssertionError at org.apache.cassandra.utils.ByteBufferUtil.readBytes(ByteBufferUtil.java:401) at org.apache.cassandra.io.sstable.IndexSummary$IndexSummarySerializer.deserialize(IndexSummary.java:124) at org.apache.cassandra.io.sstable.SSTableReader.loadSummary(SSTableReader.java:426) at org.apache.cassandra.io.sstable.SSTableReader.load(SSTableReader.java:360) at org.apache.cassandra.io.sstable.SSTableReader.open(SSTableReader.java:201) at org.apache.cassandra.io.sstable.SSTableReader.open(SSTableReader.java:154) at org.apache.cassandra.io.sstable.SSTableReader$1.run(SSTableReader.java:241) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) This error was also reported on CASSANDRA-5703. The comments suggested it was caused by an empty row key, so I had them run scrub on it. When they did, scrub reported the following warning almost 4 million times: WARN [CompactionExecutor:27] 2013-08-02 10:13:13,041 OutputHandler.java (line 52) Row at 530332255 is unreadable; skipping to next WARN [CompactionExecutor:27] 2013-08-02 10:13:13,041 OutputHandler.java (line 57) Non-fatal error reading row (stacktrace follows) java.lang.RuntimeException: Error validating row DecoratedKey(139154446688383793922009760478335751546, 735fc9da503b11e2844b123140ff209f) at org.apache.cassandra.io.sstable.SSTableIdentityIterator.getColumnFamilyWithColumns(SSTableIdentityIterator.java:243) at org.apache.cassandra.db.compaction.PrecompactedRow.merge(PrecompactedRow.java:114) at org.apache.cassandra.db.compaction.PrecompactedRow.init(PrecompactedRow.java:98) at org.apache.cassandra.db.compaction.CompactionController.getCompactedRow(CompactionController.java:160) at org.apache.cassandra.db.compaction.CompactionController.getCompactedRow(CompactionController.java:166) at org.apache.cassandra.db.compaction.Scrubber.scrub(Scrubber.java:173) at org.apache.cassandra.db.compaction.CompactionManager.scrubOne(CompactionManager.java:529) at org.apache.cassandra.db.compaction.CompactionManager.doScrub(CompactionManager.java:518) at org.apache.cassandra.db.compaction.CompactionManager.access$400(CompactionManager.java:73) at org.apache.cassandra.db.compaction.CompactionManager$3.perform(CompactionManager.java:283) at org.apache.cassandra.db.compaction.CompactionManager$2.call(CompactionManager.java:253) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) Caused by: org.apache.cassandra.db.marshal.MarshalException: String didn't validate. at org.apache.cassandra.db.marshal.UTF8Type.validate(UTF8Type.java:66) at org.apache.cassandra.db.Column.validateFields(Column.java:292) at org.apache.cassandra.db.ColumnFamily.validateColumnFields(ColumnFamily.java:382) at org.apache.cassandra.io.sstable.SSTableIdentityIterator.getColumnFamilyWithColumns(SSTableIdentityIterator.java:239) ... 15 more The customer did some testing and they've determined that the issue only exists when taking a Cassandra 1.1 sstable with compound primary keys and running scrub on it in either Cassandra 1.1 or 1.2. It appears that the scrub does not understand the 1.1 compound primary key so is invalidating the row. The customer provided a cassandra data directory that's from DSE 3.0. Running nodetool scrub in either DSE 3.0 or 3.1 generates all sorts of exceptions. If you fire up cassandra before running the scrub, running this query: select count(*) from b_projectsubscription_project; will return 88. After the scrub, it returns 0. When I discussed this with Alexey Yeschenko, he said that if he recalls correctly, the beta didn't have row markers, and did not use a
[jira] [Updated] (CASSANDRA-5855) Scrub does not understand compound primary key created in CQL 3 beta
[ https://issues.apache.org/jira/browse/CASSANDRA-5855?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] J.B. Langston updated CASSANDRA-5855: - Description: We have a customer who was using the beta version of CQL 3 in DSE 3.0 which includes Cassandra 1.1.9 plus patches backported from later versions. They've now upgraded to DSE 3.1, which includes Cassandra 1.2.6 plus patches. When restarting for the first time after running upgradesstables, they noticed the following error in the log: Thread[SSTableBatchOpen:2,5,main] java.lang.AssertionError at org.apache.cassandra.utils.ByteBufferUtil.readBytes(ByteBufferUtil.java:401) at org.apache.cassandra.io.sstable.IndexSummary$IndexSummarySerializer.deserialize(IndexSummary.java:124) at org.apache.cassandra.io.sstable.SSTableReader.loadSummary(SSTableReader.java:426) at org.apache.cassandra.io.sstable.SSTableReader.load(SSTableReader.java:360) at org.apache.cassandra.io.sstable.SSTableReader.open(SSTableReader.java:201) at org.apache.cassandra.io.sstable.SSTableReader.open(SSTableReader.java:154) at org.apache.cassandra.io.sstable.SSTableReader$1.run(SSTableReader.java:241) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) This error was also reported on CASSANDRA-5703. The comments suggested it was caused by an empty row key, so I had them run scrub on it. When they did, scrub reported the following warning almost 4 million times: WARN [CompactionExecutor:27] 2013-08-02 10:13:13,041 OutputHandler.java (line 52) Row at 530332255 is unreadable; skipping to next WARN [CompactionExecutor:27] 2013-08-02 10:13:13,041 OutputHandler.java (line 57) Non-fatal error reading row (stacktrace follows) java.lang.RuntimeException: Error validating row DecoratedKey(139154446688383793922009760478335751546, 735fc9da503b11e2844b123140ff209f) at org.apache.cassandra.io.sstable.SSTableIdentityIterator.getColumnFamilyWithColumns(SSTableIdentityIterator.java:243) at org.apache.cassandra.db.compaction.PrecompactedRow.merge(PrecompactedRow.java:114) at org.apache.cassandra.db.compaction.PrecompactedRow.init(PrecompactedRow.java:98) at org.apache.cassandra.db.compaction.CompactionController.getCompactedRow(CompactionController.java:160) at org.apache.cassandra.db.compaction.CompactionController.getCompactedRow(CompactionController.java:166) at org.apache.cassandra.db.compaction.Scrubber.scrub(Scrubber.java:173) at org.apache.cassandra.db.compaction.CompactionManager.scrubOne(CompactionManager.java:529) at org.apache.cassandra.db.compaction.CompactionManager.doScrub(CompactionManager.java:518) at org.apache.cassandra.db.compaction.CompactionManager.access$400(CompactionManager.java:73) at org.apache.cassandra.db.compaction.CompactionManager$3.perform(CompactionManager.java:283) at org.apache.cassandra.db.compaction.CompactionManager$2.call(CompactionManager.java:253) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) Caused by: org.apache.cassandra.db.marshal.MarshalException: String didn't validate. at org.apache.cassandra.db.marshal.UTF8Type.validate(UTF8Type.java:66) at org.apache.cassandra.db.Column.validateFields(Column.java:292) at org.apache.cassandra.db.ColumnFamily.validateColumnFields(ColumnFamily.java:382) at org.apache.cassandra.io.sstable.SSTableIdentityIterator.getColumnFamilyWithColumns(SSTableIdentityIterator.java:239) ... 15 more The customer did some testing and they've determined that the issue only exists when taking a Cassandra 1.1 sstable with compound primary keys and running scrub on it in either Cassandra 1.1 or 1.2. It appears that the scrub does not understand the 1.1 compound primary key so is invalidating the row. The customer provided a cassandra data directory that's from DSE 3.0. Running nodetool scrub in either DSE 3.0 or 3.1 generates all sorts of exceptions. If you fire up cassandra before running the scrub, running this query: select count(*) from b_projectsubscription_project; will return 88. After the scrub, it returns 0. When I discussed this with Alexey Yeschenko, he said that if he recalls correctly, the beta didn't have row markers, and did not use a
[jira] [Updated] (CASSANDRA-5855) Scrub does not understand compound primary key created in CQL 3 beta
[ https://issues.apache.org/jira/browse/CASSANDRA-5855?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Jonathan Ellis updated CASSANDRA-5855: -- Assignee: Tyler Hobbs Scrub does not understand compound primary key created in CQL 3 beta Key: CASSANDRA-5855 URL: https://issues.apache.org/jira/browse/CASSANDRA-5855 Project: Cassandra Issue Type: Bug Components: Tools Reporter: J.B. Langston Assignee: Tyler Hobbs We have a customer who was using the beta version of CQL 3 in DSE 3.0 which includes Cassandra 1.1.9 plus patches backported from later versions. They've now upgraded to DSE 3.1, which includes Cassandra 1.2.6 plus patches. When restarting for the first time after running upgradesstables, they noticed the following error in the log: Thread[SSTableBatchOpen:2,5,main] java.lang.AssertionError at org.apache.cassandra.utils.ByteBufferUtil.readBytes(ByteBufferUtil.java:401) at org.apache.cassandra.io.sstable.IndexSummary$IndexSummarySerializer.deserialize(IndexSummary.java:124) at org.apache.cassandra.io.sstable.SSTableReader.loadSummary(SSTableReader.java:426) at org.apache.cassandra.io.sstable.SSTableReader.load(SSTableReader.java:360) at org.apache.cassandra.io.sstable.SSTableReader.open(SSTableReader.java:201) at org.apache.cassandra.io.sstable.SSTableReader.open(SSTableReader.java:154) at org.apache.cassandra.io.sstable.SSTableReader$1.run(SSTableReader.java:241) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) This error was also reported on CASSANDRA-5703. The comments suggested it was caused by an empty row key, so I had them run scrub on it. When they did, scrub reported the following warning almost 4 million times: WARN [CompactionExecutor:27] 2013-08-02 10:13:13,041 OutputHandler.java (line 52) Row at 530332255 is unreadable; skipping to next WARN [CompactionExecutor:27] 2013-08-02 10:13:13,041 OutputHandler.java (line 57) Non-fatal error reading row (stacktrace follows) java.lang.RuntimeException: Error validating row DecoratedKey(139154446688383793922009760478335751546, 735fc9da503b11e2844b123140ff209f) at org.apache.cassandra.io.sstable.SSTableIdentityIterator.getColumnFamilyWithColumns(SSTableIdentityIterator.java:243) at org.apache.cassandra.db.compaction.PrecompactedRow.merge(PrecompactedRow.java:114) at org.apache.cassandra.db.compaction.PrecompactedRow.init(PrecompactedRow.java:98) at org.apache.cassandra.db.compaction.CompactionController.getCompactedRow(CompactionController.java:160) at org.apache.cassandra.db.compaction.CompactionController.getCompactedRow(CompactionController.java:166) at org.apache.cassandra.db.compaction.Scrubber.scrub(Scrubber.java:173) at org.apache.cassandra.db.compaction.CompactionManager.scrubOne(CompactionManager.java:529) at org.apache.cassandra.db.compaction.CompactionManager.doScrub(CompactionManager.java:518) at org.apache.cassandra.db.compaction.CompactionManager.access$400(CompactionManager.java:73) at org.apache.cassandra.db.compaction.CompactionManager$3.perform(CompactionManager.java:283) at org.apache.cassandra.db.compaction.CompactionManager$2.call(CompactionManager.java:253) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) Caused by: org.apache.cassandra.db.marshal.MarshalException: String didn't validate. at org.apache.cassandra.db.marshal.UTF8Type.validate(UTF8Type.java:66) at org.apache.cassandra.db.Column.validateFields(Column.java:292) at org.apache.cassandra.db.ColumnFamily.validateColumnFields(ColumnFamily.java:382) at org.apache.cassandra.io.sstable.SSTableIdentityIterator.getColumnFamilyWithColumns(SSTableIdentityIterator.java:239) ... 15 more The customer did some testing and they've determined that the issue only exists when taking a Cassandra 1.1 sstable with compound primary keys and running scrub on it in either Cassandra 1.1 or 1.2. It appears that the scrub does not understand the 1.1 compound primary key so
[jira] [Updated] (CASSANDRA-5855) Scrub does not understand compound primary key created in CQL 3 beta
[ https://issues.apache.org/jira/browse/CASSANDRA-5855?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Tyler Hobbs updated CASSANDRA-5855: --- Description: We have a customer who was using the beta version of CQL 3 in DSE 3.0 which includes Cassandra 1.1.9 plus patches backported from later versions. They've now upgraded to DSE 3.1, which includes Cassandra 1.2.6 plus patches. When restarting for the first time after running upgradesstables, they noticed the following error in the log: {noformat} Thread[SSTableBatchOpen:2,5,main] java.lang.AssertionError at org.apache.cassandra.utils.ByteBufferUtil.readBytes(ByteBufferUtil.java:401) at org.apache.cassandra.io.sstable.IndexSummary$IndexSummarySerializer.deserialize(IndexSummary.java:124) at org.apache.cassandra.io.sstable.SSTableReader.loadSummary(SSTableReader.java:426) at org.apache.cassandra.io.sstable.SSTableReader.load(SSTableReader.java:360) at org.apache.cassandra.io.sstable.SSTableReader.open(SSTableReader.java:201) at org.apache.cassandra.io.sstable.SSTableReader.open(SSTableReader.java:154) at org.apache.cassandra.io.sstable.SSTableReader$1.run(SSTableReader.java:241) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) {noformat} This error was also reported on CASSANDRA-5703. The comments suggested it was caused by an empty row key, so I had them run scrub on it. When they did, scrub reported the following warning almost 4 million times: {noformat} WARN [CompactionExecutor:27] 2013-08-02 10:13:13,041 OutputHandler.java (line 52) Row at 530332255 is unreadable; skipping to next WARN [CompactionExecutor:27] 2013-08-02 10:13:13,041 OutputHandler.java (line 57) Non-fatal error reading row (stacktrace follows) java.lang.RuntimeException: Error validating row DecoratedKey(139154446688383793922009760478335751546, 735fc9da503b11e2844b123140ff209f) at org.apache.cassandra.io.sstable.SSTableIdentityIterator.getColumnFamilyWithColumns(SSTableIdentityIterator.java:243) at org.apache.cassandra.db.compaction.PrecompactedRow.merge(PrecompactedRow.java:114) at org.apache.cassandra.db.compaction.PrecompactedRow.init(PrecompactedRow.java:98) at org.apache.cassandra.db.compaction.CompactionController.getCompactedRow(CompactionController.java:160) at org.apache.cassandra.db.compaction.CompactionController.getCompactedRow(CompactionController.java:166) at org.apache.cassandra.db.compaction.Scrubber.scrub(Scrubber.java:173) at org.apache.cassandra.db.compaction.CompactionManager.scrubOne(CompactionManager.java:529) at org.apache.cassandra.db.compaction.CompactionManager.doScrub(CompactionManager.java:518) at org.apache.cassandra.db.compaction.CompactionManager.access$400(CompactionManager.java:73) at org.apache.cassandra.db.compaction.CompactionManager$3.perform(CompactionManager.java:283) at org.apache.cassandra.db.compaction.CompactionManager$2.call(CompactionManager.java:253) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) Caused by: org.apache.cassandra.db.marshal.MarshalException: String didn't validate. at org.apache.cassandra.db.marshal.UTF8Type.validate(UTF8Type.java:66) at org.apache.cassandra.db.Column.validateFields(Column.java:292) at org.apache.cassandra.db.ColumnFamily.validateColumnFields(ColumnFamily.java:382) at org.apache.cassandra.io.sstable.SSTableIdentityIterator.getColumnFamilyWithColumns(SSTableIdentityIterator.java:239) ... 15 more {noformat} The customer did some testing and they've determined that the issue only exists when taking a Cassandra 1.1 sstable with compound primary keys and running scrub on it in either Cassandra 1.1 or 1.2. It appears that the scrub does not understand the 1.1 compound primary key so is invalidating the row. The customer provided a cassandra data directory that's from DSE 3.0. Running nodetool scrub in either DSE 3.0 or 3.1 generates all sorts of exceptions. If you fire up cassandra before running the scrub, running this query: {noformat} select count(*) from b_projectsubscription_project; {noformat} will return 88. After the scrub, it returns 0. When I discussed this with Alexey Yeschenko, he said that if he recalls