Skip to content

fix: wait for traffic control before starting the sync operator [ci] - #82

Merged
sadiq1971 merged 3 commits into
mainfrom
fix/sync-operator-wait-for-traffic-control
Oct 14, 2026
Merged

sadiq1971 merged 3 commits into
mainfrom
fix/sync-operator-wait-for-traffic-control

Conversation

@haikoschol

@haikoschol haikoschol commented Oct 14, 2026 •

Copy link
Copy Markdown
Collaborator

In LocalNet, app-synchronizer.sc enables traffic control on the app
synchronizer 7 to 9 seconds after it bootstraps the synchronizer. The
sync operator, already waiting for the sequencer, checks for traffic
control as soon as the sequencer is up and fails init on the first
check. Its failure stops the whole splice-node process, so the SV app
goes down too and LocalNetDedicatedSyncIntegrationTest gets a 502 or
503 on its first vote request.

Retry the check with RetryFor.WaitingOnInitDependency, like the
sequencer check before it. A synchronizer that never enables traffic
control still fails init, after the retries run out.

With the sync operator waiting, it starts as soon as the script enables
traffic control, and its parameter trigger then updates the synchronizer
parameters while the script is still setting the onboarding restriction.
The two updates collide on the same serial and the script's is rejected,
so LocalNet fails to start. The second commit makes enabling traffic
control the script's last parameter change.

In LocalNet, app-synchronizer.sc enables traffic control on the app
synchronizer 7 to 9 seconds after it bootstraps the synchronizer. The
sync operator, already waiting for the sequencer, checks for traffic
control as soon as the sequencer is up and fails init on the first
check. Its failure stops the whole splice-node process, so the SV app
goes down too and LocalNetDedicatedSyncIntegrationTest gets a 502 or
503 on its first vote request.

Retry the check with RetryFor.WaitingOnInitDependency, like the
sequencer check before it. A synchronizer that never enables traffic
control still fails init, after the retries run out.

Signed-off-by: Haiko Schol <haiko@chainsafe.io>
@haikoschol
haikoschol requested a review from sadiq1971 October 14, 2026 12:22
…n [ci]

Now that the sync operator waits for traffic control, it starts as soon
as app-synchronizer.sc enables it, and its parameter trigger rewrites
the synchronizer parameters right away. The script still had the
onboarding restriction to set, and both proposed serial 3 within 150 ms.
The sync operator's proposal won, the script's was rejected with
SerialMismatch, and the script timed out waiting for RestrictedOpen,
so LocalNet failed to start.

Enable traffic control as the script's last parameter change, so the
sync operator only starts once the script is done with the parameters.

Signed-off-by: Haiko Schol <haiko@chainsafe.io>
@haikoschol

Copy link
Copy Markdown
Collaborator Author

This is supposed to unblock #81 which in turn is supposed to unblock #67. 😔

@sadiq1971
sadiq1971 merged commit 54abaca into main Oct 14, 2026
65 checks passed
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