Github user sohami commented on a diff in the pull request: https://github.com/apache/drill/pull/950#discussion_r140333837 --- Diff: exec/java-exec/src/main/java/org/apache/drill/exec/rpc/user/UserClient.java --- @@ -102,19 +115,78 @@ // these are used for authentication private volatile List<String> serverAuthMechanisms = null; private volatile boolean authComplete = true; + private SSLConfig sslConfig; + private Channel sslChannel; + private DrillbitEndpoint endpoint; public UserClient(String clientName, DrillConfig config, boolean supportComplexTypes, - BufferAllocator allocator, EventLoopGroup eventLoopGroup, Executor eventExecutor) { - super( - UserRpcConfig.getMapping(config, eventExecutor), - allocator.getAsByteBufAllocator(), - eventLoopGroup, - RpcType.HANDSHAKE, - BitToUserHandshake.class, - BitToUserHandshake.PARSER); + BufferAllocator allocator, EventLoopGroup eventLoopGroup, Executor eventExecutor, + DrillbitEndpoint endpoint) throws NonTransientRpcException { + super(UserRpcConfig.getMapping(config, eventExecutor), allocator.getAsByteBufAllocator(), + eventLoopGroup, RpcType.HANDSHAKE, BitToUserHandshake.class, BitToUserHandshake.PARSER); + this.endpoint = endpoint; // save the endpoint; it might be needed by SSL init. this.clientName = clientName; this.allocator = allocator; this.supportComplexTypes = supportComplexTypes; + this.sslChannel = null; + try { + this.sslConfig = new SSLConfigBuilder().config(config).mode(SSLFactory.Mode.CLIENT) + .initializeSSLContext(true).validateKeyStore(false).build(); + } catch (DrillException e) { + throw new NonTransientRpcException(e.getMessage()); --- End diff -- The exception will be thrown if there is any issue with passed parameters for SSL so it would be better if we change this exception to InvalidConnectionInfoException.
---