[ 
https://issues.apache.org/jira/browse/PHOENIX-7920?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Himanshu Gwalani updated PHOENIX-7920:
--------------------------------------
    Description: 
The replay/forward round-eligibility gate is evaluated on the wall clock, but 
PHOENIX-7813 aligned the scheduler wake — fired on the monotonic clock 
(System.nanoTime) — to that boundary with zero margin. Small 
nanoTime-vs-wall-clock drift can tip a wake just below the boundary, so the 
round is not yet eligible and the region server loses a full (~60s) cycle. Most 
damaging during planned failover.
  
Fix (shared base class ReplicationLogDiscovery, inherited by replay + 
forwarder):
  1. Epsilon margin so the aligned wake lands just after the boundary rather 
than exactly on it
     (config phoenix.replication.discovery.aligned.delay.epsilon.millis, 
default 500ms).
  2. Re-anchor to the wall-clock grid every cycle (self-rescheduling one-shot 
instead of
     scheduleAtFixedRate) so alignment error cannot accumulate.

  was:
The replay/forward round-eligibility gate is evaluated on the wall clock, but 
PHOENIX-7813
  aligned the scheduler wake — fired on the monotonic clock (System.nanoTime) — 
to that boundary
  with zero margin. Small nanoTime-vs-wall-clock drift can tip a wake just 
below the boundary, so
  the round is not yet eligible and the region server loses a full (~60s) 
cycle. Most damaging 
  during planned failover.
  
  Fix (shared base class ReplicationLogDiscovery, inherited by replay + 
forwarder):
  1. Epsilon margin so the aligned wake lands just after the boundary rather 
than exactly on it
     (config phoenix.replication.discovery.aligned.delay.epsilon.millis, 
default 500ms).
  2. Re-anchor to the wall-clock grid every cycle (self-rescheduling one-shot 
instead of
     scheduleAtFixedRate) so alignment error cannot accumulate.


> Replication replay/forward can skip a round when the aligned poll wake fires 
> just before the wall-clock eligibility boundary
> ----------------------------------------------------------------------------------------------------------------------------
>
>                 Key: PHOENIX-7920
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-7920
>             Project: Phoenix
>          Issue Type: Sub-task
>            Reporter: Himanshu Gwalani
>            Assignee: Himanshu Gwalani
>            Priority: Major
>
> The replay/forward round-eligibility gate is evaluated on the wall clock, but 
> PHOENIX-7813 aligned the scheduler wake — fired on the monotonic clock 
> (System.nanoTime) — to that boundary with zero margin. Small 
> nanoTime-vs-wall-clock drift can tip a wake just below the boundary, so the 
> round is not yet eligible and the region server loses a full (~60s) cycle. 
> Most damaging during planned failover.
>   
> Fix (shared base class ReplicationLogDiscovery, inherited by replay + 
> forwarder):
>   1. Epsilon margin so the aligned wake lands just after the boundary rather 
> than exactly on it
>      (config phoenix.replication.discovery.aligned.delay.epsilon.millis, 
> default 500ms).
>   2. Re-anchor to the wall-clock grid every cycle (self-rescheduling one-shot 
> instead of
>      scheduleAtFixedRate) so alignment error cannot accumulate.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to