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)