Skip to content

refactor: node tracing agent and track event registration - #52678

Merged
deepak1556 merged 1 commit into
roller/node/mainfrom
robo/isolate_node_perfetto_client
Aug 6, 2026
Merged

deepak1556 merged 1 commit into
roller/node/mainfrom
robo/isolate_node_perfetto_client

Conversation

@deepak1556

Copy link
Copy Markdown
Member

Description of Change

Preserves content tracing capture of Node.js trace categories from #50591

cc @ckerr

Release Notes

Notes: none

@deepak1556
deepak1556 requested a review from a team as a code owner August 6, 2026 17:08
@electron-cation electron-cation Bot added the new-pr 🌱 PR opened recently label Aug 6, 2026
@ckerr ckerr added the backport-check-skip Skip trop's backport validity checking label Aug 6, 2026
@electron-cation electron-cation Bot removed the new-pr 🌱 PR opened recently label Aug 6, 2026
@ckerr

ckerr commented Aug 6, 2026

Copy link
Copy Markdown
Member

@deepak1556 you have this stacked on top of the same branch you proposed merging this into. These two are mutually exclusive?

I think we want to unstack -> merge this into roller/node/main -> merge the combined work into main from roller/node/main?

@deepak1556
deepak1556 merged commit a3fa169 into roller/node/main Aug 6, 2026
48 of 55 checks passed
@deepak1556
deepak1556 deleted the robo/isolate_node_perfetto_client branch August 6, 2026 18:43
@release-clerk

release-clerk Bot commented Aug 6, 2026

Copy link
Copy Markdown

No Release Notes

deepak1556 added a commit that referenced this pull request Aug 27, 2026
* chore: bump node in DEPS to v24.19.0

* chore: remove upstreamed patch

Ref: nodejs/node#64053

Co-Authored-By: GitHub Copilot <[email protected]>

* chore: update patches (trivial only)

Co-Authored-By: GitHub Copilot <[email protected]>

* fix(patch): add perfetto trace agent

Backport Node's Perfetto tracing agent now that Chromium V8 no longer exposes the legacy tracing controller APIs.

Ref: nodejs/node#64565

Ref: nodejs/node#64721

Co-Authored-By: GitHub Copilot <[email protected]>

* node#64565: src: rename legacy trace event headers

Ref: nodejs/node#64565

Co-Authored-By: GitHub Copilot <[email protected]>

* fix(patch): sample delay per event loop iteration

Ref: nodejs/node#62935

Ref: nodejs/node#64480

Co-Authored-By: GitHub Copilot <[email protected]>

* fix(patch): avoid redundant std::get_if<>() call

Ref: nodejs/node#64094

Co-Authored-By: GitHub Copilot <[email protected]>

* fix(patch): add perfetto trace agent

Ref: nodejs/node#64565

Co-Authored-By: GitHub Copilot <[email protected]>

* node#64053: src: abstract tracing agent for legacy and perfetto

Ref: nodejs/node#64053

Co-Authored-By: GitHub Copilot <[email protected]>

* fix(patch): add perfetto trace agent

Ref: nodejs/node#64565

Co-Authored-By: GitHub Copilot <[email protected]>

* node#64053: src: abstract tracing agent for legacy and perfetto

Ref: nodejs/node#64053

Co-Authored-By: GitHub Copilot <[email protected]>

* fix(patch): support native IPC serialization in V8 sandbox

Ref: nodejs/node#63933

Co-Authored-By: GitHub Copilot <[email protected]>

* test: hide output package.json in node spec runner

Virtual CommonJS files rooted at process.execPath inherit the output directory's type=module package unless the runner hides it alongside Chromium's root package.

Ref: nodejs/node#44713

Co-Authored-By: GitHub Copilot <[email protected]>

* fix(patch): account for libc++ rm error on Electron Linux

Node's fs.rmSync() delegates recursive deletion to
std::filesystem::remove_all(). Electron's Linux build uses libc++, which
reports ENOTEMPTY here while Node's libstdc++ build reports EACCES.

Ref: nodejs/node#57103

Co-Authored-By: GitHub Copilot <[email protected]>

* fix(patch): mark worker stack-size test flaky

Ref: nodejs/node#33085

Co-Authored-By: GitHub Copilot <[email protected]>

