drill-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From parthchandra <...@git.apache.org>
Subject [GitHub] drill pull request #950: DRILL-5431: SSL Support
Date Thu, 05 Oct 2017 01:14:17 GMT
Github user parthchandra commented on a diff in the pull request:

    https://github.com/apache/drill/pull/950#discussion_r142830326
  
    --- Diff: contrib/native/client/src/clientlib/drillClientImpl.cpp ---
    @@ -250,7 +205,15 @@ void DrillClientImpl::doWriteToSocket(const char* dataPtr, size_t
bytesToWrite,
         // Write all the bytes to socket. In case of error when all bytes are not successfully
written
         // proper errorCode will be set.
         while(1) {
    -        size_t bytesWritten = m_socket.write_some(boost::asio::buffer(dataPtr, bytesToWrite),
errorCode);
    +        size_t bytesWritten;
    +        {
    +            boost::lock_guard<boost::mutex> lock(m_channelMutex);
    --- End diff --
    
    Oh this was found by Rob Wu. The problem occurs when the heartbeat timer has gone off
and we are in the handler which is about to send off a heartbeat. Before the heartbeat is
sent if the caller deletes DrillClientImpl (via DrillClient) then the channel may be closed
and the pointer to the channel may be set to null causing the heartbeat send to crash. This
did not occur previously because the socket was not a pointer and/or boost was able to handle
it quite nicely. 


---

Mime
View raw message