Skip to content

DATA-12986: Bind response finish listener to request context - #34

Open
pragyash258 wants to merge 2 commits into
masterfrom
DATA-12986-bind-finish-context
Open

DATA-12986: Bind response finish listener to request context#34
pragyash258 wants to merge 2 commits into
masterfrom
DATA-12986-bind-finish-context

Conversation

@pragyash258

@pragyash258 pragyash258 commented Aug 11, 2026

Copy link
Copy Markdown
Collaborator

Bind the request-completion listener to the CLS context captured when the request is initialized, preventing final NODE_REQUEST logs from reading sibling request metadata if finish fires under another active context.

Changes:

  • Wrap the response finish listener with cls.ns.bind.
  • Add dependency-free tests for nested restoration, Promise concurrency, and cross-context finish emission.
  • Enable npm test.
  • Bump the package version to 1.7.6.

Test coverage (core assertions):

assert.strictEqual(inner.data.request.user_id, 'user-b');
assert.strictEqual(outer.data.request.user_id, 'user-a');

users.forEach((user, id) => {
  assert.strictEqual(user, `user-${id}`);
});

Chitragupta.setupServerLogger(logger, requestA, responseA, 'user-a', () => {
  Chitragupta.setupServerLogger(logger, requestB, responseB, 'user-b', () => {
    responseA.emit('finish');
  });
});
assert.strictEqual(records[0].data.request.user_id, 'user-a');

Results:

  • Focused context suite: passed.
  • Compatibility matrix: passed on Node 8, 10, 12, 14, 16, 20, and 26.
  • Node 20 HTTP concurrency: 1,000 finish logs, 0 attribution mismatches.

JIRA: https://browserstack.atlassian.net/browse/DATA-12986

@pragyash258
pragyash258 requested a review from a team as a code owner August 11, 2026 10:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant