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