Ray Mattingly created HBASE-30299:
-------------------------------------

             Summary: SimpleRegionNormalizer should not attempt to merge 
primary and secondary replicas
                 Key: HBASE-30299
                 URL: https://issues.apache.org/jira/browse/HBASE-30299
             Project: HBase
          Issue Type: Improvement
    Affects Versions: 2.6.6
            Reporter: Ray Mattingly
            Assignee: Ray Mattingly


Right now the SimpleRegionNormalizer will naively try to merge primary and 
secondary replicas, which is obviously not valid. These invalid normalization 
steps are rejected, but it's a waste of time, obviously errant, and can prevent 
normalization from ever successfully completing when secondary replicas are 
enabled.

We can and should trivially fix this by making the SimpleRegionNormalizer 
capable of differentiating between primary and secondary replicas. I believe we 
can do this succinctly enough for it to still qualify as "simple" 😁

For reference, here is the corresponding stack trace upon rejection:

 
{code:java}
2026-07-22T05:46:57,165 [normalizer-worker-0] INFO 
org.apache.hadoop.hbase.master.normalizer.RegionNormalizerWorker: failed to 
submit plan 
MergeNormalizationPlan[normalizationTargets=[NormalizationTarget[regionInfo={ENCODED
 => 99e14a2c6e7cd493a488bf99bd79fd2b, NAME => 
'associations-3,<REDACTED>,1755987304406.99e14a2c6e7cd493a488bf99bd79fd2b.', 
STARTKEY => '<REDACTED>', ENDKEY => '<REDACTED>'},regionSizeMb=4170], 
NormalizationTarget[regionInfo={ENCODED => ed03ce7a152654b546114f2c7f753f38, 
NAME => 
'associations-3,<REDACTED>,1755987304406_0001.ed03ce7a152654b546114f2c7f753f38.',
 STARTKEY => '<REDACTED>', ENDKEY => '<REDACTED>', REPLICA_ID => 
1},regionSizeMb=4170], NormalizationTarget[regionInfo={ENCODED => 
28d5389abcd870a47fc70b6ec8b1eabb, NAME => 
'associations-3,<REDACTED>,1755986877808.28d5389abcd870a47fc70b6ec8b1eabb.', 
STARTKEY => '<REDACTED>', ENDKEY => '<REDACTED>'},regionSizeMb=4196], 
NormalizationTarget[regionInfo={ENCODED => 4ed85d4429e757789ac8bf06cf348e1d, 
NAME => 
'associations-3,<REDACTED>,1755986877808_0001.4ed85d4429e757789ac8bf06cf348e1d.',
 STARTKEY => '<REDACTED>', ENDKEY => '<REDACTED>', REPLICA_ID => 
1},regionSizeMb=4196], NormalizationTarget[regionInfo={ENCODED => 
664aeafa73baa80dc079fb3b8d43ea4a, NAME => 
'associations-3,<REDACTED>,1766134153860.664aeafa73baa80dc079fb3b8d43ea4a.', 
STARTKEY => '<REDACTED>', ENDKEY => '<REDACTED>'},regionSizeMb=2081], 
NormalizationTarget[regionInfo={ENCODED => 7dc8f3f9027c362b7097fbc14a8bad76, 
NAME => 
'associations-3,<REDACTED>,1766134153860_0001.7dc8f3f9027c362b7097fbc14a8bad76.',
 STARTKEY => '<REDACTED>', ENDKEY => '<REDACTED>', REPLICA_ID => 
1},regionSizeMb=2081], NormalizationTarget[regionInfo={ENCODED => 
2c0b0bf4302b61ed3fc170be7aae0592, NAME => 
'associations-3,<REDACTED>,1766134153860.2c0b0bf4302b61ed3fc170be7aae0592.', 
STARTKEY => '<REDACTED>', ENDKEY => '<REDACTED>'},regionSizeMb=2083], 
NormalizationTarget[regionInfo={ENCODED => 0577993d4ff3ca839adb03a1f8d11951, 
NAME => 
'associations-3,<REDACTED>,1766134153860_0001.0577993d4ff3ca839adb03a1f8d11951.',
 STARTKEY => '<REDACTED>', ENDKEY => '<REDACTED>', REPLICA_ID => 
1},regionSizeMb=2083], NormalizationTarget[regionInfo={ENCODED => 
880a224d76719aabb6d8c18b8e74567c, NAME => 
'associations-3,<REDACTED>,1754972586167.880a224d76719aabb6d8c18b8e74567c.', 
STARTKEY => '<REDACTED>', ENDKEY => '<REDACTED>'},regionSizeMb=4125], 
NormalizationTarget[regionInfo={ENCODED => ded028dca4cc4a802d89f8c69ef0d581, 
NAME => 
'associations-3,<REDACTED>,1754972586167_0001.ded028dca4cc4a802d89f8c69ef0d581.',
 STARTKEY => '<REDACTED>', ENDKEY => '<REDACTED>', REPLICA_ID => 
1},regionSizeMb=4125], NormalizationTarget[regionInfo={ENCODED => 
75b73186c0878f9cc7f01de49c7497ef, NAME => 
'associations-3,<REDACTED>,1761802096163.75b73186c0878f9cc7f01de49c7497ef.', 
STARTKEY => '<REDACTED>', ENDKEY => '<REDACTED>'},regionSizeMb=4100]]].
org.apache.hadoop.hbase.exceptions.MergeRegionException: Can't merge 
non-default replicas; {ENCODED => ed03ce7a152654b546114f2c7f753f38, NAME => 
'associations-3,<REDACTED>,1755987304406_0001.ed03ce7a152654b546114f2c7f753f38.',
 STARTKEY => '<REDACTED>', ENDKEY => '<REDACTED>', REPLICA_ID => 1}
        at 
