[
https://issues.apache.org/jira/browse/CASSANDRA-18202?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17681018#comment-17681018
]
Benedict Elliott Smith commented on CASSANDRA-18202:
----------------------------------------------------
I agree there should be a short-cut in MessagingService. But I disagree we
should eliminate the `isSelf` branches.
> MessagingService should be able deliver local messages (messages to self)
> without using a network interface.
> ------------------------------------------------------------------------------------------------------------
>
> Key: CASSANDRA-18202
> URL: https://issues.apache.org/jira/browse/CASSANDRA-18202
> Project: Cassandra
> Issue Type: Improvement
> Components: Messaging/Internode
> Reporter: Jaroslaw Grabowski
> Priority: Normal
>
> At the moment, in various places in the code, there are special code paths
> for local message handling. It usually looks like this:
>
> {code:java}
> if (replica.isSelf)
> // deal with the message locally by manually invoking a handling method
> else
> messagingService.send(...){code}
>
> This pattern is error-prone, as failing to recognize local messages results
> in pushing them through a local network interface. This may introduce a
> significant performance penalty.
> It also makes understanding the code harder, as there are two separate code
> paths for message handling (local path and IVerbHandler).
> Instead, MessagingService should pass local messages directly to the
> appropriate IVerbHandler. Once this is done, all the `if (replica.isSelf) ...
> else ...` occurrences could be refactored to simply calling
> `messagingService.send(...)`. This would move message handling logic into a
> single place (IVerbHandler).
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]