Format generated vocab file before rename to avoid race condition #542
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.
Summary
According to logs that I see, it failed to run
tsdownorcargo checkby malformedvocab.ts. And it occurs when 2 or more tasks run thebuild:selfscript of@fedify/vocabpackage. It looks like race condition. And there is only one write behavior tovocab.tsdirectly. It isdeno fmt.So this pull request makes
packages/vocab/scripts/codegen.tsscript generatevocab.tsatomically. The atomic means there will be no write behavior onvocab.tsdirectly. It'll formatvocab-{uuid}.tswithdeno fmt ...and rename it tovocab.ts.Related issue
I couldn't find related issue when searching with:
Changes
packages/vocab/scripts/codegen.tsscript generatesrc/vocab.tswhich already formatted bydeno fmt <generatedPath>deno task compilein@fedify/vocabdo notdeno fmt. (moved toscripts/codegen.tsscript)Benefits
I believe this change will make CI more consistently from failing by codegen-related race condition.
Checklist
mise teston your machine?Additional notes
In the long term, it would be good to introduce a monorepo tool, but for now, it will be useful for CI stability.