fix: Wait for asset discovery finish when awaiting on snapshot resources in finalize #423
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What is this?
The title is a mouthful, that's for sure. If the child process spawned by agent in
exec
exits while snapshots are processing, it's possible for snapshots to be added to a finalizing build. This will break the rendering pipeline for that build.Approach
First up was to write an acceptance test that reproduces this behavior. The easiest way would be to have a PercyScript file that loops through snapshots and throws an exception while taking snapshots. Then assert to make sure no snapshots were added to to the build after we've finalized the build.
Quick solution: As soon as
handleSnaphshot
is called, add a promise to thesnapshotCreationPromises
array. That way any deferred work can still be awaited on (when we're stopping agent).Better (future) solution: After finalize is called for a build, no more snapshot or resource requests should be uploaded. This might require more of a sweeping change to how services are interconnected yet decoupled from command classes.
TODOs
waiting for x snapshots
stdout