Skip to content

Node v20.19.1 nsolid v5.7.1 release#305

Merged
santigimeno merged 391 commits intonode-v20.x-nsolid-v5.xfrom
node-v20.19.1-nsolid-v5.7.1-release
May 12, 2025
Merged

Node v20.19.1 nsolid v5.7.1 release#305
santigimeno merged 391 commits intonode-v20.x-nsolid-v5.xfrom
node-v20.19.1-nsolid-v5.7.1-release

Conversation

@santigimeno
Copy link
Copy Markdown
Member

@santigimeno santigimeno commented May 7, 2025

Summary by CodeRabbit

  • New Features

    • Introduced a comprehensive gRPC agent for N|Solid, enabling profiling, metrics, logging, and event reporting with OpenTelemetry integration.
    • Added support for exporting and streaming profiling data (CPU, heap, heap sampling, heap snapshots) and runtime events via gRPC.
    • Implemented a full set of Protocol Buffers (protobuf) definitions and generated C++ code for gRPC communication, including asset, command, metrics, info, packages, and event messages.
    • Added ESLint configuration and new modules for agent code, improving code quality and consistency.
    • Provided build scripts and configuration files for agent compilation and integration.
  • Documentation

    • Added and updated documentation to reflect new agent features, build instructions, and configuration guidelines.
  • Chores

    • Integrated new build and configuration files to support agent development and deployment.
    • Added license and author mapping updates for new components and contributors.

lpinca and others added 30 commits January 24, 2025 22:18
Remove confusing and outdated sentence in `doc/api/stream.md`.

Fixes: nodejs/node#55987
PR-URL: nodejs/node#55988
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Jason Zhang <xzha4350@gmail.com>
Reviewed-By: LiviaMedeiros <livia@cirno.name>
Reviewed-By: Jake Yuesong Li <jake.yuesong@gmail.com>
PR-URL: nodejs/node#55968
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Stefan Stojanovic <stefan.stojanovic@janeasystems.com>
Reviewed-By: Juan José Arboleda <soyjuanarbol@gmail.com>
Fixes: nodejs/node#55938
PR-URL: nodejs/node#55990
Refs: nodejs/node#29524
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: LiviaMedeiros <livia@cirno.name>
Move the history entry for the `TextDecoder` class into the class
description itself instead of its constructor.

Refs: nodejs/node#55938
PR-URL: nodejs/node#55991
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: LiviaMedeiros <livia@cirno.name>
PR-URL: nodejs/node#55992
Reviewed-By: Ruy Adorno <ruy@vlt.sh>
Reviewed-By: Richard Lau <rlau@redhat.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
PR-URL: nodejs/node#55950
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
Reviewed-By: Juan José Arboleda <soyjuanarbol@gmail.com>
The `node:path` module is referenced in a code snippet that doesn't
actually use it.

PR-URL: nodejs/node#55570
Reviewed-By: Raz Luvaton <rluvaton@gmail.com>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
PR-URL: nodejs/node#55998
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: LiviaMedeiros <livia@cirno.name>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Jason Zhang <xzha4350@gmail.com>
PR-URL: nodejs/node#56007
Reviewed-By: Richard Lau <rlau@redhat.com>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: Marco Ippolito <marcoippolito54@gmail.com>
PR-URL: nodejs/node#56008
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: Richard Lau <rlau@redhat.com>
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
Reviewed-By: Juan José Arboleda <soyjuanarbol@gmail.com>
PR-URL: nodejs/node#55980
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
Reviewed-By: Marco Ippolito <marcoippolito54@gmail.com>
The `build:node` npm script now expects esbuild to be installed and
bin-linked.

Closes: nodejs/node#56061
PR-URL: nodejs/node#56069
Fixes: nodejs/node#56061
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: LiviaMedeiros <livia@cirno.name>
Reviewed-By: Pietro Marchini <pietro.marchini94@gmail.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
PR-URL: nodejs/node#56043
Reviewed-By: Juan José Arboleda <soyjuanarbol@gmail.com>
Reviewed-By: Richard Lau <rlau@redhat.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
To prevent users from executing the workflow via CLI
without passing the desired inputs.

PR-URL: nodejs/node#56042
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
PR-URL: nodejs/node#56046
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Marco Ippolito <marcoippolito54@gmail.com>
Reviewed-By: Richard Lau <rlau@redhat.com>
Move `test/sequential/test-worker-arraybuffer-zerofill.js` back to
`test/parallel/test-worker-arraybuffer-zerofill.js` and remove the
flaky designation.

The original issue is likely the same as other tests that time out.

