[ 
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]

Reply via email to