You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ozone.apache.org by ca...@apache.org on 2021/01/15 02:32:35 UTC
[ozone] branch master updated: HDDS-4674. Bucket usedBytes
inaccurate because of preallocated blocks (#1783)
This is an automated email from the ASF dual-hosted git repository.
captainzmc pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozone.git
The following commit(s) were added to refs/heads/master by this push:
new e1601c5 HDDS-4674. Bucket usedBytes inaccurate because of preallocated blocks (#1783)
e1601c5 is described below
commit e1601c543330822ec0959648dac060c07b74a43e
Author: Sammi Chen <sa...@apache.org>
AuthorDate: Fri Jan 15 10:32:17 2021 +0800
HDDS-4674. Bucket usedBytes inaccurate because of preallocated blocks (#1783)
---
.../hadoop/ozone/client/rpc/TestOzoneRpcClientAbstract.java | 10 ++++++++++
.../apache/hadoop/ozone/om/request/key/OMKeyCommitRequest.java | 4 +++-
2 files changed, 13 insertions(+), 1 deletion(-)
diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestOzoneRpcClientAbstract.java b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestOzoneRpcClientAbstract.java
index 2dbb73a..a09a266 100644
--- a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestOzoneRpcClientAbstract.java
+++ b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestOzoneRpcClientAbstract.java
@@ -892,6 +892,7 @@ public abstract class TestOzoneRpcClientAbstract {
// blocks will succeed,while the later block will fail.
bucket.setQuota(OzoneQuota.parseQuota(
4 * blockSize + " Bytes", 100));
+
try {
OzoneOutputStream out = bucket.createKey(UUID.randomUUID().toString(),
valueLength, STAND_ALONE, ONE, new HashMap<>());
@@ -914,6 +915,15 @@ public abstract class TestOzoneRpcClientAbstract {
store.getVolume(volumeName).getBucket(bucketName).getUsedBytes());
Assert.assertEquals(3, countException);
+
+ // key with 0 bytes, usedBytes should not increase.
+ bucket.setQuota(OzoneQuota.parseQuota(
+ 5 * blockSize + " Bytes", 100));
+ OzoneOutputStream out = bucket.createKey(UUID.randomUUID().toString(),
+ valueLength, STAND_ALONE, ONE, new HashMap<>());
+ out.close();
+ Assert.assertEquals(4 * blockSize,
+ store.getVolume(volumeName).getBucket(bucketName).getUsedBytes());
}
@Test
diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyCommitRequest.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyCommitRequest.java
index ed795c2..48d71e7 100644
--- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyCommitRequest.java
+++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/request/key/OMKeyCommitRequest.java
@@ -184,6 +184,8 @@ public class OMKeyCommitRequest extends OMKeyRequest {
omKeyInfo.setModificationTime(commitKeyArgs.getModificationTime());
// Update the block length for each block
+ List<OmKeyLocationInfo> allocatedLocationInfoList =
+ omKeyInfo.getLatestVersionLocations().getLocationList();
omKeyInfo.updateLocationInfoList(locationInfoList);
// Set the UpdateID to current transactionLogIndex
@@ -206,7 +208,7 @@ public class OMKeyCommitRequest extends OMKeyRequest {
// the actual Key size, and the total Block size applied before should
// be subtracted.
long correctedSpace = omKeyInfo.getDataSize() * factor -
- locationInfoList.size() * scmBlockSize * factor;
+ allocatedLocationInfoList.size() * scmBlockSize * factor;
omBucketInfo.incrUsedBytes(correctedSpace);
omClientResponse = new OMKeyCommitResponse(omResponse.build(),
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@ozone.apache.org
For additional commands, e-mail: commits-help@ozone.apache.org