-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/33620/#review84232
-----------------------------------------------------------


Thanks for the patch. A few more comments below.


clients/src/main/java/org/apache/kafka/clients/ClientUtils.java
<https://reviews.apache.org/r/33620/#comment136248>

    Since this property has a default, the key will always be available. So, we 
don't need the check on containsKey().



clients/src/main/java/org/apache/kafka/clients/producer/KafkaProducer.java
<https://reviews.apache.org/r/33620/#comment136228>

    Do we need config.values? Could we just pass in config.originals() as we do 
for the serializer?



clients/src/main/java/org/apache/kafka/common/config/SecurityConfigs.java
<https://reviews.apache.org/r/33620/#comment136234>

    Since all the configs are SSL specific, should we rename it to 
SslSecurityConfigs? Then, later on, we can add a SaslSecurityConfigs.



clients/src/main/java/org/apache/kafka/common/config/SecurityConfigs.java
<https://reviews.apache.org/r/33620/#comment136235>

    This seems to be client specific. Perhaps it should be part of 
ClientCommonConfigs.



clients/src/main/java/org/apache/kafka/common/network/Channel.java
<https://reviews.apache.org/r/33620/#comment136137>

    These don't seem to be used. Are they useful?



clients/src/main/java/org/apache/kafka/common/network/SSLTransportLayer.java
<https://reviews.apache.org/r/33620/#comment136200>

    Could you describe the typical handshake flow in the comment?



clients/src/main/java/org/apache/kafka/common/network/SSLTransportLayer.java
<https://reviews.apache.org/r/33620/#comment136199>

    Don't we need to set the interest ops for key depending on the 
handshakeStatus?



clients/src/main/java/org/apache/kafka/common/network/SSLTransportLayer.java
<https://reviews.apache.org/r/33620/#comment136150>

    If we are re-getting the handshake state on every call, can handshakeStatus 
be local?



clients/src/main/java/org/apache/kafka/common/network/SSLTransportLayer.java
<https://reviews.apache.org/r/33620/#comment136145>

    Should the test be >= ? There are a few other places where we check for > 
instead of >=.



clients/src/main/java/org/apache/kafka/common/network/SSLTransportLayer.java
<https://reviews.apache.org/r/33620/#comment136146>

    available data => available data size



clients/src/main/java/org/apache/kafka/common/network/SSLTransportLayer.java
<https://reviews.apache.org/r/33620/#comment136156>

    It seems the flush() here needs to check if the socket is writable.



clients/src/main/java/org/apache/kafka/common/network/SSLTransportLayer.java
<https://reviews.apache.org/r/33620/#comment136180>

    I am concerned about the concurrency here. The interest ops can be set in 
the task thread and the selector thread. How do we guarantee that the right 
interest bit is set in the end?



clients/src/main/java/org/apache/kafka/common/network/SSLTransportLayer.java
<https://reviews.apache.org/r/33620/#comment136181>

    It seems that the return result can be indeterministic, depending on 
whether the task completes or not.



clients/src/main/java/org/apache/kafka/common/network/SSLTransportLayer.java
<https://reviews.apache.org/r/33620/#comment136185>

    Would it be better to just throw the exception in the NOT_HANDSHAKING case 
in handshake()?



clients/src/main/java/org/apache/kafka/common/network/SSLTransportLayer.java
<https://reviews.apache.org/r/33620/#comment136142>

    Should we add a check and throw an IllegalStateException if netWriteBuffer 
is not empty?



clients/src/main/java/org/apache/kafka/common/network/SSLTransportLayer.java
<https://reviews.apache.org/r/33620/#comment136182>

    Why do we need to handle NEED_TASK here instead of just in handshake()?



clients/src/main/java/org/apache/kafka/common/network/SSLTransportLayer.java
<https://reviews.apache.org/r/33620/#comment136179>

    Not sure why we are looping back here. If the HandshakeStatus is 
NEED_UNWRAP, we loop back w/o reading more data from the socket, will we get 
into infinite loop?



clients/src/main/java/org/apache/kafka/common/network/SSLTransportLayer.java
<https://reviews.apache.org/r/33620/#comment136211>

    Hmm, shoudn't we check for remaining() > 0 here?



clients/src/main/java/org/apache/kafka/common/network/SSLTransportLayer.java
<https://reviews.apache.org/r/33620/#comment136237>

    Could we rename unwrap as sth like result?



