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

Savni Nagarkar commented on CASSANDRA-16548:
--------------------------------------------

Hi [~cam1982] 

I was taking a look at the code and after tracing it through I think 
ViewMutationStage is used. It is called in

asyncWriteBatchedMutations(wrappers, localDataCenter, Stage.VIEW_MUTATION); 
like you mentioned, which passes the stage to 

sendToHintedReplicas(wrapper.mutation, replicas, wrapper.handler, 
localDataCenter, stage); and then to 

performLocally(stage, localReplica, mutation::apply, responseHandler);  

The performLocally method runs stage.maybeExecuteImmediately . This would run 
depending on the size of threads in the stage. Therefore I think we should keep 
ViewMutationStage. 

> Remove ViewMutationStage as its unused
> --------------------------------------
>
>                 Key: CASSANDRA-16548
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-16548
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Local/Other
>            Reporter: Cameron Zemek
>            Priority: Normal
>             Fix For: 4.0.x
>
>
> I been testing and tracing the code and as far as I can determine 
> ViewMutationStage is unused. Looking at StorageProxy::mutateMV if the MV 
> mutation is on same endpoint as the base table endpoint it calls 
> mutation.apply(writeCommitLog); which happens on MutationStage.
> If the endpoint is a different endpoint it ends with call to 
> asyncWriteBatchedMutations(wrappers, localDataCenter, Stage.VIEW_MUTATION); 
> which in turn calls sendToHintedReplicas. But this method only uses the 
> passed in stage if executing locally, which in case of the MV mutations is 
> never true in my testing.
> So it passes message with MUTATION_REQ which gets handled on the receiving 
> node via MutationStage.
> So at no point does the ViewMutationStage get used. I even tried to execute 
> some of the View tests that check for pending tasks on this stage. Well there 
> never even a completed task on that stage so these tests seem to wait on 
> ViewMutationStage for no reason as best I can tell.
> Even if the stage is used somewhere, its not used for all view mutations. So 
> this stage is currently in my opinion code bloat and just confusing for the 
> system operator.
>  
> An alternative solution to this ticket would be to implement 
> VIEW_MUTATION_REQ etc and have everything MV mutation related run on the 
> ViewMutationStage but that no easy change to make. See CounterMutation for 
> example.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to