Todd Lipcon resolved KUDU-2334.
       Resolution: Fixed
    Fix Version/s: 1.7.0

> OutboundTransfer::TransferStarted() isn't stateful enough with TLS socket
> -------------------------------------------------------------------------
>                 Key: KUDU-2334
>                 URL: https://issues.apache.org/jira/browse/KUDU-2334
>             Project: Kudu
>          Issue Type: Bug
>          Components: rpc
>            Reporter: Michael Ho
>            Assignee: Michael Ho
>            Priority: Major
>             Fix For: 1.7.0
> Currently, {{OutboundTransfer::TransferStarted()}} returns true if we made 
> non-zero progress in {{OutboundTransfer::SendBuffer()}}. However, this may 
> not work well when using TLS socket as {{SSL_Write()}} is stateful. So, if we 
> called {{SSL_Write()}} with the buffer of the first slice in an 
> {{OutboundTransfer}} and failed with 0 bytes written and errno {{EAGAIN}} due 
> to send buffer being full, we need to try again with the exact buffer in the 
> first slice. However, it's possible that particular {{OutboundTransfer}} may 
> be cancelled or timed-out before the next call to 
> {{OutboundTransfer::SendBuffer()}} in {{Connection::WriteHandler()}}. In 
> which case, we will skip to the next {{OutboundTransfer}} in the queue and 
> call {{SSL_Write()}} with the buffers in the next {{OutboundTransfer}}, 
> leading to the error message:
> {noformat}
> failed to write to TLS socket: error:1409F07F:SSL 
> routines:SSL3_WRITE_PENDING:bad write retry:s3_pkt.c
> {noformat}

This message was sent by Atlassian JIRA

Reply via email to