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

Jason Brown edited comment on CASSANDRA-8457 at 9/27/16 11:31 PM:
------------------------------------------------------------------

TL;DR - I've addressed everything except for the interaction between 
{{ClientHandshakeHandler}} and {{InternodeMessagingConnection}} (both are now 
renamed). I've noticed the odd rub there, as well, for a while, and I'll take 
some time to reconsider it.

re: "talking points"
- Backward compatibility - bit the bullet, and just yanked the old code
- streaming - [~slebresne] and I talked offline, and CASSANDRA-12229 will 
address the streaming parts, and will be worked on/reviewed concurrently. Both 
tickets will be committed together to avoid breaking streaming.

re: comments section 1
- Netty openssl - when I implemented this back in February, there was no 
mechanism to use {{KeyFactoryManager}} with the OpenSSL implementation. 
Fortunately, this has changed since I last checked in, so I've deleted the 
extra {{keyfile}} and friends entries from the yaml/{{Config}}.
- "old code" - deleted now
- package javadoc - I absolutely want this :), I just want things to be more 
solid code-wise before diving into that work.
- naming - names are now more consistent using In/Out (or Inbound/Outbound), 
and use of client/server is removed.

re: comments section 2
- {{getSocketThreads()}} - I've removed this for now, and will be resolved with 
CASSANDRA-12229
- {{MessagingService}} renames - done
- {{MessagingService#createConnection()}} In the previous implementation, 
{{OutboundTcpConnectionPool}} only blocked on creating the threads for it's 
wrapped {{OutboundTcpConnection}} instances (gossip, large, and small 
messages). No sockets were actually opened until a message was actually sent to 
that peer {{OutboundTcpConnection#connect()}}. Since we do not spawn a separate 
thread for each connection type (even though we will have separate sockets), I 
don't think it's necessary to block {{MessagingService#createConnection()}}, or 
more correctly now, {{MessagingService.NettySender#getMessagingConnection()}}.
- "Seems {{NettySender.listen()}} always starts a non-secure connection" - You 
are correct; however, looks like we've always been doing it that way (for 
better or worse). I've gone ahead and made the change (it's a one liner, plus a 
couple extra for error checking).
- {{ClientConnect#connectComplete}} - I've renamed the function to be more 
accurate ({{connectCallback}}).
- {{CoalescingMessageOutHandler}} - done

Other issues resolved, as well. Branch has been pushed (with several commits at 
the top) and tests running.



was (Author: jasobrown):
TL;DR - I've addressed everything except for the interaction between 
{{ClientHandshakeHandler}} and {{Interno -deMessagingConnection}} (both are 
noew renamed). I've noticed the odd rub there, as well, for a while, and I'll 
take some time to reconsider it.

re: "talking points"
- Backward compatibility - bit the bullet, and just yanked the old code
- streaming - [~slebresne] and I talked offline, and CASSANDRA-12229 will 
address the streaming parts, and will be worked on/reviewed concurrently. Both 
tickets will be committed together to avoid breaking streaming.

re: comments section 1
- Netty openssl - when I implemented this back in February, there was no 
mechanism to use {{KeyFactoryManager}} with the OpenSSL implementaion. 
Fortunately, this has changed since I last checked in, so I've deleted the 
extra {{keyfile}} and friends entries from the yaml/{{Config}}.
- "old code" - deleted now
- package javadoc - I absolutely want this :), I just want things to be more 
solid code-wise before diving into that work.
- naming - names are now more consistent using In/Out (or Inbound/Outbound), 
and use of client/server is removed.

re: comments section 2
- {{getSocketThreads()}} - I've removed this for now, and will be resolved with 
CASSANDRA-12229
- {{MessagingService}} renames - done
- {{MessagingService#createConnection()}} In the previous implementation, 
{{OutboundTcpConnectionPool}} only blocked on creating the threads for it's 
wrapped {{OutboundTcpConnection}} instances (gossip, large, and small 
messages). No sockets were actually opened until a message was actually sent to 
that peer {{OutboundTcpConnection#connect()}}. Since we do not spawn a separate 
thread for each connection type (even though we will have separate sockets), I 
don't think it's necessary to block {{MessagingService#createConnection()}}, or 
more correctly now, {{MessagingService.NettySender#getMessagingConnection()}}.
- "Seems {{NettySender.listen()}} always starts a non-secure connection" - You 
are correct; however, looks like we've always been doing it that way (for 
better or worse). I've gone ahead and made the change (it's a one liner, plus a 
couple extra for error checking).
- {{ClientConnect#connectComplete}} - I've renmaed the function to be more 
accurate ({{connectCallback}}).
- {{CoalescingMessageOutHandler}} - done

Other issues resolved, as well. Branch has been pushed (with several commits at 
the top) and tests running.


> nio MessagingService
> --------------------
>
>                 Key: CASSANDRA-8457
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-8457
>             Project: Cassandra
>          Issue Type: New Feature
>            Reporter: Jonathan Ellis
>            Assignee: Jason Brown
>            Priority: Minor
>              Labels: netty, performance
>             Fix For: 4.x
>
>
> Thread-per-peer (actually two each incoming and outbound) is a big 
> contributor to context switching, especially for larger clusters.  Let's look 
> at switching to nio, possibly via Netty.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to