You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hbase.apache.org by "Aman Poonia (Jira)" <ji...@apache.org> on 2026/09/05 06:51:00 UTC
[jira] [Resolved] (HBASE-30350) Stale entry left in RegionInTransitionTracker after GCRegionProcedure purges region metadata
[ https://issues.apache.org/jira/browse/HBASE-30350?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Aman Poonia resolved HBASE-30350.
---------------------------------
Resolution: Duplicate
> Stale entry left in RegionInTransitionTracker after GCRegionProcedure purges region metadata
> --------------------------------------------------------------------------------------------
>
> Key: HBASE-30350
> URL: https://issues.apache.org/jira/browse/HBASE-30350
> Project: HBase
> Issue Type: Bug
> Components: master, Region Assignment
> Affects Versions: 3.0.0, 4.0.0-alpha-1, 2.5.16, 2.6.7
> Reporter: Aman Poonia
> Assignee: Aman Poonia
> Priority: Major
> Labels: pull-request-available
>
> GCRegionProcedure (state {{GC_REGION_PURGE_METADATA}}) removes a GC'd split/merged parent region from {{AssignmentManager#regionStates}} but never removes the corresponding entry from the separate
> {{RegionInTransitionTracker}} map. These two maps are not kept in sync automatically.
> The analogous cleanup path, {{AssignmentManager#markRegionAsMerged}}, correctly calls both {{regionStates.deleteRegion(ri)}} and {{regionInTransitionTracker.handleRegionDelete(ri)}} for each merge
> parent. {{GCRegionProcedure}} only calls the former.
> As a result, once a region is GC'd via {{CatalogJanitor}} -> {{GCRegionProcedure}}, its ghost entry remains in {{RegionInTransitionTracker}} indefinitely. The periodic "STUCK Region-In-Transition"
> chore ({{ProcExecTimeout}} thread) keeps re-reporting this already-deleted region as stuck on every run, producing misleading WARN logs and inflating RIT-age metrics/alerts. The stale entry is only
> cleared when the active master fails over, since {{AssignmentManager#joinCluster}} -> {{loadMeta}} rebuilds all in-memory assignment state fresh from {{hbase:meta}}.
> *Observed in production:* a region was GC'd (fully removed from {{hbase:meta}} and HDFS) but continued to be logged as "STUCK Region-In-Transition" for ~9 hours until the next master failover
> silently cleared it, giving a false impression of an actual 9-hour stuck RIT / unavailability.
> *Fix:* add a shared {{AssignmentManager#deleteRegion(RegionInfo)}} method that removes the region from both {{regionStates}} and {{regionInTransitionTracker}} together, and have both
> {{markRegionAsMerged}} and {{GCRegionProcedure}} call it instead of touching {{regionStates}} directly.
> Confirmed present on {{apache/master}} as of commit fb4286d3046.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)