Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unblock reconciliation during synthesis #296

Merged
merged 17 commits into from
Mar 5, 2025
Merged

Unblock reconciliation during synthesis #296

merged 17 commits into from
Mar 5, 2025

Conversation

jveski
Copy link
Collaborator

@jveski jveski commented Mar 4, 2025

Resolves #229.

Since Eno only currently retains two syntheses, it isn't possible to (correctly) reconcile resources while synthesis is in-progress. So configuration might drift in cases where synthesis is slow.

It isn't a huge problem currently since synthesis is fast, but keeping a third synthesis ends up significantly simplifying the synthesis controller, which I'm working on property-based tests and refactoring for currently.

This change adds an "in flight" synthesis that is swapped into the existing "current" slot when synthesis is complete. I tried not to touch unrelated code - the diff mostly just swaps synthesis references, with a few exceptions (I'll leave PR comments to clarify).

Backcompat

  • Compositions with CurrentSynthesis.Synthesized != nil are unaffected - this is still the terminal state
  • Compositions with CurrentSynthesis == nil are unaffected since the new code will be used for synthesis
  • Compositions with CurrentSynthesis != nil && CurrentSynthesis.Synthesized == nil (a.k.a. in-flight synthesis) will converge eventually because the scheduling controller considers (CurrentSynthesis.Synthesized == nil) == (CurrentSynthesis == nil)

@jveski jveski merged commit c9a955f into main Mar 5, 2025
29 checks passed
@jveski jveski deleted the third-syn branch March 5, 2025 23:58
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.

Store a third synthesis
3 participants