fix(desktop): bound parallel JSON reads during import validation#631
Merged
r0ssing merged 1 commit intoMay 13, 2026
Merged
Conversation
Use mapPool in parseObservationJsonFiles so File.text() is not run unbounded in parallel, avoiding NotReadableError on large drops. ImportPage continues to call parseObservationJsonFiles for validate.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Description
Large drops of observation JSON files could trigger
NotReadableError(Invalid JSON) when the UI read every file’s contents at once viaFile.text(). This change caps how many reads run in parallel so validation stays reliable on big batches.What changed
desktop/src/lib/importSummary.tsAddedmapPool(bounded concurrency, default 12) and routedparseObservationJsonFilesthrough it.parseObservationJsonFilestill parses JSON and surfaces read failures;NotReadableErrorkeeps a short hint to retry validation after load settles.desktop/src/pages/ImportPage.tsxValidation continues to useparseObservationJsonFilesfor staged JSON; wiring stays aligned with the helper above.How to verify
.jsonfiles (plus attachments if you like).NotReadableError/ bogus “invalid JSON” from read contention; failures should only reflect real read/parse issues.