New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Meteor 3] Environment Variables resets value too early #13112
Comments
These tests demonstrate the current behaviors and expected support in Meteor 3.0. In your example, code might need adjustment to ensure you properly await children asyncs to maintain the env variable context. For instance: let ev1 = new Meteor.EnvironmentVariable();
async function runAsyncFunction() {
await new Promise(resolve => setTimeout(resolve, 1000));
console.log('value2', ev1.get());
}
ev1.withValue({ name: 'test' }, () => {
➡️ await runAsyncFunction();
console.log('value 1', ev1.get());
}); With this you get the proper response. value 1 { name: 'test' }
value2 { name: 'test' } I also tried it on the test we have. While achieving this might be possible, given my limited familiarity with this code or Async Local Storage behavior, further exploration is needed. Otherwise, this change could be a breaking change caused by the way async operations behave in the new Meteor 3.x. Thank you for bringing it to our attention. cc @denihs |
Preserving the env vars in async child contexts was an important part of the implementation in Meteor 1/2. Meteor wrapped most callback api's with Meteor.bindEnvironment, and had code in the You should be able to simply remove these lines. ALS makes the store available to all child resources, so if you don't mutate it it will work the same as in Meteor 1/2. There's no need to unset When working on using ALS in |
With this code:
In Meteor 1 and 2, it logs:
However, in Meteor 3 it logs:
Meteor 1 and 2 preserve the value until all child async contexts complete. Async Local Storage does the same, which Environment Variables uses in Meteor 3, so it should be possible to preserve this behavior in Meteor 3.
The text was updated successfully, but these errors were encountered: