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?
UnknownTriage
UntriagedIssue Impact
externalStory Points
0Priority
MajorInstabug
Open Instabug
Details
Details
Assignee
Ayush Nayyar
Ayush NayyarReporter
Sumukh Bhat
Sumukh BhatIs this a Regression?
Unknown
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 February 26, 2024 at 4:30 AM
Updated March 21, 2025 at 2:47 AM
Resolved March 18, 2024 at 7:54 AM
Note that BackfillTasks.addTasks() assumes that the the task input is non-nil.
BackfillReplicationSpec.MergeNewTasks will invoke MergeIncomingTaskIntoTasksNoLock, which will recursively compute the unmergeable tasks so that that unmergeable tasks can be appended to the tasksList using addTasks().
Consider the following scenarios:
There already exists a task in the VBTasksMap of the spec - say (a, b) and we have a new incoming task to be merged - say (c, d), with d > b; a < c < b. Example: (a, b) = (5, 5000) and (c, d) = (6, 5005). Now as per variable names in MergeIncomingTaskIntoTasksNoLock, subtask1 is nil and subtask2 is non-nil and MergeIncomingTaskIntoTasksNoLock is called recursively on subtask1 and subtask2. Focusing on subtask1, since there are no more tasks in the spec's VBTasksMap, it will append nil into the unmergeable tasks list, which will eventually be added to the VBTasksMap via addTasks()
The same as (1), but now consider c < a; a < d < b. Example: (a, b) = (5, 5000) and (c, d) = (0, 10) => here subtask2 will be nil and cause nil to be appended to vbTasks list.
Having said that, as far as I have seen so far, we do have checks to see if the task is nil when a task is read from the map to be backfilled, say in dcp_nozzle, so this isn't a big issue. But might be worth fixing this to avoid false positives in terms of tasks left when looking for tasks left to backfill (the list might be full of null spammed) and during debugging a customer issue.