Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

async-hooks: add trace events to AsyncWrap #15538

Closed
wants to merge 1 commit into from
Closed

async-hooks: add trace events to AsyncWrap #15538

wants to merge 1 commit into from

Conversation

AndreasMadsen
Copy link
Member

@AndreasMadsen AndreasMadsen commented Sep 21, 2017

rebase of #14347 This is for debugging purposes, I'm getting a segmentation fault when running just node, but with trace_events enables it works. @matthewloring doesn't get the segmentation fault, so I'm running the CI on this PR to check it out.

This will allow trace event to record timing information for all
asynchronous operations that are observed by AsyncWrap.

Checklist
  • make -j4 test (UNIX), or vcbuild test (Windows) passes
  • tests and/or benchmarks are included
  • commit message follows commit guidelines
Affected core subsystem(s)

async_hooks, trace_events

@nodejs-github-bot nodejs-github-bot added c++ Issues and PRs that require attention from people who are familiar with C++. lib / src Issues and PRs related to general changes in the lib or src directory. labels Sep 21, 2017
@AndreasMadsen AndreasMadsen added async_hooks Issues and PRs related to the async hooks subsystem. async_wrap labels Sep 21, 2017
@AndreasMadsen
Copy link
Member Author

addaleax
addaleax previously approved these changes Sep 21, 2017
@matthewloring
Copy link

The CI is segfaulting as well. I can try to reproduce it again.

@matthewloring
Copy link

I suspect this is a breakage inside the trace event macros. It has been a few versions of V8 since they were updated so we will probably have to do something like #12127 again. As soon as this change lands, we'll be able to test for such breakages inside node to ensure the macros are updated when new versions of V8 are picked up.

@matthewloring
Copy link

Actually it looks like the macros haven't changed much. There were some changes to how the tracing controller is maintained with the new platform implementation. Does this patch help?

diff --git a/src/node.cc b/src/node.cc
index d6678dd967..c14d5229dd 100644
--- a/src/node.cc
+++ b/src/node.cc
@@ -268,7 +268,7 @@ static struct {
         trace_enabled ? tracing_agent_->GetTracingController() : nullptr);
     V8::InitializePlatform(platform_);
     tracing::TraceEventHelper::SetTracingController(
-        trace_enabled ? tracing_agent_->GetTracingController() : nullptr);
+        trace_enabled ? tracing_agent_->GetTracingController() : new v8::TracingController());
   }
 
   void Dispose() {

@AndreasMadsen
Copy link
Member Author

@matthewloring it appears too.

Running a new CI: https://ci.nodejs.org/job/node-test-pull-request/10190/

@AndreasMadsen
Copy link
Member Author

AndreasMadsen commented Sep 24, 2017

I've added a simple process.binding('trace_events') module that just supports basic emit and categoryGroupEnabled. The latter is to see if a category is enabled, which we should use to check if the node category is enabled. The code is a simplification of that in https://github.com/jasongin/nodejs/tree/tracejs.

There appears to be a bug with categories. Running the code below with node --trace-events-enabled --trace-event-categories v8 benchmark_server.js 10 shows that both v8 and custom are enabled. But only v8 should be enabled. In the trace_events output the custom events are shown too, the reported category for these events is v8.

If node --trace-events-enabled --trace-event-categories custom benchmark_server.js 10 is used, then both v8 and custom are reported disabled and there is no trace_events output.

/cc @jasongin @matthewloring

'use strict';
const http = require('http');
const fs = require('fs');
const trace_events = process.binding('trace_events');

const sleeptime = parseInt(process.argv[2], 10) || 0;
console.log(`sleeping ${sleeptime} ms at each request`);

console.log(trace_events.categoryGroupEnabled('v8'));
console.log(trace_events.categoryGroupEnabled('custom'));

function sleep (msec) {
  var start = Date.now();
  while (Date.now() - start < msec) {}
}

const server = http.createServer(function (req, res) {
  sleep(sleeptime);
  fs.createReadStream(__filename).pipe(res);
});


server.listen(8080, '127.0.0.1', function () {
  let left = 100;
  for (let i = 0; i < 100; i++) {
    trace_events.emit('S'.charCodeAt(0), 'custom', 'request-time', i + 1, 'triggerId', 10)
    http.get('http://127.0.0.1:8080', function (res) {
      res.resume();
      res.on('end', function () {
        trace_events.emit('F'.charCodeAt(0), 'custom', 'request-time', i + 1, 'triggerId', 20)
        left -= 1;
        if (left === 0) server.close();
      });
    });
  }
});

@BridgeAR
Copy link
Member

This needs a rebase

num_args = 1;
Local<Context> context = env->isolate()->GetCurrentContext();
printf("name [A]: %s\n", name); // REQUEST
arg_names[0] = Utf8Value(env->isolate(), args[4]).out();
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@addaleax could you take a look? I don't understand why fetching the c-string of args[4] changes the value of name.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@AndreasMadsen The memory associated with Utf8Value.out() is tied to the lifetime of the Utf8Value itself – you can’t really use GetName like this, sorry.

(It sounds like what happens here is that when name = GetName() is called, the name string is converted to utf8, that memory is returned by GetName(), then freed because the Utf8Value goes out of scope; when you try to update arg_names[0] here, the same thing happens, and this just re-uses the memory allocated for name.)

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, this does make sense to me. However, I'm not sure how to appropriately fix it. Can you help me?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The easiest way would be to just keep the Utf8Value around while you use the string (basically what you do here – this is also what we do in most of the codebase, so grepping around should show enough examples).

The second-easiest thing would probably be to create std::strings from those Utf8Values and use them instead, e.g. GetName() could return a std::string and should start working :)

