hadoop-hdfs-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Stephen (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HDFS-10311) libhdfs++: DatanodeConnection::Cancel should not delete the underlying socket
Date Thu, 21 Apr 2016 20:28:13 GMT

    [ https://issues.apache.org/jira/browse/HDFS-10311?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15252611#comment-15252611

Stephen commented on HDFS-10311:

+1. Though it may be a good idea to release the mutex before logging. Seems easy enough to

 void DataNodeConnectionImpl::Cancel() {
-  conn_.reset();
+  mutex_guard state_lock(state_lock_);
+  std::string err = SafeDisconnect(conn_.get());
+  if(!err.empty()) {
+    LOG_WARN(kBlockReader, << "Error disconnecting socket in DataNodeConnectionImpl::Cancel,
" << err);
+  }

> libhdfs++: DatanodeConnection::Cancel should not delete the underlying socket
> -----------------------------------------------------------------------------
>                 Key: HDFS-10311
>                 URL: https://issues.apache.org/jira/browse/HDFS-10311
>             Project: Hadoop HDFS
>          Issue Type: Sub-task
>          Components: hdfs-client
>            Reporter: James Clampffer
>            Assignee: James Clampffer
>         Attachments: HDFS-10311.HDFS-8707.000.patch, HDFS-10311.HDFS-8707.001.patch,
> DataNodeConnectionImpl calls reset on the unique_ptr that references the underlying asio::tcp::socket.
 If this happens after the continuation pipeline checks the cancel state but before asio uses
the socket it will segfault because unique_ptr::reset will explicitly change it's value to
> Cancel should only call shutdown() and close() on the socket but keep the instance of
it alive.  The socket can probably also be turned into a member of DataNodeConnectionImpl
to get rid of the unique pointer and simplify things a bit.  

This message was sent by Atlassian JIRA

View raw message