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

Joel Knighton commented on CASSANDRA-10674:
-------------------------------------------

The patch looks good for the most part.

I have one major question - in 
[mutateMV|https://github.com/apache/cassandra/compare/apache:19ff0e4...pauloricardomg:6a9be83#diff-71f06c193f5b5e270cf8ac695164f43aR720],
 before the patch, we only applied locally if the paired endpoint was the local 
endpoint, we had joined the cluster, and there were no pending endpoints.

This covered two scenarios - there was no view natural endpoint so we returned 
our own address, and the case where the base replica was also a view replica.

In the new {{mutateMV}}, pairedEndpoint.isPresent() in the conditional takes 
care of the first place but not the second while there are pendingEndpoints.

This may be valid, but it would be a deviation in behavior from the original 
code. WDYT [~pauloricardomg]?

Minor nit: 
[This|https://github.com/apache/cassandra/compare/apache:19ff0e4...pauloricardomg:6a9be83#diff-71f06c193f5b5e270cf8ac695164f43aR714]
 should read "its ring metadata yet" as opposed to "it's ring metadata yet".

> Materialized View SSTable streaming/leaving status race on decommission
> -----------------------------------------------------------------------
>
>                 Key: CASSANDRA-10674
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-10674
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Coordination, Distributed Metadata
>            Reporter: Joel Knighton
>            Assignee: Paulo Motta
>             Fix For: 3.0.1, 3.1
>
>         Attachments: leaving-node-debug.log, receiving-node-debug.log
>
>
> On decommission of a node in a cluster with materialized views, it is 
> possible for the decommissioning node to begin streaming sstables for an MV 
> base table before the receiving node is aware of the leaving status.
> The materialized view base/view replica pairing checks pending endpoints to 
> handle the case when an sstable is received from a leaving node; without the 
> leaving message, this check breaks and an exception is thrown. The streamed 
> sstable is never applied.
> Logs from a decommissioning node and a node receiving such a stream are 
> attached.



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

Reply via email to