fix(node-runtime-worker-thread): reset require cache after interrupt … #762
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.
…MONGOSH-666
Clear the require cache after an interrupt occurred.
This is currently making our test suite flaky, because the interrupt
can also occur during the babel transformation of the async rewriter
(either one), which lazy-loads other modules from babel packages.
If those are loaded incompletely during the first
require()
call,they are still left in the cache (as
interruptor
fully stopsexecution and also skips catch/finally handlers which would remove
them from the cache). Subsequent loads receive incomplete module
exports in that case.
One alternative would be to try to only wrap the actual
evaluate
call in the
runInterruptible()
wrapper. This seems a bit cleaner,but would also require changing the
Runtime
interface a bitin a way that cannot be proxied across the child process/Worker
barrier.