Fixed
Pinned fields
Click on the next to a field label to start pinning.
Details
Assignee
Ayush NayyarAyush NayyarReporter
Sumukh BhatSumukh BhatIs this a Regression?
NoTriage
UntriagedIssue Impact
externalStory Points
0Priority
MajorInstabug
Open Instabug
Details
Details
Assignee
Ayush Nayyar
Ayush NayyarReporter
Sumukh Bhat
Sumukh BhatIs this a Regression?
No
Triage
Untriaged
Issue Impact
external
Story Points
0
Priority
Instabug
Open Instabug
PagerDuty
PagerDuty
PagerDuty
Sentry
Sentry
Sentry
Zendesk Support
Zendesk Support
Zendesk Support
Created November 28, 2023 at 6:37 AM
Updated March 21, 2025 at 2:48 AM
Resolved November 30, 2023 at 7:07 AM
XDCR's backfill pipeline was designed is such that the following occurs:
Backfill pipeline is created and asks for a set of VBs
Streams created for the subset of VBs to ask from KV DCP
Once a single VB has finished out of the original subset of VBs, XDCR starts a timer
If all the VBs requested originally finished within the timer expiring, things are all good.
If a subset of VBs requested originally did not finish, the timer fires, then the pipeline will restart with the unfinished set of VBs.
Timer code: https://src.couchbase.org/source/xref/7.2.2/goproj/src/github.com/couchbase/goxdcr/service_impl/through_seqno_tracker_service.go#1121
https://couchbasecloud.atlassian.net/browse/MB-57304#icft=MB-57304 in 7.2.2 introduced DCP backfill limit of 64 streams.
This leads to the fact that only 64 VBs will proceed at once, and the rest of the VBs will not. This means that as soon as 1 VB of the first batch is finished, the timer starts. The assumption that all VBs proceed at the same time is broken.
The end result is that the timer is too aggressive.
We should revisit the timeout timer to be more intelligent instead of a blanket timer. For example, maybe the timer can be reset if the number of VBs that are being done is progressing.