Copy link
Member Author

@AndreasMadsen AndreasMadsen Oct 3, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks. I was worried if the if-block scoping would cause some issues.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh – right, the block scope is an issue here. I think you can actually move the Utf8Value declaration to outside of the diff … if that doesn’t work, std::string is probably the way to go

@addaleax addaleax dismissed their stale review October 3, 2017 14:29

need to take another look later

extern tracing::Agent* tracing_agent;

// The tracing APIs require category groups to be pointers to long-lived
// strings. Those strings are stored here.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looking at the V8 source code, this doesn’t seem to be true? (https://github.com/nodejs/node/blob/master/deps/v8/src/libplatform/tracing/tracing-controller.cc#L168 & related places use string comparisons, not pointer comparisons)

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, I'm confused too. This is where it is documented: https://github.com/nodejs/node/blob/master/src/tracing/trace_event_common.h#L123

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hm, okay … /cc @matthewloring

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I really can’t make out a code path where this is actually needed … but it would be really good to have that verified by somebody who is familiar with the tracing code

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed. It is very confusing. I think trace_events runs in a separate thread, can that affect it somehow?


if (env->destroy_async_id_list()->empty())
uv_timer_start(env->destroy_async_ids_timer_handle(),
DestroyAsyncIdsCallback, 0, 0);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Feel free to ignore, but common code style is to use braces if the body of an if statement longer than one line

if (args.Length() < 6 || (args[4]->IsUndefined() && args[5]->IsUndefined())) {
num_args = 0;
}
else if (args[4]->IsString() && args[5]->IsNumber()) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(feel free to also ignore: common code style is to have } and else (if) on the same line

}
else if (args[4]->IsString() && args[5]->IsNumber()) {
num_args = 1;
Local<Context> context = env->isolate()->GetCurrentContext();
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You can just use env->context(), and if you want to have context be a local variable I’d put it somewhere near the top (where env is declared as well)

@AndreasMadsen
Copy link
Member Author

I have fixed all issues, added more tests, fixed lint issues and squashed all commits.

This is now ready for review :)

CI: https://ci.nodejs.org/job/node-test-pull-request/10399/

@AndreasMadsen
Copy link
Member Author

/cc @nodejs/diagnostics

using v8::Object;
using v8::Value;

extern tracing::Agent* tracing_agent;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this used somewhere?

extern tracing::Agent* tracing_agent;

// The tracing APIs require category groups to be pointers to long-lived
// strings. Those strings are stored here.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I really can’t make out a code path where this is actually needed … but it would be really good to have that verified by somebody who is familiar with the tracing code

return insertion.first->c_str();
}

static inline char GetPhase(Environment* env, const Local<Value>& arg) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: You can pass Locals as Local<Value>, they are basically just pointers so copying them is effectively free

@AndreasMadsen
Copy link
Member Author

AndreasMadsen commented Oct 5, 2017

@matthewloring so it turns out trace_events isn't that much faster than just using fs.write and template strings to dump the data. Are we doing something wrong?

benchmark-plot


benchmark server tested using 10 wrk runs with default parameters.

'use strict';

const http = require('http');
const fs = require('fs');

const server = http.createServer(function (req, res) {
  fs.createReadStream(__filename).pipe(res);
});


server.listen(8080, '127.0.0.1', function () {
  console.log('http://127.0.0.1:8080');
});

@AndreasMadsen
Copy link
Member Author

