[ 
https://issues.apache.org/jira/browse/HDDS-12691?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17939990#comment-17939990
 ] 

Peter Lee commented on HDDS-12691:
----------------------------------

Sure, thanks.

> Calculation of committed space in Datanode seems incorrect
> ----------------------------------------------------------
>
>                 Key: HDDS-12691
>                 URL: https://issues.apache.org/jira/browse/HDDS-12691
>             Project: Apache Ozone
>          Issue Type: Sub-task
>          Components: Ozone Datanode
>            Reporter: Siddhant Sangwan
>            Assignee: Peter Lee
>            Priority: Major
>
> The following method is called on every writeChunk request, after writing 
> bytes to the disk to update stats:
> {code}
>   public void incrWriteBytes(long bytes) {
>     long unused = getMaxSize() - getBytesUsed();
>     this.writeBytes.addAndGet(bytes);
>     /*
>        Increase the cached Used Space in VolumeInfo as it
>        maybe not updated, DU or DedicatedDiskSpaceUsage runs
>        periodically to update the Used Space in VolumeInfo.
>      */
>     this.getVolume().incrementUsedSpace(bytes);
>     // only if container size < max size
>     if (committedSpace && unused > 0) {
>       //with this write, container size might breach max size
>       long decrement = Math.min(bytes, unused);
>       this.getVolume().incCommittedBytes(0 - decrement);
>     }
>   }
> {code}
> For a container, 5GB (default) is committed when the container is created. 
> Then every writeChunk is supposed to increment usedSpace and decrement 
> committedSpace. Here, the logic of long decrement = Math.min(bytes, unused); 
> seems incorrect to me.
> Consider that the latest writeChunk wrote 256MB into a close-to-full 
> container. Assume that now, unused = getMaxSize() - getBytesUsed() = 100MB. 
> The current logic would decrement the committedSpace by 100MB, whereas it 
> should have been decremented by 256MB.
> Moreover, what about the case where the because of the latest chunk, the used 
> size of the container exceeds the max size (used > max, for example I've seen 
> 13GB containers in actual clusters since the max is just a soft limit), 
> shouldn't we still decrement the committed space by getMaxSize() - 
> (getBytesUsed() - bytes)? That's the remaining amount of committed space that 
> this container was taking up in the volume before the "bytes" sized chunk was 
> written to it.



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