clients/src/main/java/org/apache/kafka/common/network/SSLTransportLayer.java
<https://reviews.apache.org/r/33620/#comment136243>

    When the buffer overflow, what can happen is that we read all bytes for a 
response from netwrok. Then we hit the buffer overflow. In this case, we want 
to drain all bytes from the app buffer into dst in the read() call. Otherwise, 
the next selector.poll() can take arbitrarily long since there is no more byte 
from the network. Not sure how this is handled here.



clients/src/main/java/org/apache/kafka/common/network/SSLTransportLayer.java
<https://reviews.apache.org/r/33620/#comment136220>

    Not sure why we need to special case this.



clients/src/main/java/org/apache/kafka/common/network/SSLTransportLayer.java
<https://reviews.apache.org/r/33620/#comment136219>

    Not sure why we need the loop here. It seems that netReadBuffer.position is 
always 0 after the compact in line 357.



clients/src/main/java/org/apache/kafka/common/network/SSLTransportLayer.java
<https://reviews.apache.org/r/33620/#comment136244>

    Should we stop reading when a buffer is not completely filled?



clients/src/main/java/org/apache/kafka/common/network/SSLTransportLayer.java
<https://reviews.apache.org/r/33620/#comment136204>

    Should we throw an IllegalStateException?



clients/src/main/java/org/apache/kafka/common/network/SSLTransportLayer.java
<https://reviews.apache.org/r/33620/#comment136207>

    How do we handle the case that we have fully consumed the data in src, but 
haven't flushed all data to the socket? Currently, the caller in the Selector 
will think that all bytes have been sent and will turn off the interest bit for 
writes. 
    
    This is a bit tricky. We can't just play around the returned size since 
transmission determines whether a send completes based on the remaining bytes 
reported in Send (which typically is just the remaining of the ByteBuffer).



clients/src/main/java/org/apache/kafka/common/network/Selector.java
<https://reviews.apache.org/r/33620/#comment136230>

    Instead of maintaining this map, perhaps it's simplier and more efficient 
to (1) put the channel in transmissions and (2) maintain an id->channel map 
instead of an id->SelectionKey map (keys).



clients/src/main/java/org/apache/kafka/common/network/Selector.java
<https://reviews.apache.org/r/33620/#comment136128>

    Would it be better to rename channel.connect to sth like prepare()? The 
confusion is that the key is already connected and we are trying to connect 
again.



clients/src/main/java/org/apache/kafka/common/network/Selector.java
<https://reviews.apache.org/r/33620/#comment136233>

    Not sure why we need to change to a while loop. The code before seems 
clearer.


- Jun Rao