@matthewloring
Copy link

@AndreasMadsen I'm sorry but I don't fully understand the graph. Are you comparing throughput with trace event active (and trace points inside async wrap) vs. throughput with fs.write calls inside the JS async wrap code?

@AndreasMadsen
Copy link
Member Author

AndreasMadsen commented Oct 5, 2017

Hmm, I'm not sure if throughput is the right word. It is the requests per second.

The 4 runs are:

  • baseline: node server.js
  • naive async_hooks(all): node -r log.js server.js
  • trace_events async_hooks(all): node --trace-events-enabled --trace-event-categories node.async_hooks server.js
  • trace_events async_hooks(cpp): node --trace-events-enabled --trace-event-categories node.async_hooks server.js but with the JS async_hooks consumer always disabled.
log.js
'use strict';

const async_hooks = require('async_hooks');
const fs = require('fs');
const whitelistProviders = new Set(Object.keys(process.binding('async_wrap').Providers));

const providerMap = new Map();
const tick = process.hrtime();
const fd = fs.openSync('naive_async_hooks_event_logger.log', 'w');
let skip = false;

function ts() {
  const tock = process.hrtime(tick);
  return Math.floor(tock[0] * 1e6 + tock[1] * 1e-3);
}

function checkError(err) {
  if (err) throw err;
}

async_hooks.createHook({
  init(asyncId, provider, triggerAsyncId, resource) {
    if (skip) return;
    if (!whitelistProviders.has(provider)) return;
    providerMap.set(asyncId, provider);

    skip = true;
    fs.write(fd, `{"pid":${process.pid},"tid":775,"ts":${ts()},"ph":"b","cat":"node","name":"${provider}","dur":0,"tdur":0,"id":0x"${asyncId.toString(16)}","args":{}}\n`, checkError);
    skip = false;
  },

  before(asyncId) {
    if (!providerMap.has(asyncId)) return;
    const provider = providerMap.get(asyncId);

    skip = true;
    fs.write(fd, `{"pid":${process.pid},"tid":775,"ts":${ts()},"ph":"b","cat":"node","name":"${provider}_CALLBACK","dur":0,"tdur":0,"id":0x"${asyncId.toString(16)}","args":{}}\n`, checkError);
    skip = false;
  },

  after(asyncId) {
    if (!providerMap.has(asyncId)) return;
    const provider = providerMap.get(asyncId);

    skip = true;
    fs.write(fd, `{"pid":${process.pid},"tid":775,"ts":${ts()},"ph":"e","cat":"node","name":"${provider}_CALLBACK","dur":0,"tdur":0,"id":0x"${asyncId.toString(16)}","args":{}}\n`, checkError);
    skip = false;
  },

  destroy(asyncId) {
    if (!providerMap.has(asyncId)) return;
    const provider = providerMap.get(asyncId);
    providerMap.delete(asyncId);

    skip = true;
    fs.write(fd, `{"pid":${process.pid},"tid":775,"ts":${ts()},"ph":"e","cat":"node","name":"${provider}","dur":0,"tdur":0,"id":0x"${asyncId.toString(16)}","args":{}}\n`, checkError);
    skip = false;
  }
}).enable();

process.on('exit', function () {
  fs.closeSync(fd);
});

edit: oh, I guess that comparison isn't fair since run.js it doesn't log the process.nextTick events. I will rerun.

@AndreasMadsen
Copy link
Member Author

Fixed the benchmark. The results are more reasonable now.

benchmark-plot-1


The comment is collapsed, but could you also look at #15538 (comment)

@matthewloring
Copy link

I agree that not logging next ticks would skew the results. I would expect trace events to do substantially better than any logging done from JS but would have to do some profiling to have a more detailed picture.

@AndreasMadsen
Copy link
Member Author

AndreasMadsen commented Oct 6, 2017

The CI is almost green, I'm getting this error on win2008r2-vs2017/vs2015 specifically.

Mismatched <anonymous> function calls. Expected exactly 1, actual 2.
    at Object.exports.mustCall (c:\workspace\node-test-binary-windows\COMPILED_BY\vs2015\RUNNER\win2008r2-vs2017\RUN_SUBSET\1\test\common\index.js:485:10)
    at Object.<anonymous> (c:\workspace\node-test-binary-windows\COMPILED_BY\vs2015\RUNNER\win2008r2-vs2017\RUN_SUBSET\1\test\parallel\test-async-wrap-uncaughtexception.js:14:33)
    at Module._compile (module.js:600:30)
    at Object.Module._extensions..js (module.js:611:10)
    at Module.load (module.js:521:32)
    at tryModuleLoad (module.js:484:12)
    at Function.Module._load (module.js:476:3)
    at Function.Module.runMain (module.js:641:10)
    at startup (bootstrap_node.js:187:16)

