[ 
https://issues.apache.org/jira/browse/HDDS-12658?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Siddhant Sangwan reassigned HDDS-12658:
---------------------------------------

    Assignee: Siddhant Sangwan

> Verify datanode space availability when selecting pipeline to write to
> ----------------------------------------------------------------------
>
>                 Key: HDDS-12658
>                 URL: https://issues.apache.org/jira/browse/HDDS-12658
>             Project: Apache Ozone
>          Issue Type: Sub-task
>          Components: SCM
>            Reporter: Siddhant Sangwan
>            Assignee: Siddhant Sangwan
>            Priority: Major
>
> When writing in Ozone, SCM selects a container to write to. We have a 
> PipelineChoosePolicy interface that's used to select which pipeline the write 
> will go to. The default implementation picks a pipeline randomly. However it 
> doesn't check whether the Datanodes in this pipeline have enough disk space 
> available. If a full pipeline is handed over to the client, it can cause 
> writes to fail and reduce write performance.
> We do have a check later on in that code path that checks whether the chosen 
> container has sufficient space:
> {code}
> containerInfo.getUsedBytes() + size <= this.containerSize
> {code}
> But this in itself is not sufficient.
> I propose adding some common logic to only pick a pipeline if all the 
> Datanodes in that pipeline have sufficient available space. All 
> implementations of PipelineChoosePolicy should use it. I need to check how 
> this area is handling parallel writes and other synchronization/race details.
> Note that we also have another implementation of the PipelineChoosePolicy, 
> CapacityPipelineChoosePolicy:
> {code}
> Pipeline choose policy that randomly choose pipeline with relatively lower 
> utilization.
> {code}
> I think all policies including this one will benefit from having the proposed 
> check.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@ozone.apache.org
For additional commands, e-mail: issues-h...@ozone.apache.org

Reply via email to