Lokesh Khurana created PHOENIX-7904:
---------------------------------------
Summary: Online Schema Change Gap-Fix Initiative
Key: PHOENIX-7904
URL: https://issues.apache.org/jira/browse/PHOENIX-7904
Project: Phoenix
Issue Type: Improvement
Reporter: Lokesh Khurana
Assignee: Lokesh Khurana
The Online Schema Change (OSC) framework introduced under PHOENIX-6373 supports
zero-downtime ALTER TABLE for property changes (encoding scheme, immutable
storage scheme, etc.) by maintaining dual-write attribution between an old
physical HBase table and a transformed new physical, then swapping the
logical→physical pointer in SYSTEM.CATALOG. The framework is functionally
correct on the happy path but exposes correctness, durability, and operator-
visibility gaps under realistic production conditions.
This initiative ships in three phases:
* *Phase 0* — production-readiness gap-fix work on the shared framework.
* *Phase 1* — {{PHYSICAL_RENAME_ONLY}} transform type (`ALTER TABLE T SET
PHYSICAL_TABLE_NAME = 'new'`).
* *Phase 2* — salt-bucket change
Gaps addressed:
* Cutover idempotency relies on live PTable reads that mutate during cutover
itself
* Dual-write termination has no deterministic shutoff signal — partial-pass
runs concurrently with stale-cache dual-write traffic.
* Old physical HBase table is never dropped, leaving stale data accessible to
raw HBase clients indefinitely .
* Pause and failure variants leave dual-write attribution installed.
* Tenant view creation is not blocked during transform .
* Resume from PAUSED/FAILED runs partial-pass, missing writes accumulated in
the parked window — silent data loss .
* Legacy Indexer coprocessor tables are not detected; transform runs with no
dual-write — silent data loss.
* Existing index handling (drop-and-recreate at cutover) costs N×M full table
scans — not viable for Phase 2's production workload .
* TransformType byte-to-enum deserializer throws on unknown bytes, blocking
rolling upgrades that introduce new types.
* Modification-lock primitive is missing; ALTER + concurrent transform is racy.
Design doc :
{{https://docs.google.com/document/d/1hfXMDETDf9aT2Qa_BWiyzEVeOfTNW55Ykp6ir2OtXAs}}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)