Tanuj Khurana created PHOENIX-8005:
--------------------------------------
Summary: Make scheduled round-boundary rotation non-coalescible in
the replication log
Key: PHOENIX-8005
URL: https://issues.apache.org/jira/browse/PHOENIX-8005
Project: Phoenix
Issue Type: Sub-task
Reporter: Tanuj Khurana
Assignee: Tanuj Khurana
ReplicationLog rotates the active .plog writer on two independent triggers that
share a single rotationRequested CAS gate:
- Size/fault-based (requestRotationIfOversized, the apply() retry path): an
idempotent intent — "ensure a fresh, non-oversized writer exists." Coalescing
these is correct and necessary: size checks fire after every sync, and during
the window between requesting a rotation and the new writer being staged
currentWriter still reports the old over-threshold length, so uncoalesced
requests would cascade into many tiny files.
- Time-based (the scheduleAtFixedRate tick): a non-idempotent intent — "this
specific round boundary must get its own file," which is the placement unit the
round-sharded reader is organized around.
Problem
Because both triggers share one CAS gate, a scheduled boundary tick that fires
while a size/fault rotation already holds the gate is coalesced away (dropped),
so that round boundary may not get its own file. The fix would guarantee a new
log file is created on every rotation tick
--
This message was sent by Atlassian Jira
(v8.20.10#820010)