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]

Reply via email to