[ 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)