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

Joel Knighton commented on CASSANDRA-10621:
-------------------------------------------

These definitely correspond to {{STARTING}} and {{JOINING}} operation modes; we 
also need to handle {{MOVING}}, which the previous patch did not handle.

Since explicitly handling these operation modes seems considerably clearer than 
trying to handle side effects of these transitions, I've reworked the test to 
explicitly check the operation mode of StorageService.

I've checked these patches against the proposed dtest changes 
[here|https://github.com/jkni/cassandra-dtest/tree/mv-tests].

The CI runs are clean relative to 3.0
||3.0||
|[branch|https://github.com/jkni/cassandra/tree/b7c81e66b241d7375f0375bb77b7791b08b3a016]|
|[dtests|http://cassci.datastax.com/view/Dev/view/jkni/job/jkni-10621-dtest/2/]|
|[utests|http://cassci.datastax.com/view/Dev/view/jkni/job/jkni-10621-testall/2/]|

Thanks!

> Error while bootstraping a new node with Materialized Views
> -----------------------------------------------------------
>
>                 Key: CASSANDRA-10621
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-10621
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Coordination
>            Reporter: Alan Boudreault
>            Assignee: Joel Knighton
>            Priority: Critical
>             Fix For: 3.0.0
>
>         Attachments: system.log
>
>
> If I try to add a new node in a cluster that has materialized views, I get 
> the following error:
> {code}
>  ERROR 19:05:15 Unknown exception caught while attempting to update 
> MaterializedView! mview.user_playlists
> java.lang.RuntimeException: Trying to get the view natural endpoint on a 
> non-data replica
>         at 
> org.apache.cassandra.db.view.ViewUtils.getViewNaturalEndpoint(ViewUtils.java:103)
>  ~[main/:na]
>         at 
> org.apache.cassandra.service.StorageProxy.mutateMV(StorageProxy.java:693) 
> ~[main/:na]
>         at 
> org.apache.cassandra.db.view.ViewManager.pushViewReplicaUpdates(ViewManager.java:145)
>  ~[main/:na]
>         at org.apache.cassandra.db.Keyspace.apply(Keyspace.java:482) 
> [main/:na]
>         at org.apache.cassandra.db.Keyspace.apply(Keyspace.java:387) 
> [main/:na]
>         at org.apache.cassandra.db.Mutation.applyUnsafe(Mutation.java:215) 
> [main/:na]
>         at 
> org.apache.cassandra.streaming.StreamReceiveTask$OnCompletionRunnable.run(StreamReceiveTask.java:162)
>  [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 19:05:15 Error applying streamed sstable: 
> java.lang.RuntimeException: Trying to get the view natural endpoint on a 
> non-data replica
>         at 
> org.apache.cassandra.db.view.ViewUtils.getViewNaturalEndpoint(ViewUtils.java:103)
>  ~[main/:na]
>         at 
> org.apache.cassandra.service.StorageProxy.mutateMV(StorageProxy.java:693) 
> ~[main/:na]
>         at 
> org.apache.cassandra.db.view.ViewManager.pushViewReplicaUpdates(ViewManager.java:145)
>  ~[main/:na]
>         at org.apache.cassandra.db.Keyspace.apply(Keyspace.java:482) 
> ~[main/:na]
>         at org.apache.cassandra.db.Keyspace.apply(Keyspace.java:387) 
> ~[main/:na]
>         at org.apache.cassandra.db.Mutation.applyUnsafe(Mutation.java:215) 
> ~[main/:na]
>         at 
> org.apache.cassandra.streaming.StreamReceiveTask$OnCompletionRunnable.run(StreamReceiveTask.java:162)
>  ~[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]
> WARN  19:05:18 Writing large partition mview/genre_to_user:genre_3 (116986142 
> bytes)
> WARN  19:05:21 Writing large partition mview/genre_to_user:genre_2 (116985746 
> bytes)
> WARN  19:05:24 Writing large partition mview/genre_to_user:genre_5 (116986337 
> bytes)
> ERROR 19:05:33 Unknown exception caught while attempting to update 
> MaterializedView! mview.user_playlists
> java.lang.RuntimeException: Trying to get the view natural endpoint on a 
> non-data replica
>         at 
> org.apache.cassandra.db.view.ViewUtils.getViewNaturalEndpoint(ViewUtils.java:103)
>  ~[main/:na]
>         at 
> org.apache.cassandra.service.StorageProxy.mutateMV(StorageProxy.java:693) 
> ~[main/:na]
>         at 
> org.apache.cassandra.db.view.ViewManager.pushViewReplicaUpdates(ViewManager.java:145)
>  ~[main/:na]
>         at org.apache.cassandra.db.Keyspace.apply(Keyspace.java:482) 
> [main/:na]
>         at org.apache.cassandra.db.Keyspace.apply(Keyspace.java:387) 
> [main/:na]
>         at org.apache.cassandra.db.Mutation.applyUnsafe(Mutation.java:215) 
> [main/:na]
>         at 
> org.apache.cassandra.streaming.StreamReceiveTask$OnCompletionRunnable.run(StreamReceiveTask.java:162)
>  [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 19:05:33 Error applying streamed sstable: 
> java.lang.RuntimeException: Trying to get the view natural endpoint on a 
> non-data replica
>         at 
> org.apache.cassandra.db.view.ViewUtils.getViewNaturalEndpoint(ViewUtils.java:103)
>  ~[main/:na]
>         at 
> org.apache.cassandra.service.StorageProxy.mutateMV(StorageProxy.java:693) 
> ~[main/:na]
>         at 
> org.apache.cassandra.db.view.ViewManager.pushViewReplicaUpdates(ViewManager.java:145)
>  ~[main/:na]
>         at org.apache.cassandra.db.Keyspace.apply(Keyspace.java:482) 
> ~[main/:na]
>         at org.apache.cassandra.db.Keyspace.apply(Keyspace.java:387) 
> ~[main/:na]
>         at org.apache.cassandra.db.Mutation.applyUnsafe(Mutation.java:215) 
> ~[main/:na]
>         at 
> org.apache.cassandra.streaming.StreamReceiveTask$OnCompletionRunnable.run(StreamReceiveTask.java:162)
>  ~[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 19:05:40 Unknown exception caught while attempting to update 
> MaterializedView! mview.user_playlists
> java.lang.RuntimeException: Trying to get the view natural endpoint on a 
> non-data replica
>         at 
> org.apache.cassandra.db.view.ViewUtils.getViewNaturalEndpoint(ViewUtils.java:103)
>  ~[main/:na]
>         at 
> org.apache.cassandra.service.StorageProxy.mutateMV(StorageProxy.java:693) 
> ~[main/:na]
>         at 
> org.apache.cassandra.db.view.ViewManager.pushViewReplicaUpdates(ViewManager.java:145)
>  ~[main/:na]
>         at org.apache.cassandra.db.Keyspace.apply(Keyspace.java:482) 
> [main/:na]
>         at org.apache.cassandra.db.Keyspace.apply(Keyspace.java:387) 
> [main/:na]
>         at org.apache.cassandra.db.Mutation.applyUnsafe(Mutation.java:215) 
> [main/:na]
>         at 
> org.apache.cassandra.streaming.StreamReceiveTask$OnCompletionRunnable.run(StreamReceiveTask.java:162)
>  [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 19:05:40 Error applying streamed sstable: 
> java.lang.RuntimeException: Trying to get the view natural endpoint on a 
> non-data replica
>         at 
> org.apache.cassandra.db.view.ViewUtils.getViewNaturalEndpoint(ViewUtils.java:103)
>  ~[main/:na]
>         at 
> org.apache.cassandra.service.StorageProxy.mutateMV(StorageProxy.java:693) 
> ~[main/:na]
>         at 
> org.apache.cassandra.db.view.ViewManager.pushViewReplicaUpdates(ViewManager.java:145)
>  ~[main/:na]
>         at org.apache.cassandra.db.Keyspace.apply(Keyspace.java:482) 
> ~[main/:na]
>         at org.apache.cassandra.db.Keyspace.apply(Keyspace.java:387) 
> ~[main/:na]
>         at org.apache.cassandra.db.Mutation.applyUnsafe(Mutation.java:215) 
> ~[main/:na]
>         at 
> org.apache.cassandra.streaming.StreamReceiveTask$OnCompletionRunnable.run(StreamReceiveTask.java:162)
>  ~[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]
> {code}



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

Reply via email to