[ https://issues.apache.org/jira/browse/CASSANDRA-9590?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14716267#comment-14716267 ]
Robert Stupp commented on CASSANDRA-9590: ----------------------------------------- The code looks good so far and configuration and lifecycle look better now. Thanks for the contribution! * Unit tests - can you add unit tests for the new {{NativeTransportService}} class that tests the various combinations (plain/encrypted/both) and lifecycle (initialize/start/restart/stop/destroy) to ensure it doesn't break anything? * Dtests - can you also add a dtest that tests the SSL upgrade scenario we discussed? * Can you rebase against current cassandra-3.0 branch? * {{NativeTransportService}} ** License header is missing ** Nit: code formatting in {{NativeTransportService}} ** Nit: Like to replace the {{Callable}} code with a lambda in {{initialize()}} (not with a stream) ? ** Lifecycle between {{initialize()}} and {{destroy()}} - the first is synchroninzed and the latter is not. {{destroy()}} also doesn’t reset {{initialized}} field. ** I’d prefer to have the {{servers}} field being set from {{initialize()}} using {{Collections.singletonList()}}/{{Arrays.asList()}} - no strong objection on this, though. ** {{destroy()}} introduces another 2 seconds of shutdown delay ({{eventExecutorGroup.shutdownGracefully();}}). The _reasonable default quiet period_ (as Netty doc says) is 2 seconds quiet period plus 15 seconds timeout. But otherwise a good choice to go away from the deprecated {{shutdown()}} method. Mind to add @Deprecated to {{RequestThreadPoolExecutor.shutdown()}} ? ** {{destroy()}} now “await”s worker and event groups to shutdown. (You might also use {{awaitUninterruptibly()}} as it is a Netty Future.) Isn’t this (await) what {{shutdownGracefully()}} already does? As soon as the unit tests and dtest are in place I’ll continue the review. You may put a a self-signed cert/keystore for that into {{test/conf}} - maybe with a short script how to generate the keystore from command line in the comment of the unit test/dtest. > Support for both encrypted and unencrypted native transport connections > ----------------------------------------------------------------------- > > Key: CASSANDRA-9590 > URL: https://issues.apache.org/jira/browse/CASSANDRA-9590 > Project: Cassandra > Issue Type: Improvement > Components: Core > Reporter: Stefan Podkowinski > Fix For: 2.1.x > > > Enabling encryption for native transport currently turns SSL exclusively on > or off for the opened socket. Migrating from plain to encrypted requires to > migrate all native clients as well and redeploy all of them at the same time > after starting the SSL enabled Cassandra nodes. > This patch would allow to start Cassandra with both an unencrypted and ssl > enabled native port. Clients can connect to either, based whether they > support ssl or not. > This has been implemented by introducing a new {{native_transport_port_ssl}} > config option. > There would be three scenarios: > * client encryption disabled: native_transport_port unencrypted, port_ssl not > used > * client encryption enabled, port_ssl not set: encrypted native_transport_port > * client encryption enabled and port_ssl set: native_transport_port > unencrypted, port_ssl encrypted > This approach would keep configuration behavior fully backwards compatible. > Patch proposal (tests will be added later in case people will speak out in > favor for the patch): > [Diff > trunk|https://github.com/apache/cassandra/compare/trunk...spodkowinski:feat/optionalnativessl], > > [Patch against > trunk|https://github.com/apache/cassandra/compare/trunk...spodkowinski:feat/optionalnativessl.patch] -- This message was sent by Atlassian JIRA (v6.3.4#6332)