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

Paulo Motta commented on CASSANDRA-13065:
-----------------------------------------

Thanks for your patch!  Overall the patch and approach looks good. Since this 
changes the behavior of streaming for both MVs and CDC, which have different 
implications, I will split review into those 2 parts.

MVs
- I like the extraction of stream descriptions into an enumeration, can you 
just add an {{OTHER}} type for backward compatibility in case another tool or 
system uses another stream description to avoid having  a null type. This can 
be probably be used on tests instead of creating custom {{TEST_TRANSFER}} or 
{{TEST_LEGACY_STREAMING}}.
- Can we also perhaps make the enum name a bit more descriptive, such as 
{{StreamingOperation}} or {{StreamingPurpose}}?
- It would be nice if you could also add a simple unit test to make sure 
descriptions are being converted correctly to {{StreamType}}.
- I don't like tying logic to "toString()" since that can change, can you add a 
{{getDescription}} method to {{StreamType}} and use that instead?
- I think we only need to run mutations through the write path on repair, since 
this is done to make base table consistent with the view which is the objective 
of repair, but not general streaming.
- Minor typo: {{sendThroughWritePatch}} -> {{sendThroughWritePath}}

CDC
- Add unit test showing that commit log segments are properly discarded when 
mutations do not go to memtable.
- It seems there are no dtests to verify CDC behavior on streaming (repair, 
bootstrap, etc), so I'd like to see some dtests showing that CDC behavior with 
streaming will be maintained with this. In order not to block the fix for MVs, 
if you want we can split the CDC part of this into another ticket.

> Consistent range movements to not require MV updates to go through write 
> paths 
> -------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-13065
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-13065
>             Project: Cassandra
>          Issue Type: Improvement
>            Reporter: Benjamin Roth
>            Assignee: Benjamin Roth
>            Priority: Critical
>             Fix For: 4.0
>
>
> Booting or decommisioning nodes with MVs is unbearably slow as all streams go 
> through the regular write paths. This causes read-before-writes for every 
> mutation and during bootstrap it causes them to be sent to batchlog.
> The makes it virtually impossible to boot a new node in an acceptable amount 
> of time.
> Using the regular streaming behaviour for consistent range movements works 
> much better in this case and does not break the MV local consistency contract.
> Already tested on own cluster.
> Bootstrap case is super easy to handle, decommission case requires 
> CASSANDRA-13064



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to