Skip to content

Add outcome for previous round missing request ids - #764

Open
yashnevatia wants to merge 17 commits into
mainfrom
add-outcome-for-prevMissingReqIDs
Open

yashnevatia wants to merge 17 commits into
mainfrom
add-outcome-for-prevMissingReqIDs

Conversation

@yashnevatia

@yashnevatia yashnevatia commented Sep 14, 2026

Copy link
Copy Markdown
Contributor

Ticket: https://smartcontract-it.atlassian.net/browse/PLEX-2894
Depends on: smartcontractkit/chainlink-common#2402

  • Read feature flag from settings
  • If enabled and has quorum on the flag, add outcomes for missing requestIDs from previous round


for _, requestID := range query.RequestIDs {
requestIDs := query.RequestIDs
if rp.config.EnableMissingRequestRecovery {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

2F+1 nodes must agree on a flag before we can change behavior.
The problem with off-chain config is that nodes can pick it up at different times.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think in this case this is onchain config, so it's tied to config digest and guaranteed to be the same across all nodes, no?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@dhaidashenko @bolekk
The registry syncer is syncing every 12s.
So worst case we will have consensus break for 12s (where 2f nodes just sycned before the update was pushed).
At first glance, i am inclined to think that 12s down time is not good.
However, I am curious if there are other config changes that get pushed via capReg which encounter the same issue ?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1 seems like any update to OCR config causes downtime of 12s (assuming that OCR manages to exit instantly - might not be true).

IMO, in this particular case, we can avoid downtime and need to update cap registry (sign 6 proposals - 2 for each env), by including hardcoded EnableMissingRequestRecovery = true in the observation and common value into the outcome. The downside is that we can not disable the feature without a version rollback.

We can address this downside by creating a global boolean flag in the settings and passing it into the observation on every round.

Comment thread libs/chainconsensus/oracle/reporting_plugin.go Outdated
@cl-sonarqube-production

Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants