Petr Krch created HBASE-29356:
---------------------------------

             Summary: Incorrect split behavior when region information is 
missing
                 Key: HBASE-29356
                 URL: https://issues.apache.org/jira/browse/HBASE-29356
             Project: HBase
          Issue Type: Bug
          Components: Normalizer
    Affects Versions: 2.6.2, 2.5.6
         Environment: Not environment-specific — this is a clear logic bug in 
{{{}SimpleRegionNormalizer{}}}. It occurs deterministically when region size 
data is missing and can be reproduced via unit tests.
            Reporter: Petr Krch
         Attachments: fix-count-unknown-region-size-SimpleRegionNormalizer.patch

We have identified a bug in the {{SimpleRegionNormalizer}} logic that leads to 
incorrect region splits when region size information is missing. If the size 
cannot be determined for one or more regions (e.g. due to unavailable metrics 
from RegionServers), the average region size calculation becomes incorrect. 
This results in a scenario where *all* regions may be considered too large and 
get split unintentionally.

*Observed Behavior:*

When region size data is not available (e.g., {{getRegionSizeMB()}} returns 
-1), the computed average size does not account for that, and regions with 
valid size may appear excessively large compared to the average — resulting in 
multiple unnecessary splits.

*Expected Behavior:*

If region size is unknown for some regions, those regions should be skipped 
during normalization. The average region size should be computed only from the 
regions for which the size is known. No region should be split or merged unless 
its size is known.

*Patch:*

We are submitting a patch that:
 * Skips regions with unknown size from average size computation.

 * Prevents split and merge operations on regions with unknown size.

 * Adds unit tests for scenarios with partial or total absence of size data.

*Patch author:* Milan Vymazal <milan.vyma...@firma.seznam.cz>

*Tests:*
 * {{testSplitOfLargeRegionIfOneIsNotKnow}} verifies correct behavior when one 
region has unknown size.

 * {{testSplitOfAllUnknownSize}} ensures that no split happens if size data is 
missing for all regions.

*Reproduction:*

Unfortunately, we are unable to reliably reproduce this bug in a live 
environment, since we cannot easily simulate the condition where RegionServer 
metrics are missing. However, we have confirmed the behavior through code 
analysis and the added unit tests.



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

Reply via email to