I don't think it's too early to start discussing the criteria for eventually moving the new diagnostic reporting functionality out of experimental status. As a diagnostic tool, the criteria might be different from n-api, http2, or workers, as the ecosystem is less likely (though not impossible) to build other modules on top of the core functionality.
@cjihrig - here are few questions / considerations that I can think of:
env
data where we store the config data is unavailabe in fatal error contexts; so we cannot figure out what the user request was. This could be solved in a couple of ways, but worker support decision can potentially influence how we want to attack this.Overall, I agree that it is reasonable to discuss the experimental exit criteria at this point, and identify / action on items that we agree upon.
I think this list can be condensed a bit down to:
I'd really like to see this move out of experimental before Node 12 goes LTS.
https://github.com/nodejs/diagnostics/issues/306 proposing versioning the report format.
Proof of concept for the versioning thing at https://github.com/nodejs/node/pull/28121.
Support for Workers: https://github.com/nodejs/node/pull/31386
I'm working on unflagging this. These are the changes I'm implementing:
node_report
configure option a no-op. The idea is that report
will always be available moving forward.--experimental-report
CLI flag a no-op and remove its uses in the code and docs. The experimental warning will also be removed.--report-on-fatalerror
CLI flag experimental. It seems like most remaining issues are related to this flag and things like OOM scenarios. I don't think it's worth keeping everything else experimental because of this.I'll follow up with semver-major changes:
node_report
configure option.--experimental-report
CLI flag.Is anyone opposed to this plan? It seems like the report feature is mostly stable at this point, and it would be great to get more people using it by unflagging.
LGTM, but consider leaving the no-op CLI flag around for as long as its needed in some supported Node.js versions, this seems to be the pattern we're using for other options (--http-parser
) that don't do anything, but are still allowed to be specified so the same invocation works for across all release lines.
- Make the --experimental-report CLI flag a no-op and remove its uses in the code and docs. The experimental warning will also be removed.
Then would an opt-out option to disable the generation of node-report make sense with it?
Then would an opt-out option to disable the generation of node-report make sense with it?
I might be misunderstanding your comment, but I don't think that's necessary. --experimental-report
currently enables the diagnostic report feature, but the reports should only be generated if --report-uncaught-exception
, --report-on-signal
, --report-on-fatalerror
, etc. is used.
@cjihrig -
v14.0.0 is being planned with March 24th as the development-cut date https://github.com/nodejs/node/pull/32181 . It would be great to release report as stable in 14, given it is a major plus slated for future LTS. Are you already working on items listed in https://github.com/nodejs/node/issues/26293#issuecomment-583873144 ? let me know if I can be of any help!
Yes, my plan is to have this ready to land as stable in Node 14.
Make the --report-on-fatalerror CLI flag experimental. It seems like most remaining issues are related to this flag and things like OOM scenarios. I don't think it's worth keeping everything else experimental because of this.
Just bringing https://github.com/nodejs/node/pull/29881 up to see if --report-on-fatalerror
not been respected (conditional generating reports on fatal error regardless of the presence of the flag) will be counted as a blocker to the stable promotion?
@legendecas - as quoted somewhere, the issue #29881 is trying to address is a bug, not a missing feature, so should not be a blocker for elevation to stable.
However, I don't see major challenges in getting that addressed in 2 week's time as well!
I'm reopening this because https://github.com/nodejs/node/pull/32242 is marked semver-major
, which will block backport to 12.x
Why is moving to un-experimental considered semver-major
? In what case is that a breaking change? It seems semver-minor
to me. Changing stability to be less stable would be a breaking change, I can see that, but the opposite seems backportable.
@sam-github I guess that鈥檚 a question for @cjihrig, but yes, it does not seem semver-major to me at all.
I was just being cautious. TBH, it can be difficult to keep up with all of Node core's policies around these things. I'm perfectly good with it not being semver-major.
Most helpful comment
I was just being cautious. TBH, it can be difficult to keep up with all of Node core's policies around these things. I'm perfectly good with it not being semver-major.