* fix(patch): restore user timing trace events

Ref: #50591

Co-Authored-By: GitHub Copilot <[email protected]>

* fix(patch): own fallback tracing controller

Ref: nodejs/node#64565

Co-Authored-By: GitHub Copilot <[email protected]>

* fix(patch): release cppgc wrapper tracking nodes

Ref: nodejs/node#56534

Co-Authored-By: GitHub Copilot <[email protected]>

* test: extend cpp heap remote app timeout

The ChunkedDataPipeReadableStream liveness test can exceed the remote fixture's 30-second watchdog under Linux ASAN, which disconnects the control socket before assertions run.

Ref: #52447

Co-Authored-By: GitHub Copilot <[email protected]>

* fix(patch): remove unused legacy tracing backend

Electron builds Node exclusively with Perfetto since #50591. Wire the upstream Perfetto agent directly and drop the legacy header split and dual-backend source lists.

Ref: #50591

Ref: nodejs/node#64565

Co-Authored-By: GitHub Copilot <[email protected]>

* docs: better explanation of test_account_for_libc_rm_error_on_electron_linux.patch

* refactor: node tracing agent and track event registration (#52678)

* fix: register Node tracing in utility processes

The Node upgrade moved tracing setup out of JavascriptEnvironment, but the utility process did not adopt the explicit registration used by other embedded Node hosts. Register its TrackEvent data source with Chromium before creating the isolate.

Co-authored-by: John Kleinschmidt <[email protected]>

* chore: update patches (trivial only)

* chore: update patches

* Revert "fix(patch): mark worker stack-size test flaky"

This reverts commit f2e5cb5.

* fixup! support native IPC serialization in V8 sandbox

* chore: address review feedback

* fixup! support native IPC serialization in V8 sandbox

Allocate ValueSerializer buffers as V8 backing stores and retain the
original backing store when adopting the released buffer. This preserves
the shared allocator lifetime when serialized buffers are transferred
from a worker and outlive its isolate.

* fixup! refactor: node tracing agent and track event registration

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <[email protected]>
Co-authored-by: GitHub Copilot <[email protected]>
Co-authored-by: Robo <[email protected]>
Co-authored-by: John Kleinschmidt <[email protected]>
MarshallOfSound pushed a commit that referenced this pull request Aug 28, 2026
* chore: bump node in DEPS to v24.19.0

* chore: remove upstreamed patch

Ref: nodejs/node#64053

Co-Authored-By: GitHub Copilot <[email protected]>

* chore: update patches (trivial only)

* fix(patch): add perfetto trace agent

Backport Node's Perfetto tracing agent now that Chromium V8 no longer exposes the legacy tracing controller APIs.

Ref: nodejs/node#64565

Ref: nodejs/node#64721

Co-Authored-By: GitHub Copilot <[email protected]>

* node#64565: src: rename legacy trace event headers

Ref: nodejs/node#64565

Co-Authored-By: GitHub Copilot <[email protected]>

* fix(patch): sample delay per event loop iteration

Ref: nodejs/node#62935

Ref: nodejs/node#64480

Co-Authored-By: GitHub Copilot <[email protected]>

* fix(patch): avoid redundant std::get_if<>() call

Ref: nodejs/node#64094

Co-Authored-By: GitHub Copilot <[email protected]>

* fix(patch): add perfetto trace agent

Ref: nodejs/node#64565

Co-Authored-By: GitHub Copilot <[email protected]>

* node#64053: src: abstract tracing agent for legacy and perfetto

Ref: nodejs/node#64053

Co-Authored-By: GitHub Copilot <[email protected]>

* fix(patch): add perfetto trace agent

Ref: nodejs/node#64565

Co-Authored-By: GitHub Copilot <[email protected]>

* node#64053: src: abstract tracing agent for legacy and perfetto

Ref: nodejs/node#64053

Co-Authored-By: GitHub Copilot <[email protected]>

* fix(patch): support native IPC serialization in V8 sandbox

Ref: nodejs/node#63933

Co-Authored-By: GitHub Copilot <[email protected]>

* test: hide output package.json in node spec runner

Virtual CommonJS files rooted at process.execPath inherit the output directory's type=module package unless the runner hides it alongside Chromium's root package.

Ref: nodejs/node#44713

Co-Authored-By: GitHub Copilot <[email protected]>

* fix(patch): account for libc++ rm error on Electron Linux

Node's fs.rmSync() delegates recursive deletion to
std::filesystem::remove_all(). Electron's Linux build uses libc++, which
reports ENOTEMPTY here while Node's libstdc++ build reports EACCES.

Ref: nodejs/node#57103

Co-Authored-By: GitHub Copilot <[email protected]>

* fix(patch): mark worker stack-size test flaky

Ref: nodejs/node#33085

Co-Authored-By: GitHub Copilot <[email protected]>

* fix(patch): restore user timing trace events

Ref: #50591

Co-Authored-By: GitHub Copilot <[email protected]>

* fix(patch): own fallback tracing controller

Ref: nodejs/node#64565

Co-Authored-By: GitHub Copilot <[email protected]>

* fix(patch): release cppgc wrapper tracking nodes

Ref: nodejs/node#56534

Co-Authored-By: GitHub Copilot <[email protected]>

* fix(patch): remove unused legacy tracing backend

Electron builds Node exclusively with Perfetto since #50591. Wire the upstream Perfetto agent directly and drop the legacy header split and dual-backend source lists.

Ref: #50591

Ref: nodejs/node#64565

Co-Authored-By: GitHub Copilot <[email protected]>

* docs: better explanation of test_account_for_libc_rm_error_on_electron_linux.patch

* refactor: node tracing agent and track event registration (#52678)

* fix: register Node tracing in utility processes

The Node upgrade moved tracing setup out of JavascriptEnvironment, but the utility process did not adopt the explicit registration used by other embedded Node hosts. Register its TrackEvent data source with Chromium before creating the isolate.

Co-authored-by: John Kleinschmidt <[email protected]>

* chore: update patches (trivial only)

* chore: update patches (trivial only)

Co-Authored-By: GitHub Copilot <[email protected]>

* fix(patch): skip unsupported WebCrypto fixtures with BoringSSL

Ref: nodejs/node#63520

Co-Authored-By: GitHub Copilot <[email protected]>

* Revert "fix(patch): mark worker stack-size test flaky"

This reverts commit f2e5cb5.

* chore: address review feedback

(cherry picked from commit b8f475c)

* fixup! refactor: node tracing agent and track event registration

(cherry picked from commit d898f33)

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <[email protected]>
Co-authored-by: GitHub Copilot <[email protected]>
Co-authored-by: Robo <[email protected]>
Co-authored-by: John Kleinschmidt <[email protected]>
MarshallOfSound pushed a commit that referenced this pull request Aug 28, 2026
* chore: bump node in DEPS to v24.19.0

* chore: remove upstreamed patch

Ref: nodejs/node#64053

Co-Authored-By: GitHub Copilot <[email protected]>

* chore: update patches (trivial only)

* fix(patch): add perfetto trace agent

Backport Node's Perfetto tracing agent now that Chromium V8 no longer exposes the legacy tracing controller APIs.

Ref: nodejs/node#64565

Ref: nodejs/node#64721

Co-Authored-By: GitHub Copilot <[email protected]>

* node#64565: src: rename legacy trace event headers

Ref: nodejs/node#64565

Co-Authored-By: GitHub Copilot <[email protected]>

* fix(patch): sample delay per event loop iteration

Ref: nodejs/node#62935

Ref: nodejs/node#64480

Co-Authored-By: GitHub Copilot <[email protected]>

* fix(patch): avoid redundant std::get_if<>() call

Ref: nodejs/node#64094

Co-Authored-By: GitHub Copilot <[email protected]>

* fix(patch): add perfetto trace agent

Ref: nodejs/node#64565

Co-Authored-By: GitHub Copilot <[email protected]>

* node#64053: src: abstract tracing agent for legacy and perfetto

Ref: nodejs/node#64053

Co-Authored-By: GitHub Copilot <[email protected]>

* fix(patch): add perfetto trace agent

Ref: nodejs/node#64565

Co-Authored-By: GitHub Copilot <[email protected]>

* node#64053: src: abstract tracing agent for legacy and perfetto

Ref: nodejs/node#64053

Co-Authored-By: GitHub Copilot <[email protected]>

* fix(patch): support native IPC serialization in V8 sandbox

Ref: nodejs/node#63933

Co-Authored-By: GitHub Copilot <[email protected]>

* test: hide output package.json in node spec runner

Virtual CommonJS files rooted at process.execPath inherit the output directory's type=module package unless the runner hides it alongside Chromium's root package.

Ref: nodejs/node#44713

Co-Authored-By: GitHub Copilot <[email protected]>

* fix(patch): account for libc++ rm error on Electron Linux

Node's fs.rmSync() delegates recursive deletion to
std::filesystem::remove_all(). Electron's Linux build uses libc++, which
reports ENOTEMPTY here while Node's libstdc++ build reports EACCES.

Ref: nodejs/node#57103

Co-Authored-By: GitHub Copilot <[email protected]>

* fix(patch): mark worker stack-size test flaky

Ref: nodejs/node#33085

Co-Authored-By: GitHub Copilot <[email protected]>

* fix(patch): restore user timing trace events

Ref: #50591

Co-Authored-By: GitHub Copilot <[email protected]>

* fix(patch): own fallback tracing controller

Ref: nodejs/node#64565

Co-Authored-By: GitHub Copilot <[email protected]>

* fix(patch): release cppgc wrapper tracking nodes

Ref: nodejs/node#56534

Co-Authored-By: GitHub Copilot <[email protected]>

* test: extend cpp heap remote app timeout

The ChunkedDataPipeReadableStream liveness test can exceed the remote fixture's 30-second watchdog under Linux ASAN, which disconnects the control socket before assertions run.

Ref: #52447

Co-Authored-By: GitHub Copilot <[email protected]>

* fix(patch): remove unused legacy tracing backend

Electron builds Node exclusively with Perfetto since #50591. Wire the upstream Perfetto agent directly and drop the legacy header split and dual-backend source lists.

Ref: #50591

Ref: nodejs/node#64565

Co-Authored-By: GitHub Copilot <[email protected]>

* docs: better explanation of test_account_for_libc_rm_error_on_electron_linux.patch

* refactor: node tracing agent and track event registration (#52678)

* fix: register Node tracing in utility processes

The Node upgrade moved tracing setup out of JavascriptEnvironment, but the utility process did not adopt the explicit registration used by other embedded Node hosts. Register its TrackEvent data source with Chromium before creating the isolate.

Co-Authored-By: John Kleinschmidt <[email protected]>

* chore: update patches (trivial only)

* chore: update patches (trivial only)

Co-Authored-By: GitHub Copilot <[email protected]>

* Revert "fix(patch): mark worker stack-size test flaky"

This reverts commit f2e5cb5.

* fixup! support native IPC serialization in V8 sandbox

* chore: address review feedback

(cherry picked from commit b8f475c)

* fixup! support native IPC serialization in V8 sandbox

Allocate ValueSerializer buffers as V8 backing stores and retain the
original backing store when adopting the released buffer. This preserves
the shared allocator lifetime when serialized buffers are transferred
from a worker and outlive its isolate.

(cherry picked from commit f35b26d)

* fixup! refactor: node tracing agent and track event registration

(cherry picked from commit d898f33)

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <[email protected]>
Co-authored-by: GitHub Copilot <[email protected]>
Co-authored-by: Robo <[email protected]>
Co-authored-by: John Kleinschmidt <[email protected]>
jkleinsc added a commit that referenced this pull request Aug 28, 2026
* chore: bump node in DEPS to v24.19.0

* chore: remove upstreamed patch

Ref: nodejs/node#64053

Co-Authored-By: GitHub Copilot <[email protected]>

* chore: update patches (trivial only)

Co-Authored-By: GitHub Copilot <[email protected]>

* fix(patch): add perfetto trace agent

Backport Node's Perfetto tracing agent now that Chromium V8 no longer exposes the legacy tracing controller APIs.

Ref: nodejs/node#64565

Ref: nodejs/node#64721

Co-Authored-By: GitHub Copilot <[email protected]>

* node#64565: src: rename legacy trace event headers

Ref: nodejs/node#64565

Co-Authored-By: GitHub Copilot <[email protected]>

* fix(patch): sample delay per event loop iteration

Ref: nodejs/node#62935

Ref: nodejs/node#64480

Co-Authored-By: GitHub Copilot <[email protected]>

* fix(patch): avoid redundant std::get_if<>() call

Ref: nodejs/node#64094

Co-Authored-By: GitHub Copilot <[email protected]>

* fix(patch): add perfetto trace agent

Ref: nodejs/node#64565

Co-Authored-By: GitHub Copilot <[email protected]>

* node#64053: src: abstract tracing agent for legacy and perfetto

Ref: nodejs/node#64053

Co-Authored-By: GitHub Copilot <[email protected]>

* fix(patch): add perfetto trace agent

Ref: nodejs/node#64565

Co-Authored-By: GitHub Copilot <[email protected]>

* node#64053: src: abstract tracing agent for legacy and perfetto

Ref: nodejs/node#64053

Co-Authored-By: GitHub Copilot <[email protected]>

* fix(patch): support native IPC serialization in V8 sandbox

Ref: nodejs/node#63933

Co-Authored-By: GitHub Copilot <[email protected]>

* test: hide output package.json in node spec runner

Virtual CommonJS files rooted at process.execPath inherit the output directory's type=module package unless the runner hides it alongside Chromium's root package.

Ref: nodejs/node#44713

Co-Authored-By: GitHub Copilot <[email protected]>

* fix(patch): account for libc++ rm error on Electron Linux

Node's fs.rmSync() delegates recursive deletion to
std::filesystem::remove_all(). Electron's Linux build uses libc++, which
reports ENOTEMPTY here while Node's libstdc++ build reports EACCES.

Ref: nodejs/node#57103

Co-Authored-By: GitHub Copilot <[email protected]>

* fix(patch): mark worker stack-size test flaky

Ref: nodejs/node#33085

Co-Authored-By: GitHub Copilot <[email protected]>

* fix(patch): restore user timing trace events

Ref: #50591

Co-Authored-By: GitHub Copilot <[email protected]>

* fix(patch): own fallback tracing controller

Ref: nodejs/node#64565

Co-Authored-By: GitHub Copilot <[email protected]>

* fix(patch): release cppgc wrapper tracking nodes

Ref: nodejs/node#56534

Co-Authored-By: GitHub Copilot <[email protected]>

* test: extend cpp heap remote app timeout

The ChunkedDataPipeReadableStream liveness test can exceed the remote fixture's 30-second watchdog under Linux ASAN, which disconnects the control socket before assertions run.

Ref: #52447

Co-Authored-By: GitHub Copilot <[email protected]>

* fix(patch): remove unused legacy tracing backend

Electron builds Node exclusively with Perfetto since #50591. Wire the upstream Perfetto agent directly and drop the legacy header split and dual-backend source lists.

Ref: #50591

Ref: nodejs/node#64565

Co-Authored-By: GitHub Copilot <[email protected]>

* docs: better explanation of test_account_for_libc_rm_error_on_electron_linux.patch

* refactor: node tracing agent and track event registration (#52678)

* fix: register Node tracing in utility processes

The Node upgrade moved tracing setup out of JavascriptEnvironment, but the utility process did not adopt the explicit registration used by other embedded Node hosts. Register its TrackEvent data source with Chromium before creating the isolate.

Co-authored-by: John Kleinschmidt <[email protected]>

* chore: update patches (trivial only)

* chore: update patches (trivial only)

Co-Authored-By: GitHub Copilot <[email protected]>

* Revert "fix(patch): mark worker stack-size test flaky"

This reverts commit f2e5cb5.

* fixup! support native IPC serialization in V8 sandbox

* chore: update patch

* chore: address review feedback

(cherry picked from commit b8f475c)

* fixup! support native IPC serialization in V8 sandbox

Allocate ValueSerializer buffers as V8 backing stores and retain the
original backing store when adopting the released buffer. This preserves
the shared allocator lifetime when serialized buffers are transferred
from a worker and outlive its isolate.

(cherry picked from commit f35b26d)

* fixup! refactor: node tracing agent and track event registration

(cherry picked from commit d898f33)

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <[email protected]>
Co-authored-by: GitHub Copilot <[email protected]>
Co-authored-by: Robo <[email protected]>
Co-authored-by: John Kleinschmidt <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport-check-skip Skip trop's backport validity checking no-backport semver/none

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants