Context
In #80 we switched installPlugins from Promise.all (concurrent) to a sequential for...of loop as a workaround for a race condition in adapt-cli where multiple concurrent CLI commands read/write adapt.json simultaneously.
The underlying adapt-cli bugs are tracked in adaptlearning/adapt-cli#232:
readValidateJSON silently swallows errors (returns undefined instead of re-throwing)
getManifestDependencies doesn't handle undefined manifest
project.add() has an unsafe read-modify-write cycle on adapt.json
Action
Once adaptlearning/adapt-cli#232 is resolved:
- Revert the
for...of loop back to Promise.all in installPlugins to restore concurrent plugin installation performance
- Verify course imports with multiple plugins work correctly with concurrent installs
Why revert
Sequential installation is slower — each plugin waits for the previous one to complete. Concurrent installation is safe once the CLI properly handles concurrent file access.
Context
In #80 we switched
installPluginsfromPromise.all(concurrent) to a sequentialfor...ofloop as a workaround for a race condition in adapt-cli where multiple concurrent CLI commands read/writeadapt.jsonsimultaneously.The underlying adapt-cli bugs are tracked in adaptlearning/adapt-cli#232:
readValidateJSONsilently swallows errors (returnsundefinedinstead of re-throwing)getManifestDependenciesdoesn't handleundefinedmanifestproject.add()has an unsafe read-modify-write cycle onadapt.jsonAction
Once adaptlearning/adapt-cli#232 is resolved:
for...ofloop back toPromise.allininstallPluginsto restore concurrent plugin installation performanceWhy revert
Sequential installation is slower — each plugin waits for the previous one to complete. Concurrent installation is safe once the CLI properly handles concurrent file access.