[
https://issues.apache.org/jira/browse/HDDS-450?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16640789#comment-16640789
]
Shashikant Banerjee edited comment on HDDS-450 at 10/6/18 5:18 PM:
-------------------------------------------------------------------
Thanks [~jnp], for the review comments.
{code:java}
In ChunkOutputStream BCS should also be updated when client is blocked on the
buffer and waiting for commit-acks. Do you plan to add it in a subsequent jira?
{code}
Yes.
{code:java}
2. What is the need for adding BCS to GetCommittedBlockLengthRequestProto?
{code}
Its not required. Will remove in the next patch.
{code:java}
In ContainerStateMachine, it may be possible add the index to
ContainerRequestProto in applyTransaction method itself. In general, every
apply transaction must have a commit index. This may save
deserializing/serialzing blockDataProto and recreation of ContainerRequestProto.
{code}
AppyTransaction call happens only for Write type requests in Ratis.
ContainerRequestProto incapsulates read requests from client as well such as
ReadChunk, GetKey, ReadContainer. For these requests, there will be no commit
index generated.
{code:java}
In ChunkOutputStreamEntry class, why is the type of outputStream object not
ChunkOutputStream? Since it is typed as OutputStream, it necessitates an
instanceof check in some methods
{code}
I think the idea behind this was to support in general any stream class
extending OutputStream not specifically ChunkOutputStream currently. FYI,
ChunkoutputStreamEntry class will be removed with HDDS-582.
Will upload a new patch addressing all this.
was (Author: shashikant):
Thanks [~jnp], for the review comments.
{code:java}
In ChunkOutputStream BCS should also be updated when client is blocked on the
buffer and waiting for commit-acks. Do you plan to add it in a subsequent jira?
{code}
Yes.
{code:java}
2. What is the need for adding BCS to GetCommittedBlockLengthRequestProto?
{code}
Its not required. Will remove in the next patch.
{code:java}
In ContainerStateMachine, it may be possible add the index to
ContainerRequestProto in applyTransaction method itself. In general, every
apply transaction must have a commit index. This may save
deserializing/serialzing blockDataProto and recreation of ContainerRequestProto.
{code}
AppyTransaction call happens only for Write type requests in Ratis.
ContainerRequestProto incapsulates read requests from client as well such as
ReadChunk, GetKey, ReadContainer. For these requests, there will be no commit
index generated.
{code:java}
In ChunkOutputStreamEntry class, why is the type of outputStream object not
ChunkOutputStream? Since it is typed as OutputStream, it necessitates an
instanceof check in some methods
{code}
I think the idea behind this was to support in general any stream class
extending OutputStream not specifically ChunkOutputStream currently. FYI,
ChunkoutputStreamEntry class will be removed with HDDS-582.
Will upload a new patch addressing all this.
> Generate BlockCommitSequenceId in ContainerStateMachine for every commit
> operation in Ratis Leader
> --------------------------------------------------------------------------------------------------
>
> Key: HDDS-450
> URL: https://issues.apache.org/jira/browse/HDDS-450
> Project: Hadoop Distributed Data Store
> Issue Type: Bug
> Components: Ozone Datanode
> Reporter: Shashikant Banerjee
> Assignee: Shashikant Banerjee
> Priority: Major
> Attachments: HDDS-450.001.patch
>
>
> BlockCommitSequenceId will be increasing long value generated in the Ratis
> leader for every commit operation of a block and will be replicated over to
> the followers. This id will be updated in OM and will be reported to SCM
> which will help the most consistent copy of a open container replica in case
> the majority of the datanodes fail.
> The blockCommitSequenceId is same as the commit index of the flush(PUT_BLOCK)
> transaction in Ratis.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]