I'm not sure what could have caused that :/

@AndreasMadsen
Copy link
Member Author

@AndreasMadsen
Copy link
Member Author

Ouch, looks like the error is legit. But I'm totally lost how this error could have any relation to this PR. It is also oddly specific to the Windows version and VS version, so I'm not sure there are any good reasons. I'm clueless.

@AndreasMadsen
Copy link
Member Author

/cc @nodejs/platform-windows - Please help :/


} // namespace node

NODE_MODULE_CONTEXT_AWARE_BUILTIN(trace_events, node::InitializeTraceEvents)
Copy link
Member

@bnoordhuis bnoordhuis Nov 16, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should have been NODE_BUILTIN_MODULE_CONTEXT_AWARE(...) and probably breaks the shared/static library build. I'll open a PR to rectify and remove NODE_MODULE_CONTEXT_AWARE_BUILTIN() while I'm at it.

edit: #17071

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks 😂

@bnoordhuis
Copy link
Member

bnoordhuis commented Nov 16, 2017

Back-porters, this should land along with #17071 (edit: #17071 in turn depends on #16565.)

MylesBorins pushed a commit that referenced this pull request Dec 11, 2017
This will allow trace event to record timing information for all
asynchronous operations that are observed by async_hooks.

PR-URL: #15538
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
MylesBorins added a commit that referenced this pull request Dec 12, 2017
Notable changes:

* async\_hooks:
  - add trace events to async_hooks (Andreas Madsen)
    #15538
  - add provider types for net server (Andreas Madsen)
    #17157
* console:
  - console.debug can now be used outside of the inspector
    (Benjamin Zaslavsky) #17033
* deps:
  - upgrade libuv to 1.18.0 (cjihrig)
    #17282
  - patch V8 to 6.2.414.46 (Myles Borins)
    #17206
* module:
  - module.builtinModules will return a list of built in modules
    (Jon Moss) #16386
* n-api:
  - add helper for addons to get the event loop (Anna Henningsen)
    #17109
* process:
  - process.setUncaughtExceptionCaptureCallback can now be used to
    customize behavior for `--abort-on-uncaught-exception`
    (Anna Henningsen) #17159
  - A signal handler is now able to receive the signal code that
    triggered the handler. (Robert Rossmann)
    #15606
* src:
  - embedders can now use Node::CreatePlatform to create an instance of
    NodePlatform (Cheng Zhao)
    #16981
* stream:
  - writable.writableHighWaterMark and readable.readableHighWaterMark
    will return the values the stream object was instantiated with
    (Calvin Metcalf) #12860
