Siddhant Sangwan created HDDS-12657:
---------------------------------------

             Summary: Change logic for checking whether a volume has enough 
space
                 Key: HDDS-12657
                 URL: https://issues.apache.org/jira/browse/HDDS-12657
             Project: Apache Ozone
          Issue Type: Sub-task
          Components: Ozone Datanode, SCM
            Reporter: Siddhant Sangwan


This logic is used in several places to check whether a volume has enough space.
{code}
  public static boolean hasVolumeEnoughSpace(long volumeAvailableSpace,
                                             long volumeCommittedBytesCount,
                                             long requiredSpace,
                                             long volumeFreeSpaceToSpare) {
    return (volumeAvailableSpace - volumeCommittedBytesCount) >
        Math.max(requiredSpace, volumeFreeSpaceToSpare);
  }
{code}

It should be changed to 
{code}
return (volumeAvailableSpace - volumeCommittedBytesCount - 
volumeFreeSpaceToSpare) > requiredSpace;
{code}

Why?
Take for example that volumeAvailableSpace - volumeCommittedBytesCount is 6GB. 
requiredSpace is 5GB and volumeFreeSpaceToSpare is also 5GB. The current logic 
will return true, implying that it is ok to fill up 5GB out of that 6GB such 
that only 1GB remains.

With the suggested logic, the method will return false. Of course, that 6GB 
space can still get filled up because of parallel writes to this volume and 
because we don't have a hard stop on writes when they cross min free space 
boundary, but this change should still improve things.



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

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to