Refs: nodejs/node#54918
Refs: nodejs/node#54839
Refs: nodejs/node#54802
PR-URL: nodejs/node#56053
Reviewed-By: Richard Lau <rlau@redhat.com>
Reviewed-By: LiviaMedeiros <livia@cirno.name>
Reviewed-By: Jake Yuesong Li <jake.yuesong@gmail.com>
PR-URL: nodejs/node#56084
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
PR-URL: nodejs/node#55993
Reviewed-By: Ruy Adorno <ruy@vlt.sh>
PR-URL: nodejs/node#56016
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: Richard Lau <rlau@redhat.com>
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4.0.3 to 4.1.0.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](actions/setup-node@v4.0.3...39370e3)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
PR-URL: nodejs/node#56100
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
Reviewed-By: Mohammed Keyvanzadeh <mohammadkeyvanzade94@gmail.com>
Reviewed-By: Tierney Cyren <hello@bnb.im>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Bumps [step-security/harden-runner](https://github.com/step-security/harden-runner) from 2.10.1 to 2.10.2.
- [Release notes](https://github.com/step-security/harden-runner/releases)
- [Commits](step-security/harden-runner@91182cc...0080882)

---
updated-dependencies:
- dependency-name: step-security/harden-runner
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
PR-URL: nodejs/node#56101
Reviewed-By: Tierney Cyren <hello@bnb.im>
Reviewed-By: Marco Ippolito <marcoippolito54@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.7 to 4.2.2.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v4.1.7...11bd719)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
PR-URL: nodejs/node#56102
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
Reviewed-By: Mohammed Keyvanzadeh <mohammadkeyvanzade94@gmail.com>
Reviewed-By: Tierney Cyren <hello@bnb.im>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.27.0 to 3.27.5.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](github/codeql-action@6624720...f09c1c0)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
PR-URL: nodejs/node#56103
Reviewed-By: Mohammed Keyvanzadeh <mohammadkeyvanzade94@gmail.com>
Reviewed-By: Tierney Cyren <hello@bnb.im>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
PR-URL: nodejs/node#56108
Reviewed-By: Matthew Aitken <maitken033380023@gmail.com>
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Fixes: nodejs/node#55918
PR-URL: nodejs/node#56132
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
Reviewed-By: Robert Nagy <ronagy@icloud.com>
Reviewed-By: Debadree Chatterjee <debadree333@gmail.com>
PR-URL: nodejs/node#56054
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
Document that running `./tools/release.sh` script using the recently
added `-a` CLI flag enables the previously-default interactive interface
to select the correct PGP key.

PR-URL: nodejs/node#56124
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Richard Lau <rlau@redhat.com>
The issue is likely the same as other tests that time out.

Refs: nodejs/node#54918
Refs: nodejs/node#54844
Refs: nodejs/node#54802
PR-URL: nodejs/node#56052
Reviewed-By: Michaël Zasso <targos@protonmail.com>
PR-URL: nodejs/node#56023
Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
Reviewed-By: Juan José Arboleda <soyjuanarbol@gmail.com>
PR-URL: nodejs/node#55275
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Daniel Lemire <daniel@lemire.me>
Stop using synchronous exporting as it may block for a substantial
period of time on network disconnections.

PR-URL: #278
Reviewed-By: Juan José Arboleda <soyjuanarbol@gmail.com>
PR-URL: #286
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
PR-URL: #180
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
Reviewed-by: Trevor Norris <trev.norris@gmail.com>
PR-URL: #286
PR-URL: #288
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
PR-URL: #280
Reviewed-By: Juan José Arboleda <soyjuanarbol@gmail.com>
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
After having enabled `ENABLE_ASYNC_EXPORT` in `opentelemetry-cpp`.

PR-URL: #281
Reviewed-By: Juan José Arboleda <soyjuanarbol@gmail.com>
Replace manual message handling with AsyncTSQueue for profile data.
Remove initialize() method as initialization is now handled in
constructor.
Simplify profile callback implementation.
Remove process_profiles() as AsyncTSQueue handles this automatically.
Update ZMQ and gRPC agents to remove initialize() calls.

PR-URL: #282
Reviewed-By: Juan José Arboleda <soyjuanarbol@gmail.com>
Add is_running checks to all public methods.
Prevent operations on deleted profiler instances.
Add early return guards to TakeCpuProfile, StopProfiling, and
StopProfilingSync.
Improve stability during shutdown sequence.

PR-URL: #282
Reviewed-By: Juan José Arboleda <soyjuanarbol@gmail.com>
Which was overlooked in the initial implementation.
Add tests covering the case.

Fixes: nodesource/nsolid-roadmap#29
PR-URL: #293
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
It needs the abseil dependency to successfully build it. It was working
locally for me because I had that dependency already installed globally
in my dev box.

PR-URL: #291
Reviewed-By: Juan José Arboleda <soyjuanarbol@gmail.com>
Specifically the ones retrieving `metrics`, `info` and `config` which
can contain non-ascii-only string fields.

PR-URL: #295
Reviewed-By: Juan José Arboleda <soyjuanarbol@gmail.com>
As the loaded modules are indexed by url, we need to convert those into
actual paths in order to be able to read those files.

PR-URL: #296
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
This commit refactors the GrpcClient::DelegateAsyncExport method to use
templates instead of having multiple overloaded implementations for each
event type.

