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

Reply via email to