On May 21, 2015, 5:37 p.m., Sriharsha Chintalapani wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/33620/
> -----------------------------------------------------------
> 
> (Updated May 21, 2015, 5:37 p.m.)
> 
> 
> Review request for kafka.
> 
> 
> Bugs: KAFKA-1690
>     https://issues.apache.org/jira/browse/KAFKA-1690
> 
> 
> Repository: kafka
> 
> 
> Description
> -------
> 
> KAFKA-1690. new java producer needs ssl support as a client.
> 
> 
> KAFKA-1690. new java producer needs ssl support as a client.
> 
> 
> KAFKA-1690. new java producer needs ssl support as a client.
> 
> 
> KAFKA-1690. new java producer needs ssl support as a client. SSLFactory tests.
> 
> 
> KAFKA-1690. new java producer needs ssl support as a client. Added 
> PrincipalBuilder.
> 
> 
> KAFKA-1690. new java producer needs ssl support as a client. Addressing 
> reviews.
> 
> 
> KAFKA-1690. new java producer needs ssl support as a client. Addressing 
> reviews.
> 
> 
> KAFKA-1690. new java producer needs ssl support as a client. Addressing 
> reviews.
> 
> 
> KAFKA-1690. new java producer needs ssl support as a client. Fixed minor 
> issues with the patch.
> 
> 
> KAFKA-1690. new java producer needs ssl support as a client. Fixed minor 
> issues with the patch.
> 
> 
> Diffs
> -----
> 
>   build.gradle cd2aa838fd53e8124f308979b1d70efe0c5725a6 
>   checkstyle/import-control.xml f2e6cec267e67ce8e261341e373718e14a8e8e03 
>   clients/src/main/java/org/apache/kafka/clients/ClientUtils.java 
> 0d68bf1e1e90fe9d5d4397ddf817b9a9af8d9f7a 
>   clients/src/main/java/org/apache/kafka/clients/consumer/ConsumerConfig.java 
> bdff518b732105823058e6182f445248b45dc388 
>   clients/src/main/java/org/apache/kafka/clients/consumer/KafkaConsumer.java 
> d301be4709f7b112e1f3a39f3c04cfa65f00fa60 
>   clients/src/main/java/org/apache/kafka/clients/producer/KafkaProducer.java 
> 8e336a3aa96c73f52beaeb56b931baf4b026cf21 
>   clients/src/main/java/org/apache/kafka/clients/producer/ProducerConfig.java 
> 187d0004c8c46b6664ddaffecc6166d4b47351e5 
>   clients/src/main/java/org/apache/kafka/common/config/AbstractConfig.java 
> c4fa058692f50abb4f47bd344119d805c60123f5 
>   clients/src/main/java/org/apache/kafka/common/config/SecurityConfigs.java 
> PRE-CREATION 
>   clients/src/main/java/org/apache/kafka/common/network/Authenticator.java 
> PRE-CREATION 
>   clients/src/main/java/org/apache/kafka/common/network/Channel.java 
> PRE-CREATION 
>   clients/src/main/java/org/apache/kafka/common/network/ChannelBuilder.java 
> PRE-CREATION 
>   
> clients/src/main/java/org/apache/kafka/common/network/DefaultAuthenticator.java
>  PRE-CREATION 
>   
> clients/src/main/java/org/apache/kafka/common/network/PlainTextChannelBuilder.java
>  PRE-CREATION 
>   
> clients/src/main/java/org/apache/kafka/common/network/PlainTextTransportLayer.java
>  PRE-CREATION 
>   
> clients/src/main/java/org/apache/kafka/common/network/SSLChannelBuilder.java 
> PRE-CREATION 
>   clients/src/main/java/org/apache/kafka/common/network/SSLFactory.java 
> PRE-CREATION 
>   
> clients/src/main/java/org/apache/kafka/common/network/SSLTransportLayer.java 
> PRE-CREATION 
>   clients/src/main/java/org/apache/kafka/common/network/Selectable.java 
> b5f8d83e89f9026dc0853e5f92c00b2d7f043e22 
>   clients/src/main/java/org/apache/kafka/common/network/Selector.java 
> 57de0585e5e9a53eb9dcd99cac1ab3eb2086a302 
>   clients/src/main/java/org/apache/kafka/common/network/TransportLayer.java 
> PRE-CREATION 
>   
> clients/src/main/java/org/apache/kafka/common/protocol/SecurityProtocol.java 
> dab1a94dd29563688b6ecf4eeb0e180b06049d3f 
>   
> clients/src/main/java/org/apache/kafka/common/security/auth/DefaultPrincipalBuilder.java
>  PRE-CREATION 
>   
> clients/src/main/java/org/apache/kafka/common/security/auth/KafkaPrincipal.java
>  PRE-CREATION 
>   
> clients/src/main/java/org/apache/kafka/common/security/auth/PrincipalBuilder.java
>  PRE-CREATION 
>   clients/src/main/java/org/apache/kafka/common/utils/Utils.java 
> f73eedb030987f018d8446bb1dcd98d19fa97331 
>   clients/src/test/java/org/apache/kafka/common/network/EchoServer.java 
> PRE-CREATION 
>   clients/src/test/java/org/apache/kafka/common/network/SSLFactoryTest.java 
> PRE-CREATION 
>   clients/src/test/java/org/apache/kafka/common/network/SSLSelectorTest.java 
> PRE-CREATION 
>   clients/src/test/java/org/apache/kafka/common/network/SelectorTest.java 
> d5b306b026e788b4e5479f3419805aa49ae889f3 
>   clients/src/test/java/org/apache/kafka/common/utils/UtilsTest.java 
> 2ebe3c21f611dc133a2dbb8c7dfb0845f8c21498 
>   clients/src/test/java/org/apache/kafka/test/TestSSLUtils.java PRE-CREATION 
> 
> Diff: https://reviews.apache.org/r/33620/diff/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Sriharsha Chintalapani
> 
>

Reply via email to