Description
When I run a snippet of code like this:
Map<byte[], RegionLoad> regionLoadMap = admin .getClusterStatus() .getLoad( ServerName.parseServerName( "my-server.my-company.net,60020,1693513660506" ) ) .getRegionsLoad(); for (byte[] startKey : regionLoadMap.keySet()) { RegionLoad regionLoad = regionLoadMap.get(startKey); LOG.info("Region {}: {}", Bytes.toStringBinary(startKey), regionLoad); }
I get logs like this:
Region <redacted-table-name>,<redacted row key>,1659484033280.2b89407a1223720344bed425bf3c29b0.: numberOfStores=1, numberOfStorefiles=3, storeRefCount=0, storefileUncompressedSizeMB=17998848, lastMajorCompactionTimestamp=1693211464712, storefileSizeMB=5895, compressionRatio=0.0003, memstoreSizeMB=1, readRequestsCount=118899553, writeRequestsCount=731192, rootIndexSizeKB=9, totalStaticIndexSizeKB=10413, totalStaticBloomSizeKB=6592, totalCompactingKVs=0, currentCompactedKVs=0, compactionProgressPct=NaN, completeSequenceId=78093096, dataLocality=1.0
The storefileUncompressedSizeMB is vastly larger than the storefileSizeMB, so much more that it's not believable. I checked the store files in question in this instance. Adding up the uncompressed size reported in the HFile trailers sums to 5895 MiB, exactly 1024 times less than the reported 17998848.
The reason for the misreporting is that RegionLoad#getStoreUncompressedSizeMB() converts the value from a Size object wrong.