Chu Cheng Li created HDDS-16722:
-----------------------------------
Summary: Serve ReadBlock over Ratis read-only data streams on the
datanode
Key: HDDS-16722
URL: https://issues.apache.org/jira/browse/HDDS-16722
Project: Apache Ozone
Issue Type: Sub-task
Components: Ozone Datanode
Reporter: Chu Cheng Li
Assignee: Chu Cheng Li
HDDS-9904 adds a streaming block read over the Ratis data stream, as an
alternative to the gRPC streaming read. This sub-task covers the datanode side.
It is split out of https://github.com/apache/ozone/pull/10743, which was too
large to review in one piece.
* {{ContainerStateMachine}} implements {{transferTo(Message,
WritableByteChannel)}} for ReadBlock. It runs the request through the
dispatcher's streaming read and writes each response to the read-only stream as
one reply: the length of the metadata, the response without its data, then the
data.
* Read pipelines of closed containers have random IDs with no Raft group behind
them, so a read-only stream opened on one fails with a group mismatch.
{{ClosedContainerReadResolver}}, a Ratis {{DataStreamApi.Resolver}}
(RATIS-2603), serves these reads by container instead, when the container is
closed and the request names this datanode.
* A new {{DatanodeVersion}}, {{RATIS_DATASTREAM_READ_BLOCK_SUPPORT}}, tells
clients which datanodes can serve it.
Testing: unit tests for the replies and the resolver, and an end-to-end test
that reads a block with a plain Ratis client.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]