Skip to content

Commit

Permalink
perf_hooks: fix_performance_start_time
Browse files Browse the repository at this point in the history
fix #43062
  • Loading branch information
theanarkh committed May 12, 2022
1 parent 8e0f3ff commit 1e4f816
Show file tree
Hide file tree
Showing 6 changed files with 20 additions and 15 deletions.
4 changes: 3 additions & 1 deletion lib/_http_client.js
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,8 @@ const {
hasObserver,
} = require('internal/perf/observe');

const { now } = require('internal/perf/utils');

const kClientRequestStatistics = Symbol('ClientRequestStatistics');

const { addAbortSignal, finished } = require('stream');
Expand Down Expand Up @@ -345,7 +347,7 @@ ClientRequest.prototype._finish = function _finish() {
FunctionPrototypeCall(OutgoingMessage.prototype._finish, this);
if (hasObserver('http')) {
this[kClientRequestStatistics] = {
startTime: process.hrtime(),
startTime: now(),
type: 'HttpClient',
};
}
Expand Down
4 changes: 3 additions & 1 deletion lib/_http_server.js
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,8 @@ const {
hasObserver,
} = require('internal/perf/observe');

const { now } = require('internal/perf/utils');

const STATUS_CODES = {
100: 'Continue', // RFC 7231 6.2.1
101: 'Switching Protocols', // RFC 7231 6.2.2
Expand Down Expand Up @@ -194,7 +196,7 @@ function ServerResponse(req) {

if (hasObserver('http')) {
this[kServerResponseStatistics] = {
startTime: process.hrtime(),
startTime: now(),
type: 'HttpRequest',
};
}
Expand Down
7 changes: 4 additions & 3 deletions lib/internal/http.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ const {
hasObserver,
} = require('internal/perf/observe');

const { now } = require('internal/perf/utils');

let utcCache;

function utcDate() {
Expand All @@ -36,12 +38,11 @@ function resetCache() {
function emitStatistics(statistics) {
if (!hasObserver('http') || statistics == null) return;
const startTime = statistics.startTime;
const diff = process.hrtime(startTime);
const entry = new InternalPerformanceEntry(
statistics.type,
'http',
startTime[0] * 1000 + startTime[1] / 1e6,
diff[0] * 1000 + diff[1] / 1e6,
startTime,
now() - startTime,
undefined,
);
enqueue(entry);
Expand Down
9 changes: 5 additions & 4 deletions lib/internal/perf/observe.js
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,8 @@ const {

const { inspect } = require('util');

const { now } = require('internal/perf/utils');

const kDispatch = Symbol('kDispatch');
const kMaybeBuffer = Symbol('kMaybeBuffer');
const kDeprecatedFields = Symbol('kDeprecatedFields');
Expand Down Expand Up @@ -451,7 +453,7 @@ function startPerf(target, key, context = {}) {
if (hasObserver(context.type)) {
target[key] = {
...context,
startTime: process.hrtime(),
startTime: now(),
};
}
}
Expand All @@ -460,12 +462,11 @@ function stopPerf(target, key, context = {}) {
const ctx = target[key];
if (ctx && hasObserver(ctx.type)) {
const startTime = ctx.startTime;
const diff = process.hrtime(startTime);
const entry = new InternalPerformanceEntry(
ctx.name,
ctx.type,
startTime[0] * 1000 + startTime[1] / 1e6,
diff[0] * 1000 + diff[1] / 1e6,
startTime,
now() - startTime,
{ ...ctx.detail, ...context.detail },
);
enqueue(entry);
Expand Down
4 changes: 2 additions & 2 deletions src/node_http2.cc
Original file line number Diff line number Diff line change
Expand Up @@ -641,7 +641,7 @@ void Http2Stream::EmitStatistics() {
std::unique_ptr<Http2StreamPerformanceEntry> entry =
std::make_unique<Http2StreamPerformanceEntry>(
"Http2Stream",
start,
start - (node::performance::timeOrigin / 1e6),
duration,
statistics_);

Expand All @@ -661,7 +661,7 @@ void Http2Session::EmitStatistics() {
std::unique_ptr<Http2SessionPerformanceEntry> entry =
std::make_unique<Http2SessionPerformanceEntry>(
"Http2Session",
start,
start - (node::performance::timeOrigin / 1e6),
duration,
statistics_);

Expand Down
7 changes: 3 additions & 4 deletions src/node_perf.cc
Original file line number Diff line number Diff line change
Expand Up @@ -165,11 +165,10 @@ void MarkGarbageCollectionEnd(
std::unique_ptr<GCPerformanceEntry> entry =
std::make_unique<GCPerformanceEntry>(
"gc",
start_time,
start_time - (timeOrigin / 1e6),
duration,
GCPerformanceEntry::Details(
static_cast<PerformanceGCKind>(type),
static_cast<PerformanceGCFlags>(flags)));
GCPerformanceEntry::Details(static_cast<PerformanceGCKind>(type),
static_cast<PerformanceGCFlags>(flags)));

env->SetImmediate([entry = std::move(entry)](Environment* env) {
entry->Notify(env);
Expand Down

0 comments on commit 1e4f816

Please sign in to comment.