[
https://issues.apache.org/jira/browse/CASSANDRA-12240?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15392059#comment-15392059
]
Bob Vawter commented on CASSANDRA-12240:
----------------------------------------
I can reproduce this exception on a fresh, single-node 3.0.8 cluster with the
following statements:
{code}
create table boom ( a text primary key, b text, c text);
create materialized view boom_mv as select * from boom where a is not null and
b is not null primary key (b,a);
insert into boom (a,b,c) values('a',null,'c');
update boom set c='bar' where a='a';
{code}
If I leave out the (b,null) from the insert statement, this executes as
expected.
> Broken materialized view compatibility
> --------------------------------------
>
> Key: CASSANDRA-12240
> URL: https://issues.apache.org/jira/browse/CASSANDRA-12240
> Project: Cassandra
> Issue Type: Bug
> Environment: datastax-ddc-3.7.0, Centos 7, x86_64
> Reporter: Gábor Auth
> Assignee: Sylvain Lebresne
> Priority: Blocker
>
> The behavior of the materialized view is not compatible with the previous
> versions of Cassandra, here is the simple test case, it is works from 3.3.0
> to 3.6.0. I've reproduced the issue with a single node installation and our
> eight node test environment too of the 3.7.0 version:
> {code}
> CREATE KEYSPACE test WITH replication = {'class': 'SimpleStrategy',
> 'replication_factor' : 1};
> USE test;
> CREATE TABLE test (id timeuuid PRIMARY KEY, segment text, xy text);
> CREATE MATERIALIZED VIEW test_by_segment AS SELECT * FROM test WHERE segment
> IS NOT NULL PRIMARY KEY (segment, id);
> CREATE MATERIALIZED VIEW test_by_xy AS SELECT * FROM test WHERE xy IS NOT
> NULL PRIMARY KEY (xy, id);
> UPDATE test SET segment=null, xy='{"x":0,"y":0}' WHERE
> id=8868dd90-fa48-11e3-afc8-c53da2f1a8ef;
> UPDATE test SET xy='{"x":0,"y":0}' WHERE
> id=8868dd90-fa48-11e3-afc8-c53da2f1a8ef;
> {code}
> The result of the `cqlsh` console:
> {code}
> WriteTimeout: code=1100 [Coordinator node timed out waiting for replica
> nodes' responses] message="Operation timed out - received only 0 responses."
> info={'received_responses': 0, 'required_responses': 1, 'consistency': 'ONE'}
> {code}
> The stack trace in the server log:
> {code}
> ERROR 19:40:19 Unknown exception caught while attempting to update
> MaterializedView! test
> java.lang.AssertionError: We shouldn't have got there is the base row had no
> associated entry
> at
> org.apache.cassandra.db.view.ViewUpdateGenerator.computeLivenessInfoForEntry(ViewUpdateGenerator.java:455)
> ~[apache-cassandra-3.7.0.jar:3.7.0]
> at
> org.apache.cassandra.db.view.ViewUpdateGenerator.updateEntry(ViewUpdateGenerator.java:273)
> ~[apache-cassandra-3.7.0.jar:3.7.0]
> at
> org.apache.cassandra.db.view.ViewUpdateGenerator.addBaseTableUpdate(ViewUpdateGenerator.java:127)
> ~[apache-cassandra-3.7.0.jar:3.7.0]
> at
> org.apache.cassandra.db.view.TableViews.addToViewUpdateGenerators(TableViews.java:403)
> ~[apache-cassandra-3.7.0.jar:3.7.0]
> at
> org.apache.cassandra.db.view.TableViews.generateViewUpdates(TableViews.java:236)
> ~[apache-cassandra-3.7.0.jar:3.7.0]
> at
> org.apache.cassandra.db.view.TableViews.pushViewReplicaUpdates(TableViews.java:140)
> ~[apache-cassandra-3.7.0.jar:3.7.0]
> at org.apache.cassandra.db.Keyspace.apply(Keyspace.java:514)
> [apache-cassandra-3.7.0.jar:3.7.0]
> at org.apache.cassandra.db.Keyspace.apply(Keyspace.java:399)
> [apache-cassandra-3.7.0.jar:3.7.0]
> at org.apache.cassandra.db.Mutation.applyFuture(Mutation.java:202)
> [apache-cassandra-3.7.0.jar:3.7.0]
> at org.apache.cassandra.db.Mutation.apply(Mutation.java:214)
> [apache-cassandra-3.7.0.jar:3.7.0]
> at org.apache.cassandra.db.Mutation.apply(Mutation.java:228)
> [apache-cassandra-3.7.0.jar:3.7.0]
> at
> org.apache.cassandra.service.StorageProxy$8.runMayThrow(StorageProxy.java:1343)
> ~[apache-cassandra-3.7.0.jar:3.7.0]
> at
> org.apache.cassandra.service.StorageProxy$LocalMutationRunnable.run(StorageProxy.java:2519)
> ~[apache-cassandra-3.7.0.jar:3.7.0]
> at
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
> ~[na:1.8.0_91]
> at
> org.apache.cassandra.concurrent.AbstractLocalAwareExecutorService$FutureTask.run(AbstractLocalAwareExecutorService.java:164)
> ~[apache-cassandra-3.7.0.jar:3.7.0]
> at
> org.apache.cassandra.concurrent.AbstractLocalAwareExecutorService$LocalSessionFutureTask.run(AbstractLocalAwareExecutorService.java:136)
> ~[apache-cassandra-3.7.0.jar:3.7.0]
> at org.apache.cassandra.concurrent.SEPWorker.run(SEPWorker.java:105)
> ~[apache-cassandra-3.7.0.jar:3.7.0]
> at java.lang.Thread.run(Thread.java:745) ~[na:1.8.0_91]
> WARN 19:40:19 Uncaught exception on thread
> Thread[SharedPool-Worker-2,5,main]: {}
> java.lang.AssertionError: We shouldn't have got there is the base row had no
> associated entry
> at
> org.apache.cassandra.db.view.ViewUpdateGenerator.computeLivenessInfoForEntry(ViewUpdateGenerator.java:455)
> ~[apache-cassandra-3.7.0.jar:3.7.0]
> at
> org.apache.cassandra.db.view.ViewUpdateGenerator.updateEntry(ViewUpdateGenerator.java:273)
> ~[apache-cassandra-3.7.0.jar:3.7.0]
> at
> org.apache.cassandra.db.view.ViewUpdateGenerator.addBaseTableUpdate(ViewUpdateGenerator.java:127)
> ~[apache-cassandra-3.7.0.jar:3.7.0]
> at
> org.apache.cassandra.db.view.TableViews.addToViewUpdateGenerators(TableViews.java:403)
> ~[apache-cassandra-3.7.0.jar:3.7.0]
> at
> org.apache.cassandra.db.view.TableViews.generateViewUpdates(TableViews.java:236)
> ~[apache-cassandra-3.7.0.jar:3.7.0]
> at
> org.apache.cassandra.db.view.TableViews.pushViewReplicaUpdates(TableViews.java:140)
> ~[apache-cassandra-3.7.0.jar:3.7.0]
> at org.apache.cassandra.db.Keyspace.apply(Keyspace.java:514)
> ~[apache-cassandra-3.7.0.jar:3.7.0]
> at org.apache.cassandra.db.Keyspace.apply(Keyspace.java:399)
> ~[apache-cassandra-3.7.0.jar:3.7.0]
> at org.apache.cassandra.db.Mutation.applyFuture(Mutation.java:202)
> ~[apache-cassandra-3.7.0.jar:3.7.0]
> at org.apache.cassandra.db.Mutation.apply(Mutation.java:214)
> ~[apache-cassandra-3.7.0.jar:3.7.0]
> at org.apache.cassandra.db.Mutation.apply(Mutation.java:228)
> ~[apache-cassandra-3.7.0.jar:3.7.0]
> at
> org.apache.cassandra.service.StorageProxy$8.runMayThrow(StorageProxy.java:1343)
> ~[apache-cassandra-3.7.0.jar:3.7.0]
> at
> org.apache.cassandra.service.StorageProxy$LocalMutationRunnable.run(StorageProxy.java:2519)
> ~[apache-cassandra-3.7.0.jar:3.7.0]
> at
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
> ~[na:1.8.0_91]
> at
> org.apache.cassandra.concurrent.AbstractLocalAwareExecutorService$FutureTask.run(AbstractLocalAwareExecutorService.java:164)
> ~[apache-cassandra-3.7.0.jar:3.7.0]
> at
> org.apache.cassandra.concurrent.AbstractLocalAwareExecutorService$LocalSessionFutureTask.run(AbstractLocalAwareExecutorService.java:136)
> [apache-cassandra-3.7.0.jar:3.7.0]
> at org.apache.cassandra.concurrent.SEPWorker.run(SEPWorker.java:105)
> [apache-cassandra-3.7.0.jar:3.7.0]
> at java.lang.Thread.run(Thread.java:745) [na:1.8.0_91]
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)