[
https://issues.apache.org/jira/browse/HDFS-941?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
stack updated HDFS-941:
-----------------------
Attachment: 941.22.v2.txt
Here's new version that will call verifiedByClient IFF return from client is
CHECKSUM_OK (Comparing old and new, the isBlockReadFully would look to have a
lesser semantic than disSendEntireByteRange). I adde the else if in the below:
{code}
- if (DataTransferProtocol.Status.read(in) == CHECKSUM_OK) {
- if (blockSender.isBlockReadFully() && datanode.blockScanner != null)
{
- datanode.blockScanner.verifiedByClient(block);
+ if (blockSender.didSendEntireByteRange()) {
+ // If we sent the entire range, then we should expect the client
+ // to respond with a Status enum.
+ try {
+ DataTransferProtocol.Status stat =
DataTransferProtocol.Status.read(in);
+ if (stat == null) {
+ LOG.warn("Client " + s.getInetAddress() + "did not send a valid
status " +
+ "code after reading. Will close connection.");
+ IOUtils.closeStream(out);
+ } else if (stat == CHECKSUM_OK) {
+ if (datanode.blockScanner != null) {
+ datanode.blockScanner.verifiedByClient(block);
+ }
}
{code}
> Datanode xceiver protocol should allow reuse of a connection
> ------------------------------------------------------------
>
> Key: HDFS-941
> URL: https://issues.apache.org/jira/browse/HDFS-941
> Project: Hadoop HDFS
> Issue Type: Improvement
> Components: data-node, hdfs client
> Affects Versions: 0.22.0
> Reporter: Todd Lipcon
> Assignee: bc Wong
> Attachments: 941.22.txt, 941.22.txt, 941.22.v2.txt, HDFS-941-1.patch,
> HDFS-941-2.patch, HDFS-941-3.patch, HDFS-941-3.patch, HDFS-941-4.patch,
> HDFS-941-5.patch, HDFS-941-6.22.patch, HDFS-941-6.patch, HDFS-941-6.patch,
> HDFS-941-6.patch, fix-close-delta.txt, hdfs-941.txt, hdfs-941.txt,
> hdfs-941.txt, hdfs-941.txt, hdfs941-1.png
>
>
> Right now each connection into the datanode xceiver only processes one
> operation.
> In the case that an operation leaves the stream in a well-defined state (eg a
> client reads to the end of a block successfully) the same connection could be
> reused for a second operation. This should improve random read performance
> significantly.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira