hadoop-hdfs-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "James Clampffer (JIRA)" <j...@apache.org>
Subject [jira] [Created] (HDFS-9108) Pointer to read buffer isn't being passed to kernel
Date Fri, 18 Sep 2015 20:32:04 GMT
James Clampffer created HDFS-9108:
-------------------------------------

             Summary: Pointer to read buffer isn't being passed to kernel
                 Key: HDFS-9108
                 URL: https://issues.apache.org/jira/browse/HDFS-9108
             Project: Hadoop HDFS
          Issue Type: Sub-task
         Environment: Ubuntu x86_64, gcc 4.8.2
            Reporter: James Clampffer
            Assignee: James Clampffer


Somewhere between InputStream->PositionRead and the asio code the pointer to the destination
buffer gets lost.  PositionRead will correctly return the number of bytes read but the buffer
won't be filled.

This only seems to effect the remote_block_reader, RPC calls are working.

Valgrind error:
Syscall param recvmsg(msg.msg_iov) points to uninitialised byte(s)

msg.msg_iov[0] should equal the buffer passed to PositionRead

Hit when using a promise to make the async call block until completion. 

auto stat = std::make_shared<std::promise<Status>>();
std::future<Status> future(stat->get_future());

size_t readCount = 0;
auto h = [stat, &readCount,buf](const Status &s, size_t bytes) {
  stat->set_value(s);
  readCount = bytes;
};

char buf[50];
inputStream->PositionRead(buf, 50, 0, h);
  
//wait for async to finish
future.get();








--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message