[
https://issues.apache.org/jira/browse/HDFS-12387?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16155913#comment-16155913
]
Nandakumar commented on HDFS-12387:
-----------------------------------
Thanks [~anu] for working on this, please find my initial comments.
*ContainerState Change*
Step 1) ALLOCATED -> done in SCM during allocateContainer (allocateBlock call)
Step 2) ALLOCATED to CREATING -> done by Client
Step 3) creation of container -> done by Client
Step 4) CREATING to OPEN -> done by Client
Case 1) If another client does an allocateBlock call in between step 1 and 2,
we will return {{AllocatedBlock}} with create container flag set to true. This
will cause two clients to trigger create container call to same pipeline and
one will result in CONTAINER_EXISTS exception.
Case 2) If container creation call (step 3) fails with an exception, we will
never revert the container state from CREATING to ALLOCATED.
Case 3) If step 4 fails, we will never change the container state from CREATING
to OPEN.
To solve this we can do the transition from ALLOCATED to CREATING during
{{BlockManagerImpl#allocateBlock}} call, and do a refreshContainers during each
allocateBlock call which will update the actual state of the container.
*PipelineSelector#newPipelineFromNodes*
174: No check is done before setting the pipeline replication type as
ReplicationType.STAND_ALONE and
setLifeCycleState(OzoneProtos.LifeCycleState.OPEN)
I think we should check if {{nodes.size() == 1}} before setting them.
> Ozone: Support Ratis as a first class replication mechanism
> -----------------------------------------------------------
>
> Key: HDFS-12387
> URL: https://issues.apache.org/jira/browse/HDFS-12387
> Project: Hadoop HDFS
> Issue Type: Sub-task
> Components: ozone
> Affects Versions: HDFS-7240
> Reporter: Anu Engineer
> Assignee: Anu Engineer
> Priority: Critical
> Attachments: HDFS-12387-HDFS-7240.001.patch
>
>
> Ozone container layer supports pluggable replication policies. This JIRA
> brings Apache Ratis based replication to Ozone. Apache Ratis is a java
> implementation of Raft protocol.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]