org.apache.hadoop.hbase.master.assignment.MergeTableRegionsProcedure.checkRegionsToMerge(MergeTableRegionsProcedure.java:147)
 ~[hbase-server-2.6-hubspot-SNAPSHOT.jar:2.6-hubspot-SNAPSHOT]
        at 
org.apache.hadoop.hbase.master.assignment.MergeTableRegionsProcedure.<init>(MergeTableRegionsProcedure.java:107)
 ~[hbase-server-2.6-hubspot-SNAPSHOT.jar:2.6-hubspot-SNAPSHOT]
        at org.apache.hadoop.hbase.master.HMaster$2.run(HMaster.java:2246) 
~[hbase-server-2.6-hubspot-SNAPSHOT.jar:2.6-hubspot-SNAPSHOT]
        at 
org.apache.hadoop.hbase.master.procedure.MasterProcedureUtil.submitProcedure(MasterProcedureUtil.java:132)
 ~[hbase-server-2.6-hubspot-SNAPSHOT.jar:2.6-hubspot-SNAPSHOT]
        at 
org.apache.hadoop.hbase.master.HMaster.mergeRegions(HMaster.java:2240) 
~[hbase-server-2.6-hubspot-SNAPSHOT.jar:2.6-hubspot-SNAPSHOT]
        at 
org.apache.hadoop.hbase.master.normalizer.RegionNormalizerWorker.submitMergePlan(RegionNormalizerWorker.java:311)
 ~[hbase-server-2.6-hubspot-SNAPSHOT.jar:2.6-hubspot-SNAPSHOT]
        at 
org.apache.hadoop.hbase.master.normalizer.RegionNormalizerWorker.submitPlans(RegionNormalizerWorker.java:273)
 ~[hbase-server-2.6-hubspot-SNAPSHOT.jar:2.6-hubspot-SNAPSHOT]
        at 
org.apache.hadoop.hbase.master.normalizer.RegionNormalizerWorker.run(RegionNormalizerWorker.java:198)
 ~[hbase-server-2.6-hubspot-SNAPSHOT.jar:2.6-hubspot-SNAPSHOT]
        at 
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572) ~[?:?]
        at java.util.concurrent.FutureTask.run(FutureTask.java:317) ~[?:?]
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) 
~[?:?]
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) 
~[?:?]
        at java.lang.Thread.run(Thread.java:1583) ~[?:?]
{code}
 

 



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

Reply via email to