|
1 | 1 | # graphql-modules |
2 | 2 |
|
| 3 | +## 3.1.2 |
| 4 | + |
| 5 | +### Patch Changes |
| 6 | + |
| 7 | +- [#2607](https://github.com/graphql-hive/graphql-modules/pull/2607) [`3274c04`](https://github.com/graphql-hive/graphql-modules/commit/3274c0498771277f92f9e0f7a48e9a7aa162d642) Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates: |
| 8 | + - Updated dependency [`ramda@^0.31.0` ↗︎](https://www.npmjs.com/package/ramda/v/0.31.0) (from `^0.30.0`, in `dependencies`) |
| 9 | + |
| 10 | +- [#2626](https://github.com/graphql-hive/graphql-modules/pull/2626) [`68c2cb4`](https://github.com/graphql-hive/graphql-modules/commit/68c2cb414b39849335de5dcc2460668cd7aefcc8) Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates: |
| 11 | + - Updated dependency [`@graphql-tools/wrap@^11.0.0` ↗︎](https://www.npmjs.com/package/@graphql-tools/wrap/v/11.0.0) (from `^10.0.0`, in `dependencies`) |
| 12 | + |
| 13 | +- [#2642](https://github.com/graphql-hive/graphql-modules/pull/2642) [`dac3288`](https://github.com/graphql-hive/graphql-modules/commit/dac3288316be44c32cea8042532c5f0d6d48dca9) Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates: |
| 14 | + - Updated dependency [`ramda@^0.32.0` ↗︎](https://www.npmjs.com/package/ramda/v/0.32.0) (from `^0.31.0`, in `dependencies`) |
| 15 | + |
| 16 | +- [#2681](https://github.com/graphql-hive/graphql-modules/pull/2681) [`8ed0406`](https://github.com/graphql-hive/graphql-modules/commit/8ed0406fd16113321e9e5dfaece8426082517cad) Thanks [@dotansimha](https://github.com/dotansimha)! - Fix memory leak: per-operation `context` was retained forever when any long-lived async resource (a global `setTimeout`/`setInterval`, a telemetry exporter, undici's module-scoped timer, …) snapshotted the current `AsyncContextFrame` during execution. Since [nodejs/node#48528](https://github.com/nodejs/node/pull/48528), every async resource scheduled inside an `AsyncLocalStorage.run(...)` captures a `kAsyncContextFrame` snapshot, and the value stored in our internal `AsyncLocalStorage` was a pair of closures that captured `context` — so the snapshot pinned the entire operation context (potentially multiple MBs). |
| 17 | + |
| 18 | + The fix routes every per-operation reference to `context` through a mutable holder (`refs.context` / `refs.appContext`). `sharedContext` (exposed as `env.context`) and the cached `CONTEXT` injector value are now getter-based views over `refs.context` instead of shallow spreads, so they hold no user data of their own. `ɵdestroy` only nulls the holder slots — public-facing identities (`env.context`, `ɵinjector`) stay intact and continue to work, but the heavy user payload becomes unreachable from the (still-pinned) closure scope. |
| 19 | + |
| 20 | +- [#2681](https://github.com/graphql-hive/graphql-modules/pull/2681) [`8ed0406`](https://github.com/graphql-hive/graphql-modules/commit/8ed0406fd16113321e9e5dfaece8426082517cad) Thanks [@dotansimha](https://github.com/dotansimha)! - Fix `@ExecutionContext()` leaking across concurrent controller-backed operations: in `createExecution`/`createSubscription` the controller branch called `perform(options.controller)` directly, skipping `runWithContext`, so reads after an `await` fell through to the shared `appInjector` getter and resolved to the most recently created operation's context. |
| 21 | + |
| 22 | + The controller now exposes its `runWithContext` as `ɵrunWithContext` and both execution paths wrap `perform` in it, giving controller-backed executions the same per-operation ALS isolation the non-controller path already had. |
| 23 | + |
3 | 24 | ## 3.1.1 |
4 | 25 |
|
5 | 26 | ### Patch Changes |
|
25 | 46 | ### Patch Changes |
26 | 47 |
|
27 | 48 | - [#2479](https://github.com/Urigo/graphql-modules/pull/2479) [`482499a`](https://github.com/Urigo/graphql-modules/commit/482499a6b288e716a519ef4068a8e74de1b2c45e) Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates: |
28 | | - |
29 | 49 | - Updated dependency [`ramda@^0.30.0` ↗︎](https://www.npmjs.com/package/ramda/v/0.30.0) (from `^0.29.0`, in `dependencies`) |
30 | 50 |
|
31 | 51 | ## 2.4.1 |
|
61 | 81 | ### Patch Changes |
62 | 82 |
|
63 | 83 | - [#2338](https://github.com/Urigo/graphql-modules/pull/2338) [`4d9150f0`](https://github.com/Urigo/graphql-modules/commit/4d9150f0f46db32fe35259c74caabe6b36d8a13b) Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates: |
64 | | - |
65 | 84 | - Updated dependency [`@graphql-tools/schema@^10.0.0` ↗︎](https://www.npmjs.com/package/@graphql-tools/schema/v/10.0.0) (from `^9.0.0`, in `dependencies`) |
66 | 85 | - Updated dependency [`@graphql-tools/wrap@^10.0.0` ↗︎](https://www.npmjs.com/package/@graphql-tools/wrap/v/10.0.0) (from `^9.0.0`, in `dependencies`) |
67 | 86 |
|
|
79 | 98 | ### Patch Changes |
80 | 99 |
|
81 | 100 | - [#2233](https://github.com/Urigo/graphql-modules/pull/2233) [`1d6b7fb7`](https://github.com/Urigo/graphql-modules/commit/1d6b7fb7a7c9021f4a052825a0951ab948ef684f) Thanks [@renovate](https://github.com/apps/renovate)! - dependencies updates: |
82 | | - |
83 | 101 | - Updated dependency [`@graphql-tools/schema@^9.0.0` ↗︎](https://www.npmjs.com/package/@graphql-tools/schema/v/^9.0.0) (was `^8.3.1`, in `dependencies`) |
84 | 102 | - Updated dependency [`@graphql-tools/wrap@^9.0.0` ↗︎](https://www.npmjs.com/package/@graphql-tools/wrap/v/^9.0.0) (was `^8.3.1`, in `dependencies`) |
85 | 103 |
|
|
0 commit comments