cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Tyler Hobbs (JIRA)" <j...@apache.org>
Subject [jira] [Comment Edited] (CASSANDRA-10614) AssertionError while flushing memtables
Date Wed, 28 Oct 2015 19:52:27 GMT

    [ https://issues.apache.org/jira/browse/CASSANDRA-10614?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14979120#comment-14979120
] 

Tyler Hobbs edited comment on CASSANDRA-10614 at 10/28/15 7:52 PM:
-------------------------------------------------------------------

The cause was a bad short-circuit of the check for whether an update affects a view.  If the
view's PK only included columns from the base table's PK, empty rows could be inserted into
the view when an update didn't affect any columns in the view.

This appears to also fix the performance regression spotted in CASSANDRA-10609.  [~aboudreault]
can you verify that for me?

Patches and pending CI runs:
||branch||testall||dtest||
|[CASSANDRA-10614|https://github.com/thobbs/cassandra/tree/CASSANDRA-10614]|[testall|http://cassci.datastax.com/view/Dev/view/beobal/job/thobbs-CASSANDRA-10614-testall]|[dtest|http://cassci.datastax.com/view/Dev/view/beobal/job/thobbs-CASSANDRA-10614-dtest]|
|[CASSANDRA-10614-trunk|https://github.com/thobbs/cassandra/tree/CASSANDRA-10614-trunk]|[testall|http://cassci.datastax.com/view/Dev/view/beobal/job/thobbs-CASSANDRA-10614-trunk-testall]|[dtest|http://cassci.datastax.com/view/Dev/view/beobal/job/thobbs-CASSANDRA-10614-trunk-dtest]|

As far as a test goes, I could add a simple regression unit test that triggers a flush, but
it would be good to know that we regularly run MV tests long enough to spot other issues like
this.  [~aboudreault] were you just doing a one-off perf test, or is this part of a regular
job?


was (Author: thobbs):
The cause was a bad short-circuit of the check for whether an update affects a view.  If the
view's PK only included columns from the base table's PK, empty rows could be inserted into
the view when an update didn't affect any columns in the view.

This appears to also fix the performance regression spotted in CASSANDRA-10609.  [~aboudreault]
can you verify that for me?

Patches and pending CI runs:
||branch||testall||dtest||
|[CASSANDRA-10614|https://github.com/thobbs/cassandra/tree/CASSANDRA-10614]|[testall|http://cassci.datastax.com/view/Dev/view/beobal/job/thobbs-CASSANDRA-10614-testall]|[dtest|http://cassci.datastax.com/view/Dev/view/beobal/job/thobbs-CASSANDRA-10614-dtest]|
|[CASSANDRA-10614-trunk|https://github.com/thobbs/cassandra/tree/CASSANDRA-10614-trunk]|[testall|http://cassci.datastax.com/view/Dev/view/beobal/job/thobbs-CASSANDRA-10614-trunk-testall]|[dtest|http://cassci.datastax.com/view/Dev/view/beobal/job/thobbs-CASSANDRA-10614-trunk-dtest]|


> AssertionError while flushing memtables
> ---------------------------------------
>
>                 Key: CASSANDRA-10614
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-10614
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core, Local Write-Read Paths
>            Reporter: Tyler Hobbs
>            Assignee: Tyler Hobbs
>            Priority: Critical
>             Fix For: 3.0.0
>
>
> 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(Rows.java:70) ~[main/:na]
> 	at org.apache.cassandra.io.sstable.format.big.BigTableWriter$StatsCollector.applyToRow(BigTableWriter.java:197)
~[main/:na]
> 	at org.apache.cassandra.db.transform.BaseRows.hasNext(BaseRows.java:116) ~[main/:na]
> 	at org.apache.cassandra.db.transform.UnfilteredRows.isEmpty(UnfilteredRows.java:38)
~[main/:na]
> 	at org.apache.cassandra.db.ColumnIndex.writeAndBuildIndex(ColumnIndex.java:49) ~[main/:na]
> 	at org.apache.cassandra.io.sstable.format.big.BigTableWriter.append(BigTableWriter.java:149)
~[main/:na]
> 	at org.apache.cassandra.io.sstable.SimpleSSTableMultiWriter.append(SimpleSSTableMultiWriter.java:45)
~[main/:na]
> 	at org.apache.cassandra.io.sstable.SSTableTxnWriter.append(SSTableTxnWriter.java:52)
~[main/:na]
> 	at org.apache.cassandra.db.Memtable$FlushRunnable.writeSortedContents(Memtable.java:389)
~[main/:na]
> 	at org.apache.cassandra.db.Memtable$FlushRunnable.runMayThrow(Memtable.java:352) ~[main/:na]
> 	at org.apache.cassandra.utils.WrappedRunnable.run(WrappedRunnable.java:28) ~[main/:na]
> 	at com.google.common.util.concurrent.MoreExecutors$DirectExecutorService.execute(MoreExecutors.java:299)
~[guava-18.0.jar:na]
> 	at org.apache.cassandra.db.ColumnFamilyStore$Flush.run(ColumnFamilyStore.java:1037)
~[main/:na]
> 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) ~[na:1.8.0_45]
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) ~[na:1.8.0_45]
> 	at java.lang.Thread.run(Thread.java:745) ~[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 127.0.0.1"
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message