[
https://issues.apache.org/jira/browse/PHOENIX-8005?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Tanuj Khurana resolved PHOENIX-8005.
------------------------------------
Resolution: Fixed
> 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
> Priority: Major
>
> 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)