Alex Hughes created HBASE-29729:
-----------------------------------

             Summary: 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


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)

Reply via email to