From 93fc04a1c1100d6b23adfe0df97a5e4855c525b9 Mon Sep 17 00:00:00 2001 From: Bartlomiej Obecny Date: Wed, 17 Jun 2020 21:47:13 +0200 Subject: [PATCH 1/2] chore: fixing zone from which to fork a new zone --- .../src/ZoneContextManager.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/opentelemetry-context-zone-peer-dep/src/ZoneContextManager.ts b/packages/opentelemetry-context-zone-peer-dep/src/ZoneContextManager.ts index 16c159dbc6d..93ce9e1c6c3 100644 --- a/packages/opentelemetry-context-zone-peer-dep/src/ZoneContextManager.ts +++ b/packages/opentelemetry-context-zone-peer-dep/src/ZoneContextManager.ts @@ -113,7 +113,7 @@ export class ZoneContextManager implements ContextManager { * @param context A context (span) to be bind with Zone */ private _createZone(zoneName: string, context: unknown): Zone { - return Zone.root.fork({ + return Zone.current.fork({ name: zoneName, properties: { [ZONE_CONTEXT_KEY]: context, From cd6800778006ed9b414563dc445fc6343c74ee2d Mon Sep 17 00:00:00 2001 From: Bartlomiej Obecny Date: Wed, 17 Jun 2020 22:54:53 +0200 Subject: [PATCH 2/2] chore: adding tests for creating zone --- .../test/ZoneContextManager.test.ts | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/packages/opentelemetry-context-zone-peer-dep/test/ZoneContextManager.test.ts b/packages/opentelemetry-context-zone-peer-dep/test/ZoneContextManager.test.ts index 9712a7bf1c2..905348005c1 100644 --- a/packages/opentelemetry-context-zone-peer-dep/test/ZoneContextManager.test.ts +++ b/packages/opentelemetry-context-zone-peer-dep/test/ZoneContextManager.test.ts @@ -199,6 +199,23 @@ describe('ZoneContextManager', () => { }); }); }); + + it('should fork new zone from active one', () => { + const context = Context.ROOT_CONTEXT; + const rootZone = Zone.current; + contextManager.with(context, () => { + const zone1 = Zone.current; + assert.ok(zone1.parent === rootZone); + contextManager.with(context, () => { + const zone2 = Zone.current; + contextManager.with(context, () => { + const zone3 = Zone.current; + assert.ok(zone3.parent === zone2); + }); + assert.ok(zone2.parent === zone1); + }); + }); + }); }); describe('.bind(function)', () => {