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)

Reply via email to