You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Charles Connell (Jira)" <ji...@apache.org> on 2025/12/15 16:12:00 UTC
[jira] [Commented] (HBASE-29729) Add per-region table descriptor hash to RegionServer JMX metrics
[ https://issues.apache.org/jira/browse/HBASE-29729?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18045209#comment-18045209 ]
Charles Connell commented on HBASE-29729:
-----------------------------------------
Merged to master, cherry-picked to branch-3. [~ajkhughes] the patch does not cleanly apply to branch-2, so please submit a PR for that.
> Add per-region table descriptor hash to RegionServer JMX metrics
> ----------------------------------------------------------------
>
> Key: HBASE-29729
> URL: https://issues.apache.org/jira/browse/HBASE-29729
> Project: HBase
> Issue Type: Improvement
> Components: metrics, regionserver
> Affects Versions: 2.6.4
> Reporter: Alex Hughes
> Priority: Minor
> Labels: pull-request-available
> Fix For: 3.0.0-beta-2
>
>
> HBase's lazy table modification feature allows operators to modify table descriptors without immediately affecting running regions. Regions adopt the new descriptor when they reopen. This enables controlled, progressive rollouts of descriptor changes, but there's currently no way to programmatically query which regions are using which descriptor version during a rollout.
> Table descriptor modifications (compression changes, encoding changes, TTL updates, etc.) can be risky on large production tables. A progressive canary rollout approach significantly reduces blast radius: modify the descriptor with the lazy flag, selectively reopen small batches of canary regions, validate their health, then continue or roll back. However, without visibility into which regions have adopted the new descriptor, operators must maintain complex external tracking state that's error-prone and doesn't handle region splits/merges gracefully.
> This JIRA proposes adding a {{tableDescriptorHash}} metric to each region's JMX output, exposing a SHA-256 hash of the region's current table descriptor. The hash would be computed once when the region opens and cached for its lifetime (zero performance impact). Operators can then query all regions via existing JMX endpoints and group by hash to track rollout progress, verify completion, and build idempotent rollout systems that query current reality from HBase rather than maintaining fragile external state. The metric returns {{UNKNOWN}} on error to avoid breaking metrics collection, and is fully backward compatible as it only adds a new field to existing JMX output.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)