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