* **Added new collaborators**
  * [maclover7](https://github.com/maclover7) Jon Moss
  * [guybedford](https://github.com/guybedford) Guy Bedford
  * [hashseed](https://github.com/hashseed) Yang Guo

PR-URL: Coming Soon
@MylesBorins MylesBorins mentioned this pull request Dec 12, 2017
MylesBorins added a commit that referenced this pull request Dec 12, 2017
Notable changes:

* async\_hooks:
  - add trace events to async_hooks (Andreas Madsen)
    #15538
  - add provider types for net server (Andreas Madsen)
    #17157
* console:
  - console.debug can now be used outside of the inspector
    (Benjamin Zaslavsky) #17033
* deps:
  - upgrade libuv to 1.18.0 (cjihrig)
    #17282
  - patch V8 to 6.2.414.46 (Myles Borins)
    #17206
* module:
  - module.builtinModules will return a list of built in modules
    (Jon Moss) #16386
* n-api:
  - add helper for addons to get the event loop (Anna Henningsen)
    #17109
* process:
  - process.setUncaughtExceptionCaptureCallback can now be used to
    customize behavior for `--abort-on-uncaught-exception`
    (Anna Henningsen) #17159
  - A signal handler is now able to receive the signal code that
    triggered the handler. (Robert Rossmann)
    #15606
* src:
  - embedders can now use Node::CreatePlatform to create an instance of
    NodePlatform (Cheng Zhao)
    #16981
* stream:
  - writable.writableHighWaterMark and readable.readableHighWaterMark
    will return the values the stream object was instantiated with
    (Calvin Metcalf) #12860
* **Added new collaborators**
  * [maclover7](https://github.com/maclover7) Jon Moss
  * [guybedford](https://github.com/guybedford) Guy Bedford
  * [hashseed](https://github.com/hashseed) Yang Guo

PR-URL: #17631
MylesBorins added a commit that referenced this pull request Dec 12, 2017
Notable changes:

* async\_hooks:
  - add trace events to async_hooks (Andreas Madsen)
    #15538
  - add provider types for net server (Andreas Madsen)
    #17157
* console:
  - console.debug can now be used outside of the inspector
    (Benjamin Zaslavsky) #17033
* deps:
  - upgrade libuv to 1.18.0 (cjihrig)
    #17282
  - patch V8 to 6.2.414.46 (Myles Borins)
    #17206
* module:
  - module.builtinModules will return a list of built in modules
    (Jon Moss) #16386
* n-api:
  - add helper for addons to get the event loop (Anna Henningsen)
    #17109
* process:
  - process.setUncaughtExceptionCaptureCallback can now be used to
    customize behavior for `--abort-on-uncaught-exception`
    (Anna Henningsen) #17159
  - A signal handler is now able to receive the signal code that
    triggered the handler. (Robert Rossmann)
    #15606
* src:
  - embedders can now use Node::CreatePlatform to create an instance of
    NodePlatform (Cheng Zhao)
    #16981
* stream:
  - writable.writableHighWaterMark and readable.readableHighWaterMark
    will return the values the stream object was instantiated with
    (Calvin Metcalf) #12860
* **Added new collaborators**
  * [maclover7](https://github.com/maclover7) Jon Moss
  * [guybedford](https://github.com/guybedford) Guy Bedford
  * [hashseed](https://github.com/hashseed) Yang Guo

PR-URL: #17631
deepak1556 pushed a commit to electron/electron that referenced this pull request Jan 6, 2018
- Always start the inspector agent for nodejs/node#17085
- Set the tracing controller for node nodejs/node#15538
- Isolate data creation now requires plaform nodejs/node#16700
deepak1556 pushed a commit to electron/electron that referenced this pull request Jan 6, 2018
- Always start the inspector agent for nodejs/node#17085
- Set the tracing controller for node nodejs/node#15538
- Isolate data creation now requires plaform nodejs/node#16700
codebytere added a commit to electron/electron that referenced this pull request Jan 6, 2018
* update submodule refs for node v9.3.0

* Define "llvm_version" for Node.js build

* NODE_MODULE_CONTEXT_AWARE_BUILTIN -> NODE_BUILTIN_MODULE_CONTEXT_AWARE

* update NodePlatform to MultiIsolatePlatform

* fix linting error

* update node ref

* REVIEW: Explicitly register builtin modules

nodejs/node#16565

* update libcc ref

* switch libcc to c62

* REVIEW: Address node api changes

- Always start the inspector agent for nodejs/node#17085
- Set the tracing controller for node nodejs/node#15538
- Isolate data creation now requires plaform nodejs/node#16700
gibfahn pushed a commit to gibfahn/node that referenced this pull request Jan 17, 2018
This will allow trace event to record timing information for all
asynchronous operations that are observed by async_hooks.

PR-URL: nodejs#15538
Backport-PR-URL: nodejs#18179
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
MylesBorins pushed a commit that referenced this pull request Jan 19, 2018
This will allow trace event to record timing information for all
asynchronous operations that are observed by async_hooks.

Backport-PR-URL: #18179
PR-URL: #15538
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
zcbenz pushed a commit to electron/electron that referenced this pull request Jan 31, 2018
* update submodule refs for node v9.3.0

* Define "llvm_version" for Node.js build

* NODE_MODULE_CONTEXT_AWARE_BUILTIN -> NODE_BUILTIN_MODULE_CONTEXT_AWARE

* update NodePlatform to MultiIsolatePlatform

* fix linting error

* update node ref

* REVIEW: Explicitly register builtin modules

nodejs/node#16565

* update libcc ref

* switch libcc to c62

* REVIEW: Address node api changes

- Always start the inspector agent for nodejs/node#17085
- Set the tracing controller for node nodejs/node#15538
- Isolate data creation now requires plaform nodejs/node#16700
alexeykuzmin pushed a commit to electron/electron that referenced this pull request Feb 21, 2018
* update submodule refs for node v9.3.0

* Define "llvm_version" for Node.js build

* NODE_MODULE_CONTEXT_AWARE_BUILTIN -> NODE_BUILTIN_MODULE_CONTEXT_AWARE

* update NodePlatform to MultiIsolatePlatform

* fix linting error

* update node ref

* REVIEW: Explicitly register builtin modules

nodejs/node#16565

* update libcc ref

* switch libcc to c62

* REVIEW: Address node api changes

- Always start the inspector agent for nodejs/node#17085
- Set the tracing controller for node nodejs/node#15538
- Isolate data creation now requires plaform nodejs/node#16700
alexeykuzmin pushed a commit to electron/electron that referenced this pull request Feb 22, 2018
* update submodule refs for node v9.3.0

* Define "llvm_version" for Node.js build

* NODE_MODULE_CONTEXT_AWARE_BUILTIN -> NODE_BUILTIN_MODULE_CONTEXT_AWARE

* update NodePlatform to MultiIsolatePlatform

* fix linting error

* update node ref

* REVIEW: Explicitly register builtin modules

nodejs/node#16565

* update libcc ref

* switch libcc to c62

* REVIEW: Address node api changes

- Always start the inspector agent for nodejs/node#17085
- Set the tracing controller for node nodejs/node#15538
- Isolate data creation now requires plaform nodejs/node#16700
zcbenz pushed a commit to electron/electron that referenced this pull request Feb 23, 2018
* update submodule refs for node v9.3.0

* Define "llvm_version" for Node.js build

* NODE_MODULE_CONTEXT_AWARE_BUILTIN -> NODE_BUILTIN_MODULE_CONTEXT_AWARE

* update NodePlatform to MultiIsolatePlatform

* fix linting error

* update node ref

* REVIEW: Explicitly register builtin modules

nodejs/node#16565

* update libcc ref

* switch libcc to c62

* REVIEW: Address node api changes

- Always start the inspector agent for nodejs/node#17085
- Set the tracing controller for node nodejs/node#15538
- Isolate data creation now requires plaform nodejs/node#16700
zcbenz pushed a commit to electron/electron that referenced this pull request Feb 23, 2018
* update submodule refs for node v9.3.0

* Define "llvm_version" for Node.js build

* NODE_MODULE_CONTEXT_AWARE_BUILTIN -> NODE_BUILTIN_MODULE_CONTEXT_AWARE

* update NodePlatform to MultiIsolatePlatform

* fix linting error

* update node ref

* REVIEW: Explicitly register builtin modules

nodejs/node#16565

* update libcc ref

* switch libcc to c62

* REVIEW: Address node api changes

- Always start the inspector agent for nodejs/node#17085
- Set the tracing controller for node nodejs/node#15538
- Isolate data creation now requires plaform nodejs/node#16700
gibfahn added a commit that referenced this pull request Mar 6, 2018
Notable changes:

* deps:
  * update V8 to 6.2.414.46 (Michaël Zasso) [#16413](#16413)
  * revert ABI breaking changes in V8 6.2 (Anna Henningsen) [#16413](#16413)
  * upgrade libuv to 1.19.1 (cjihrig) [#18260](#18260)
  * re land npm 5.6.0 (Myles Borins) [#18625](#18625)
  * ICU 60 bump (Steven R. Loomis) [#16876](#16876)
* crypto:
  * Support both OpenSSL 1.1.0 and 1.0.2 (David Benjamin) [#16130](#16130)
  * warn on invalid authentication tag length (Tobias Nießen) [#17566](#17566)
* async_hooks:
  * update defaultTriggerAsyncIdScope for perf (Anatoli Papirovski) [#18004](#18004)
  * use typed array stack as fast path (Anna Henningsen) [#17780](#17780)
  * use scope for defaultTriggerAsyncId (Andreas Madsen) [#17273](#17273)
  * separate missing from default context (Andreas Madsen) [#17273](#17273)
  * rename initTriggerId (Andreas Madsen) [#17273](#17273)
  * deprecate undocumented API (Andreas Madsen) [#16972](#16972)
  * add destroy event for gced AsyncResources (Sebastian Mayr) [#16998](#16998)
  * add trace events to async_hooks (Andreas Madsen) [#15538](#15538)
  * set HTTPParser trigger to socket (Andreas Madsen) [#18003](#18003)
  * add provider types for net server (Andreas Madsen) [#17157](#17157)
* n-api:
  * add helper for addons to get the event loop (Anna Henningsen) [#17109](#17109)
* cli:
  * add --stack-trace-limit to NODE_OPTIONS (Anna Henningsen) [#16495](#16495)
* console:
  * add support for console.debug (Benjamin Zaslavsky) [#17033](#17033)
* module:
  * add builtinModules (Jon Moss) [#16386](#16386)
  * replace default paths in require.resolve() (cjihrig) [#17113](#17113)
* src:
  * add helper for addons to get the event loop (Anna Henningsen) [#17109](#17109)
  * add process.ppid (cjihrig) [#16839](#16839)
* http:
  * support generic `Duplex` streams (Anna Henningsen) [#16267](#16267)
  * add rawPacket in err of `clientError` event (XadillaX) [#17672](#17672)
  * better support for IPv6 addresses (Mattias Holmlund) [#14772](#14772)
* net:
  * remove ADDRCONFIG DNS hint on Windows (Bartosz Sosnowski) [#17662](#17662)
* process:
  * fix reading zero-length env vars on win32 (Anna Henningsen) [#18463](#18463)
* tls:
  * unconsume stream on destroy (Anna Henningsen) [#17478](#17478)
* process:
  * improve unhandled rejection message (Madara Uchiha) [#17158](#17158)
* stream:
  * remove usage of *State.highWaterMark (Calvin Metcalf) [#12860](#12860)
* trace_events:
  * add executionAsyncId to init events (Andreas Madsen) [#17196](#17196)

PR-URL: #18336
gibfahn added a commit that referenced this pull request Mar 7, 2018
Notable changes:

* deps:
  * update V8 to 6.2.414.46 (Michaël Zasso) [#16413](#16413)
  * revert ABI breaking changes in V8 6.2 (Anna Henningsen) [#16413](#16413)
  * upgrade libuv to 1.19.1 (cjihrig) [#18260](#18260)
  * re land npm 5.6.0 (Myles Borins) [#18625](#18625)
  * ICU 60 bump (Steven R. Loomis) [#16876](#16876)
* crypto:
  * Support both OpenSSL 1.1.0 and 1.0.2 (David Benjamin) [#16130](#16130)
  * warn on invalid authentication tag length (Tobias Nießen) [#17566](#17566)
* async_hooks:
  * update defaultTriggerAsyncIdScope for perf (Anatoli Papirovski) [#18004](#18004)
  * use typed array stack as fast path (Anna Henningsen) [#17780](#17780)
  * use scope for defaultTriggerAsyncId (Andreas Madsen) [#17273](#17273)
  * separate missing from default context (Andreas Madsen) [#17273](#17273)
  * rename initTriggerId (Andreas Madsen) [#17273](#17273)
  * deprecate undocumented API (Andreas Madsen) [#16972](#16972)
  * add destroy event for gced AsyncResources (Sebastian Mayr) [#16998](#16998)
  * add trace events to async_hooks (Andreas Madsen) [#15538](#15538)
  * set HTTPParser trigger to socket (Andreas Madsen) [#18003](#18003)
  * add provider types for net server (Andreas Madsen) [#17157](#17157)
* n-api:
  * add helper for addons to get the event loop (Anna Henningsen) [#17109](#17109)
* cli:
  * add --stack-trace-limit to NODE_OPTIONS (Anna Henningsen) [#16495](#16495)
* console:
  * add support for console.debug (Benjamin Zaslavsky) [#17033](#17033)
* module:
  * add builtinModules (Jon Moss) [#16386](#16386)
  * replace default paths in require.resolve() (cjihrig) [#17113](#17113)
* src:
  * add helper for addons to get the event loop (Anna Henningsen) [#17109](#17109)
  * add process.ppid (cjihrig) [#16839](#16839)
* http:
  * support generic `Duplex` streams (Anna Henningsen) [#16267](#16267)
  * add rawPacket in err of `clientError` event (XadillaX) [#17672](#17672)
  * better support for IPv6 addresses (Mattias Holmlund) [#14772](#14772)
* net:
  * remove ADDRCONFIG DNS hint on Windows (Bartosz Sosnowski) [#17662](#17662)
* process:
  * fix reading zero-length env vars on win32 (Anna Henningsen) [#18463](#18463)
* tls:
  * unconsume stream on destroy (Anna Henningsen) [#17478](#17478)
* process:
  * improve unhandled rejection message (Madara Uchiha) [#17158](#17158)
* stream:
  * remove usage of *State.highWaterMark (Calvin Metcalf) [#12860](#12860)
* trace_events:
  * add executionAsyncId to init events (Andreas Madsen) [#17196](#17196)

PR-URL: #18336
sethlu pushed a commit to sethlu/electron that referenced this pull request May 3, 2018
* update submodule refs for node v9.3.0

* Define "llvm_version" for Node.js build

* NODE_MODULE_CONTEXT_AWARE_BUILTIN -> NODE_BUILTIN_MODULE_CONTEXT_AWARE

* update NodePlatform to MultiIsolatePlatform

* fix linting error

* update node ref

* REVIEW: Explicitly register builtin modules

nodejs/node#16565

* update libcc ref

* switch libcc to c62

* REVIEW: Address node api changes

- Always start the inspector agent for nodejs/node#17085
- Set the tracing controller for node nodejs/node#15538
- Isolate data creation now requires plaform nodejs/node#16700
MayaLekova pushed a commit to MayaLekova/node that referenced this pull request May 8, 2018
Notable changes:

* deps:
  * update V8 to 6.2.414.46 (Michaël Zasso) [nodejs#16413](nodejs#16413)
  * revert ABI breaking changes in V8 6.2 (Anna Henningsen) [nodejs#16413](nodejs#16413)
  * upgrade libuv to 1.19.1 (cjihrig) [nodejs#18260](nodejs#18260)
  * re land npm 5.6.0 (Myles Borins) [nodejs#18625](nodejs#18625)
  * ICU 60 bump (Steven R. Loomis) [nodejs#16876](nodejs#16876)
* crypto:
  * Support both OpenSSL 1.1.0 and 1.0.2 (David Benjamin) [nodejs#16130](nodejs#16130)
  * warn on invalid authentication tag length (Tobias Nießen) [nodejs#17566](nodejs#17566)
* async_hooks:
  * update defaultTriggerAsyncIdScope for perf (Anatoli Papirovski) [nodejs#18004](nodejs#18004)
  * use typed array stack as fast path (Anna Henningsen) [nodejs#17780](nodejs#17780)
  * use scope for defaultTriggerAsyncId (Andreas Madsen) [nodejs#17273](nodejs#17273)
  * separate missing from default context (Andreas Madsen) [nodejs#17273](nodejs#17273)
  * rename initTriggerId (Andreas Madsen) [nodejs#17273](nodejs#17273)
  * deprecate undocumented API (Andreas Madsen) [nodejs#16972](nodejs#16972)
  * add destroy event for gced AsyncResources (Sebastian Mayr) [nodejs#16998](nodejs#16998)
  * add trace events to async_hooks (Andreas Madsen) [nodejs#15538](nodejs#15538)
  * set HTTPParser trigger to socket (Andreas Madsen) [nodejs#18003](nodejs#18003)
  * add provider types for net server (Andreas Madsen) [nodejs#17157](nodejs#17157)
* n-api:
  * add helper for addons to get the event loop (Anna Henningsen) [nodejs#17109](nodejs#17109)
* cli:
  * add --stack-trace-limit to NODE_OPTIONS (Anna Henningsen) [nodejs#16495](nodejs#16495)
* console:
  * add support for console.debug (Benjamin Zaslavsky) [nodejs#17033](nodejs#17033)
* module:
  * add builtinModules (Jon Moss) [nodejs#16386](nodejs#16386)
  * replace default paths in require.resolve() (cjihrig) [nodejs#17113](nodejs#17113)
* src:
  * add helper for addons to get the event loop (Anna Henningsen) [nodejs#17109](nodejs#17109)
  * add process.ppid (cjihrig) [nodejs#16839](nodejs#16839)
* http:
  * support generic `Duplex` streams (Anna Henningsen) [nodejs#16267](nodejs#16267)
  * add rawPacket in err of `clientError` event (XadillaX) [nodejs#17672](nodejs#17672)
  * better support for IPv6 addresses (Mattias Holmlund) [nodejs#14772](nodejs#14772)
* net:
  * remove ADDRCONFIG DNS hint on Windows (Bartosz Sosnowski) [nodejs#17662](nodejs#17662)
* process:
  * fix reading zero-length env vars on win32 (Anna Henningsen) [nodejs#18463](nodejs#18463)
* tls:
  * unconsume stream on destroy (Anna Henningsen) [nodejs#17478](nodejs#17478)
* process:
  * improve unhandled rejection message (Madara Uchiha) [nodejs#17158](nodejs#17158)
* stream:
  * remove usage of *State.highWaterMark (Calvin Metcalf) [nodejs#12860](nodejs#12860)
* trace_events:
  * add executionAsyncId to init events (Andreas Madsen) [nodejs#17196](nodejs#17196)

PR-URL: nodejs#18336
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
async_hooks Issues and PRs related to the async hooks subsystem. c++ Issues and PRs that require attention from people who are familiar with C++. lib / src Issues and PRs related to general changes in the lib or src directory. semver-minor PRs that contain new features and should be released in the next minor version.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants