[ 
https://issues.apache.org/jira/browse/CASSANDRA-10424?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeremy Hanna updated CASSANDRA-10424:
-------------------------------------
    Component/s: Materialized Views

> Altering base table column with materialized view causes unexpected server 
> error.
> ---------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-10424
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-10424
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Coordination, Materialized Views
>         Environment: cassandra-3.0.0-rc1, with python driver 3.0-alpha
>            Reporter: Greg Bestland
>            Assignee: Carl Yeksigian
>             Fix For: 3.0.0 rc2
>
>
> When attempting to alter column type of base table which has a corresponding  
> materialized view we get an exception from the server.
> Steps to reproduce.
> 1. Create a base table
> {code}
> CREATE TABLE test.scores(
>                         user TEXT,
>                         game TEXT,
>                         year INT,
>                         month INT,
>                         day INT,
>                         score TEXT,
>                         PRIMARY KEY (user, game, year, month, day)
>                         )
> {code}
> 2. Create a corresponding materialized view
> {code}
> CREATE MATERIALIZED VIEW test.monthlyhigh AS
>                 SELECT game, year, month, score, user, day FROM test.scores
>                 WHERE game IS NOT NULL AND year IS NOT NULL AND month IS NOT 
> NULL AND score IS NOT NULL AND user IS NOT NULL AND day IS NOT NULL
>                 PRIMARY KEY ((game, year, month), score, user, day)
>                 WITH CLUSTERING ORDER BY (score DESC, user ASC, day ASC)
> {code}
> 3. Attempt to Alter the base table 
> {code}
> ALTER TABLE test.scores ALTER score TYPE blob
> {code}
> In the python driver we see the following exception returned from the server
> {code}
> Ignoring schedule_unique for already-scheduled task: (<bound method 
> ControlConnection.refresh_schema of <cassandra.cluster.ControlConnection 
> object at 0x100f72c50>>, (), (('keyspace', 'test'), ('target_type', 
> 'KEYSPACE'), ('change_type', 'UPDATED')))
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
>   File "./cassandra/cluster.py", line 1623, in execute
>     result = future.result()
>   File "./cassandra/cluster.py", line 3205, in result
>     raise self._final_exception
> cassandra.protocol.ServerError: <ErrorMessage code=0000 [Server error] 
> message="java.lang.RuntimeException: java.util.concurrent.ExecutionException: 
> org.apache.cassandra.exceptions.ConfigurationException: Column family 
> comparators do not match or are not compatible (found ClusteringComparator; 
> expected ClusteringComparator).">
> {code}
> On the server I see the following stack trace
> {code}
> INFO  [MigrationStage:1] 2015-09-30 11:45:47,457 ColumnFamilyStore.java:825 - 
> Enqueuing flush of keyspaces: 512 (0%) on-heap, 0 (0%) off-heap
> INFO  [MemtableFlushWriter:11] 2015-09-30 11:45:47,457 Memtable.java:362 - 
> Writing Memtable-keyspaces@1714565887(0.146KiB serialized bytes, 1 ops, 0%/0% 
> of on/off-heap limit)
> INFO  [MemtableFlushWriter:11] 2015-09-30 11:45:47,463 Memtable.java:395 - 
> Completed flushing 
> /Users/gregbestland/.ccm/tests/node1/data/system_schema/keyspaces-abac5682dea631c5b535b3d6cffd0fb6/ma-54-big-Data.db
>  (0.109KiB) for commitlog position ReplayPosition(segmentId=1443623481894, 
> position=9812)
> INFO  [MigrationStage:1] 2015-09-30 11:45:47,472 ColumnFamilyStore.java:825 - 
> Enqueuing flush of columns: 877 (0%) on-heap, 0 (0%) off-heap
> INFO  [MemtableFlushWriter:12] 2015-09-30 11:45:47,472 Memtable.java:362 - 
> Writing Memtable-columns@771367282(0.182KiB serialized bytes, 1 ops, 0%/0% of 
> on/off-heap limit)
> INFO  [MemtableFlushWriter:12] 2015-09-30 11:45:47,478 Memtable.java:395 - 
> Completed flushing 
> /Users/gregbestland/.ccm/tests/node1/data/system_schema/columns-24101c25a2ae3af787c1b40ee1aca33f/ma-51-big-Data.db
>  (0.107KiB) for commitlog position ReplayPosition(segmentId=1443623481894, 
> position=9812)
> INFO  [MigrationStage:1] 2015-09-30 11:45:47,490 ColumnFamilyStore.java:825 - 
> Enqueuing flush of views: 2641 (0%) on-heap, 0 (0%) off-heap
> INFO  [MemtableFlushWriter:11] 2015-09-30 11:45:47,490 Memtable.java:362 - 
> Writing Memtable-views@1740452585(0.834KiB serialized bytes, 1 ops, 0%/0% of 
> on/off-heap limit)
> INFO  [MemtableFlushWriter:11] 2015-09-30 11:45:47,496 Memtable.java:395 - 
> Completed flushing 
> /Users/gregbestland/.ccm/tests/node1/data/system_schema/views-9786ac1cdd583201a7cdad556410c985/ma-22-big-Data.db
>  (0.542KiB) for commitlog position ReplayPosition(segmentId=1443623481894, 
> position=9812)
> ERROR [MigrationStage:1] 2015-09-30 11:45:47,507 CassandraDaemon.java:195 - 
> Exception in thread Thread[MigrationStage:1,5,main]
> org.apache.cassandra.exceptions.ConfigurationException: Column family 
> comparators do not match or are not compatible (found ClusteringComparator; 
> expected ClusteringComparator).
>       at 
> org.apache.cassandra.config.CFMetaData.validateCompatility(CFMetaData.java:789)
>  ~[main/:na]
>       at org.apache.cassandra.config.CFMetaData.apply(CFMetaData.java:744) 
> ~[main/:na]
>       at org.apache.cassandra.config.CFMetaData.reload(CFMetaData.java:729) 
> ~[main/:na]
>       at org.apache.cassandra.config.Schema.updateView(Schema.java:677) 
> ~[main/:na]
>       at 
> org.apache.cassandra.schema.SchemaKeyspace$2.onUpdated(SchemaKeyspace.java:587)
>  ~[main/:na]
>       at 
> org.apache.cassandra.schema.SchemaKeyspace.diffSchema(SchemaKeyspace.java:701)
>  ~[main/:na]
>       at 
> org.apache.cassandra.schema.SchemaKeyspace.mergeViews(SchemaKeyspace.java:573)
>  ~[main/:na]
>       at 
> org.apache.cassandra.schema.SchemaKeyspace.mergeSchema(SchemaKeyspace.java:515)
>  ~[main/:na]
>       at 
> org.apache.cassandra.schema.SchemaKeyspace.mergeSchema(SchemaKeyspace.java:481)
>  ~[main/:na]
>       at 
> org.apache.cassandra.service.MigrationManager$1.runMayThrow(MigrationManager.java:502)
>  ~[main/:na]
>       at 
> org.apache.cassandra.utils.WrappedRunnable.run(WrappedRunnable.java:28) 
> ~[main/:na]
>       at 
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
> ~[na:1.8.0_45]
>       at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
> ~[na:1.8.0_45]
>       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]
> ERROR [SharedPool-Worker-1] 2015-09-30 11:45:47,508 QueryMessage.java:128 - 
> Unexpected error during query
> java.lang.RuntimeException: java.util.concurrent.ExecutionException: 
> org.apache.cassandra.exceptions.ConfigurationException: Column family 
> comparators do not match or are not compatible (found ClusteringComparator; 
> expected ClusteringComparator).
>       at 
> org.apache.cassandra.utils.FBUtilities.waitOnFuture(FBUtilities.java:368) 
> ~[main/:na]
>       at 
> org.apache.cassandra.service.MigrationManager.announce(MigrationManager.java:483)
>  ~[main/:na]
>       at 
> org.apache.cassandra.service.MigrationManager.announceViewUpdate(MigrationManager.java:389)
>  ~[main/:na]
>       at 
> org.apache.cassandra.cql3.statements.AlterTableStatement.announceMigration(AlterTableStatement.java:359)
>  ~[main/:na]
>       at 
> org.apache.cassandra.cql3.statements.SchemaAlteringStatement.execute(SchemaAlteringStatement.java:93)
>  ~[main/:na]
>       at 
> org.apache.cassandra.cql3.QueryProcessor.processStatement(QueryProcessor.java:205)
>  ~[main/:na]
>       at 
> org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:236) 
> ~[main/:na]
>       at 
> org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:221) 
> ~[main/:na]
>       at 
> org.apache.cassandra.transport.messages.QueryMessage.execute(QueryMessage.java:115)
>  ~[main/:na]
>       at 
> org.apache.cassandra.transport.Message$Dispatcher.channelRead0(Message.java:507)
>  [main/:na]
>       at 
> org.apache.cassandra.transport.Message$Dispatcher.channelRead0(Message.java:401)
>  [main/:na]
>       at 
> io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
>  [netty-all-4.0.23.Final.jar:4.0.23.Final]
>       at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333)
>  [netty-all-4.0.23.Final.jar:4.0.23.Final]
>       at 
> io.netty.channel.AbstractChannelHandlerContext.access$700(AbstractChannelHandlerContext.java:32)
>  [netty-all-4.0.23.Final.jar:4.0.23.Final]
>       at 
> io.netty.channel.AbstractChannelHandlerContext$8.run(AbstractChannelHandlerContext.java:324)
>  [netty-all-4.0.23.Final.jar:4.0.23.Final]
>       at 
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
> [na:1.8.0_45]
>       at 
> org.apache.cassandra.concurrent.AbstractTracingAwareExecutorService$FutureTask.run(AbstractTracingAwareExecutorService.java:164)
>  [main/:na]
>       at org.apache.cassandra.concurrent.SEPWorker.run(SEPWorker.java:105) 
> [main/:na]
>       at java.lang.Thread.run(Thread.java:745) [na:1.8.0_45]
> Caused by: java.util.concurrent.ExecutionException: 
> org.apache.cassandra.exceptions.ConfigurationException: Column family 
> comparators do not match or are not compatible (found ClusteringComparator; 
> expected ClusteringComparator).
>       at java.util.concurrent.FutureTask.report(FutureTask.java:122) 
> ~[na:1.8.0_45]
>       at java.util.concurrent.FutureTask.get(FutureTask.java:192) 
> ~[na:1.8.0_45]
>       at 
> org.apache.cassandra.utils.FBUtilities.waitOnFuture(FBUtilities.java:364) 
> ~[main/:na]
>       ... 18 common frames omitted
> Caused by: org.apache.cassandra.exceptions.ConfigurationException: Column 
> family comparators do not match or are not compatible (found 
> ClusteringComparator; expected ClusteringComparator).
>       at 
> org.apache.cassandra.config.CFMetaData.validateCompatility(CFMetaData.java:789)
>  ~[main/:na]
>       at org.apache.cassandra.config.CFMetaData.apply(CFMetaData.java:744) 
> ~[main/:na]
>       at org.apache.cassandra.config.CFMetaData.reload(CFMetaData.java:729) 
> ~[main/:na]
>       at org.apache.cassandra.config.Schema.updateView(Schema.java:677) 
> ~[main/:na]
>       at 
> org.apache.cassandra.schema.SchemaKeyspace$2.onUpdated(SchemaKeyspace.java:587)
>  ~[main/:na]
>       at 
> org.apache.cassandra.schema.SchemaKeyspace.diffSchema(SchemaKeyspace.java:701)
>  ~[main/:na]
>       at 
> org.apache.cassandra.schema.SchemaKeyspace.mergeViews(SchemaKeyspace.java:573)
>  ~[main/:na]
>       at 
> org.apache.cassandra.schema.SchemaKeyspace.mergeSchema(SchemaKeyspace.java:515)
>  ~[main/:na]
>       at 
> org.apache.cassandra.schema.SchemaKeyspace.mergeSchema(SchemaKeyspace.java:481)
>  ~[main/:na]
>       at 
> org.apache.cassandra.service.MigrationManager$1.runMayThrow(MigrationManager.java:502)
>  ~[main/:na]
>       at 
> org.apache.cassandra.utils.WrappedRunnable.run(WrappedRunnable.java:28) 
> ~[main/:na]
>       at 
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
> [na:1.8.0_45]
>       at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
> ~[na:1.8.0_45]
>       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]
>       ... 1 common frames omitted
> ERROR [SharedPool-Worker-1] 2015-09-30 11:45:47,508 ErrorMessage.java:336 - 
> Unexpected exception during request
> java.lang.RuntimeException: java.util.concurrent.ExecutionException: 
> org.apache.cassandra.exceptions.ConfigurationException: Column family 
> comparators do not match or are not compatible (found ClusteringComparator; 
> expected ClusteringComparator).
>       at 
> org.apache.cassandra.utils.FBUtilities.waitOnFuture(FBUtilities.java:368) 
> ~[main/:na]
>       at 
> org.apache.cassandra.service.MigrationManager.announce(MigrationManager.java:483)
>  ~[main/:na]
>       at 
> org.apache.cassandra.service.MigrationManager.announceViewUpdate(MigrationManager.java:389)
>  ~[main/:na]
>       at 
> org.apache.cassandra.cql3.statements.AlterTableStatement.announceMigration(AlterTableStatement.java:359)
>  ~[main/:na]
>       at 
> org.apache.cassandra.cql3.statements.SchemaAlteringStatement.execute(SchemaAlteringStatement.java:93)
>  ~[main/:na]
>       at 
> org.apache.cassandra.cql3.QueryProcessor.processStatement(QueryProcessor.java:205)
>  ~[main/:na]
>       at 
> org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:236) 
> ~[main/:na]
>       at 
> org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:221) 
> ~[main/:na]
>       at 
> org.apache.cassandra.transport.messages.QueryMessage.execute(QueryMessage.java:115)
>  ~[main/:na]
>       at 
> org.apache.cassandra.transport.Message$Dispatcher.channelRead0(Message.java:507)
>  [main/:na]
>       at 
> org.apache.cassandra.transport.Message$Dispatcher.channelRead0(Message.java:401)
>  [main/:na]
>       at 
> io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
>  [netty-all-4.0.23.Final.jar:4.0.23.Final]
>       at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333)
>  [netty-all-4.0.23.Final.jar:4.0.23.Final]
>       at 
> io.netty.channel.AbstractChannelHandlerContext.access$700(AbstractChannelHandlerContext.java:32)
>  [netty-all-4.0.23.Final.jar:4.0.23.Final]
>       at 
> io.netty.channel.AbstractChannelHandlerContext$8.run(AbstractChannelHandlerContext.java:324)
>  [netty-all-4.0.23.Final.jar:4.0.23.Final]
>       at 
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
> [na:1.8.0_45]
>       at 
> org.apache.cassandra.concurrent.AbstractTracingAwareExecutorService$FutureTask.run(AbstractTracingAwareExecutorService.java:164)
>  [main/:na]
>       at org.apache.cassandra.concurrent.SEPWorker.run(SEPWorker.java:105) 
> [main/:na]
>       at java.lang.Thread.run(Thread.java:745) [na:1.8.0_45]
> Caused by: java.util.concurrent.ExecutionException: 
> org.apache.cassandra.exceptions.ConfigurationException: Column family 
> comparators do not match or are not compatible (found ClusteringComparator; 
> expected ClusteringComparator).
>       at java.util.concurrent.FutureTask.report(FutureTask.java:122) 
> ~[na:1.8.0_45]
>       at java.util.concurrent.FutureTask.get(FutureTask.java:192) 
> ~[na:1.8.0_45]
>       at 
> org.apache.cassandra.utils.FBUtilities.waitOnFuture(FBUtilities.java:364) 
> ~[main/:na]
>       ... 18 common frames omitted
> Caused by: org.apache.cassandra.exceptions.ConfigurationException: Column 
> family comparators do not match or are not compatible (found 
> ClusteringComparator; expected ClusteringComparator).
>       at 
> org.apache.cassandra.config.CFMetaData.validateCompatility(CFMetaData.java:789)
>  ~[main/:na]
>       at org.apache.cassandra.config.CFMetaData.apply(CFMetaData.java:744) 
> ~[main/:na]
>       at org.apache.cassandra.config.CFMetaData.reload(CFMetaData.java:729) 
> ~[main/:na]
>       at org.apache.cassandra.config.Schema.updateView(Schema.java:677) 
> ~[main/:na]
>       at 
> org.apache.cassandra.schema.SchemaKeyspace$2.onUpdated(SchemaKeyspace.java:587)
>  ~[main/:na]
>       at 
> org.apache.cassandra.schema.SchemaKeyspace.diffSchema(SchemaKeyspace.java:701)
>  ~[main/:na]
>       at 
> org.apache.cassandra.schema.SchemaKeyspace.mergeViews(SchemaKeyspace.java:573)
>  ~[main/:na]
>       at 
> org.apache.cassandra.schema.SchemaKeyspace.mergeSchema(SchemaKeyspace.java:515)
>  ~[main/:na]
>       at 
> org.apache.cassandra.schema.SchemaKeyspace.mergeSchema(SchemaKeyspace.java:481)
>  ~[main/:na]
>       at 
> org.apache.cassandra.service.MigrationManager$1.runMayThrow(MigrationManager.java:502)
>  ~[main/:na]
>       at 
> org.apache.cassandra.utils.WrappedRunnable.run(WrappedRunnable.java:28) 
> ~[main/:na]
>       at 
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
> [na:1.8.0_45]
>       at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
> ~[na:1.8.0_45]
>       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]
>       ... 1 common frames omitted
> {code}
> It would appear as though the base table column was migrated, as it now seems 
> to be of type blob, but I'm not sure internally what state its in.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org

Reply via email to