This change significantly reduces code duplication while maintaining the
same functionality, making the codebase more maintainable and less prone
to errors when adding new event types.

PR-URL: #294
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
PR-URL: #298
Reviewed-By: Juan José Arboleda <soyjuanarbol@gmail.com>
2025-04-22 Node.js v20.19.1 Iron (LTS) Release
Git-EVTag-v0-SHA512: 2dcf8537f2879df804f31cc58a5673afe9e6c5c4b0c0f17dc8e7a536699a62fe5893f5df2c5d9278dc09248d966d9acea73f04441b0f0628f4dad509613ba539
@santigimeno santigimeno requested a review from juanarbol May 7, 2025 08:58
@santigimeno santigimeno self-assigned this May 7, 2025
@windsurf-bot
Copy link
Copy Markdown

windsurf-bot Bot commented May 7, 2025

I ran into an unexpected issue while reviewing this PR. Please try again later.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 7, 2025

Caution

Review failed

Failed to post review comments.

Walkthrough

This update introduces a comprehensive gRPC-based agent system for N|Solid, including C++ source, header, and generated files for gRPC and Protocol Buffers, along with JavaScript bindings and integration. The new agent supports profiling, metrics, command/control, and event reporting, using OpenTelemetry and detailed protobuf schemas. The implementation includes asynchronous streaming, bidirectional command channels, and robust lifecycle management.

Changes

File(s) Change Summary
agents/grpc/lib/agent.js, agents/grpc/lib/nsolid.js New JavaScript modules exporting gRPC agent functionality, wiring native bindings and agent logic.
agents/grpc/proto/*.proto New Protocol Buffers definitions for assets, blocked loop events, commands, common structures, exit events, info, metrics, packages, profiling, reconfiguration, source code, and startup times, defining all message types and service RPCs for the agent.
agents/grpc/proto/BUILD New build script for generating C++ gRPC sources from proto files.
agents/grpc/src/asset_stream.cc, agents/grpc/src/asset_stream.h Implementation and interface for asynchronous gRPC asset streaming from the agent to the server, including observer notification and thread-safe queuing.
agents/grpc/src/binding.cc Native Node.js binding exposing profiling and snapshot control to JavaScript via V8, wiring to the gRPC agent.
agents/grpc/src/command_stream.cc, agents/grpc/src/command_stream.h Implementation and interface for bidirectional gRPC command streaming, with observer pattern for command reception and stream lifecycle.
agents/grpc/src/grpc_agent.cc, agents/grpc/src/grpc_agent.h Main agent implementation: manages gRPC communication, profiling, metrics, event reporting, OpenTelemetry integration, SaaS support, and lifecycle.
agents/grpc/src/grpc_client.cc, agents/grpc/src/grpc_client.h Utility for creating gRPC channels, contexts, stubs, and generic asynchronous export of events using protobuf arenas.
agents/grpc/src/grpc_errors.h Definitions of gRPC error types, codes, and error storage struct.
agents/grpc/src/proto/*.pb.h, agents/grpc/src/proto/*.pb.cc Generated C++ protobuf message classes for all proto definitions, providing serialization, deserialization, and field accessors.
agents/grpc/src/proto/*.grpc.pb.h, agents/grpc/src/proto/*.grpc.pb.cc Generated gRPC C++ headers and source files for service and stub scaffolding (currently empty namespaces, ready for service implementation).

Sequence Diagram(s)

sequenceDiagram
    participant JS as JavaScript (nsolid.js)
    participant NB as Native Binding (binding.cc)
    participant AG as GrpcAgent (grpc_agent.cc)
    participant GC as GrpcClient (grpc_client.cc)
    participant S as NSolidService (gRPC server)

    JS->>NB: Call profiling/snapshot method
    NB->>AG: Native method invocation (e.g., start_cpu_profile)
    AG->>GC: Prepare and send gRPC request (e.g., ExportAsset)
    GC->>S: gRPC stream (ExportAsset/Command)
    S-->>GC: Event/Command response
    GC-->>AG: Callback with status/data
    AG-->>NB: Return result/status
    NB-->>JS: Callback/Promise resolution
Loading

Poem

In tunnels of code, the agents awake,
With gRPC streams and protobufs they make,
Metrics and profiles, events sent with care,
Async and streaming, they're always aware.
Rabbits in code, with ears held high,
N|Solid hops forward—oh my, oh my!
✨ Finishing Touches
  • 📝 Generate Docstrings

🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@santigimeno santigimeno changed the base branch from node-v22.x-nsolid-v5.x to node-v20.x-nsolid-v5.x May 8, 2025 21:09
@santigimeno santigimeno merged commit 7ba1558 into node-v20.x-nsolid-v5.x May 12, 2025
2 checks passed
@santigimeno santigimeno deleted the node-v20.19.1-nsolid-v5.7.1-release branch May 12, 2025 13:39
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.