[
https://issues.apache.org/jira/browse/HBASE-30323?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
ASF GitHub Bot updated HBASE-30323:
-----------------------------------
Labels: pull-request-available (was: )
> [RSGroup] Forward-port HBASE-22658 to branch-2
> ----------------------------------------------
>
> Key: HBASE-30323
> URL: https://issues.apache.org/jira/browse/HBASE-30323
> Project: HBase
> Issue Type: Bug
> Components: rsgroup
> Affects Versions: 2.0.6, 2.2.3, 2.1.9
> Reporter: Umesh Kumar Kumawat
> Assignee: Umesh Kumar Kumawat
> Priority: Major
> Labels: pull-request-available
> Fix For: 3.0.0-alpha-1, 3.0.0
>
>
> region_mover.rb should only choose same rsgroup servers as target servers.
> In current case HMaster need to correct it. I think we can skip the process
> where HMaster tries to figure out the target host if we pass the right one.
>
> As HMaster do have one layer of protection, on its own it doesn't post any
> issue but if this issue comes with other issue like "drainig host is not
> added to draining list", then it can cause unavailibility.
> We faced it in out prod where we use different RS group for system tables ie
> hbase:meta.
> Lets say hbase:meta is on rs-sys-1.
> Before start of draining the operation where we add it to draining list
> failed. Draining script tried to drain the rs-sys-1. it tried to assign the
> hbase:meta on rs-x. HMaster prevented it but it choose rs-sys-0 only that was
> about to be killed.
> This caused hbase:meta to unavailable for some time. And rolling restart at
> the same time can cause more unavailability of other data regions.
>
> draining_servers.rb add command timed out so HMaster was not aware of it.
> (We can have some improvements here as well. Going ahead with drainig when
> HMaster is not aware is also not right)
> {code:java}
> 2026-06-03 14:07:29,341 INFO [PEWorker-39]
> assignment.TransitRegionStateProcedure - Starting pid=193574338,
> state=RUNNABLE:REGION_STATE_TRANSITION_GET_ASSIGN_CANDIDATE, locked=true;
> TransitRegionStateProcedure table=hbase:meta, region=1588230740, REOPEN/MOVE;
> state=CLOSED, location=localhost,1,1; forceNewPlan=false, retain=false
>
> 2026-06-03 14:07:28,550 INFO [PEWorker-54] procedure2.ProcedureExecutor -
> Initialized subprocedures=[{pid=193574380, ppid=193574338, state=RUNNABLE;
> CloseRegionProcedure 1588230740, server=regionserver-sys-1}]
>
> 2026-06-03 14:07:29,504 INFO [PEWorker-27] procedure2.ProcedureExecutor -
> Initialized subprocedures=[{pid=193574527, ppid=193574338, state=RUNNABLE;
> OpenRegionProcedure 1588230740, server=regionserver-sys-1}]
> {code}
> {{As this RS was already scheduled to be killed. It got killed after some
> time. }}
> {code:java}
> 2026-06-03 14:10:39,022 INFO [PEWorker-18] procedure.MasterProcedureScheduler
> - Took xlock for pid=193622058, ppid=193622049,
> state=RUNNABLE:REGION_STATE_TRANSITION_GET_ASSIGN_CANDIDATE;
> TransitRegionStateProcedure table=hbase:meta, region=1588230740, ASSIGN{code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)