cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Tyler Hobbs (JIRA)" <>
Subject [jira] [Commented] (CASSANDRA-10614) AssertionError while flushing memtables
Date Tue, 03 Nov 2015 23:04:27 GMT


Tyler Hobbs commented on CASSANDRA-10614:

After reproducing this, I discovered a couple of problems, one of which was not related to
CASSANDRA-9664.  The error was occurring when the streamed sstables were processed through
the view.  Some partitions had a mixture of complete rows and partial rows (due to only having
an {{UPDATE}} on non-selected columns and no {{INSERT}}).  The complete rows allowed the partitions
to pass the filtering checks and the checks for live/non-empty rows in {{updateAppliesToView()}}.
 However, later down the line, we weren't correctly handling individual non-live rows or rows
that didn't match the filter when generating view mutations.  This could result in empty rows
being inserted into the view (the error discovered here) or rows that didn't match the filters
being inserted into the view.

These two issues were easy to reproduce with {{BATCH}} statements, so I've extended two unit
tests to reproduce the issue.

[~tjake] can you review the [latest commit|]
that I've pushed?

> AssertionError while flushing memtables
> ---------------------------------------
>                 Key: CASSANDRA-10614
>                 URL:
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Local Write-Read Paths
>            Reporter: Tyler Hobbs
>            Assignee: Tyler Hobbs
>            Priority: Critical
>             Fix For: 3.0.0
>         Attachments: debug.log, system.log
> While running mvbench against a single local node, I noticed this stacktrace showing
up multiple times in the logs:
> {noformat}
> ERROR 16:40:01 Exception in thread Thread[MemtableFlushWriter:1,5,main]
> java.lang.AssertionError: null
> 	at org.apache.cassandra.db.rows.Rows.collectStats( ~[main/:na]
> 	at$StatsCollector.applyToRow(
> 	at org.apache.cassandra.db.transform.BaseRows.hasNext( ~[main/:na]
> 	at org.apache.cassandra.db.transform.UnfilteredRows.isEmpty(
> 	at org.apache.cassandra.db.ColumnIndex.writeAndBuildIndex( ~[main/:na]
> 	at
> 	at
> 	at
> 	at org.apache.cassandra.db.Memtable$FlushRunnable.writeSortedContents(
> 	at org.apache.cassandra.db.Memtable$FlushRunnable.runMayThrow( ~[main/:na]
> 	at ~[main/:na]
> 	at$DirectExecutorService.execute(
> 	at org.apache.cassandra.db.ColumnFamilyStore$
> 	at java.util.concurrent.ThreadPoolExecutor.runWorker( ~[na:1.8.0_45]
> 	at java.util.concurrent.ThreadPoolExecutor$ ~[na:1.8.0_45]
> 	at ~[na:1.8.0_45]
> {noformat}
> To reproduce, run mvbench with the regular schema and the following arguments:
> {noformat}
> mvn exec:java -Dexec.args="--num-users 100000 --num-songs 1000000 --num-artists 10000
-n 500000 --endpoint"
> {noformat}

This message was sent by Atlassian JIRA

View raw message