From 53723429b40e0e279a7b8feea19a56ea87b26f84 Mon Sep 17 00:00:00 2001 From: Arpit Jain Date: Sat, 18 Jul 2026 06:26:39 +0900 Subject: [PATCH] [fix](debug) roll byte sizes up at exact unit boundaries in getByteUint Signed-off-by: Arpit Jain --- .../org/apache/doris/common/util/DebugUtil.java | 8 ++++---- .../apache/doris/common/util/DebugUtilTest.java | 17 +++++++++++++++++ 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/common/util/DebugUtil.java b/fe/fe-core/src/main/java/org/apache/doris/common/util/DebugUtil.java index 6f9584afda0df0..6df8def85f7822 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/common/util/DebugUtil.java +++ b/fe/fe-core/src/main/java/org/apache/doris/common/util/DebugUtil.java @@ -103,16 +103,16 @@ public static Pair getByteUint(long value) { if (value == 0) { // nothing unit = ""; - } else if (value > TERABYTE) { + } else if (value >= TERABYTE) { unit = "TB"; doubleValue /= TERABYTE; - } else if (value > GIGABYTE) { + } else if (value >= GIGABYTE) { unit = "GB"; doubleValue /= GIGABYTE; - } else if (value > MEGABYTE) { + } else if (value >= MEGABYTE) { unit = "MB"; doubleValue /= MEGABYTE; - } else if (value > KILOBYTE) { + } else if (value >= KILOBYTE) { unit = "KB"; doubleValue /= KILOBYTE; } else { diff --git a/fe/fe-core/src/test/java/org/apache/doris/common/util/DebugUtilTest.java b/fe/fe-core/src/test/java/org/apache/doris/common/util/DebugUtilTest.java index aa599783f182f5..daa8d81bc8eeee 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/common/util/DebugUtilTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/common/util/DebugUtilTest.java @@ -84,6 +84,23 @@ public void testGetByteUint() { result = DebugUtil.getByteUint(1234567890L); // G Assert.assertEquals(result.first, Double.valueOf(1.1497809458523989)); Assert.assertEquals(result.second, "GB"); + + // exact unit boundaries should roll up to the larger unit + result = DebugUtil.getByteUint(1024L); // exactly 1 KB + Assert.assertEquals(result.first, Double.valueOf(1.0)); + Assert.assertEquals(result.second, "KB"); + + result = DebugUtil.getByteUint(1024L * 1024); // exactly 1 MB + Assert.assertEquals(result.first, Double.valueOf(1.0)); + Assert.assertEquals(result.second, "MB"); + + result = DebugUtil.getByteUint(1024L * 1024 * 1024); // exactly 1 GB + Assert.assertEquals(result.first, Double.valueOf(1.0)); + Assert.assertEquals(result.second, "GB"); + + result = DebugUtil.getByteUint(1024L * 1024 * 1024 * 1024); // exactly 1 TB + Assert.assertEquals(result.first, Double.valueOf(1.0)); + Assert.assertEquals(result.second, "TB"); } @Test