node icon indicating copy to clipboard operation
node copied to clipboard

While using performance.measure(...) the detail fields isn't passed on to the PerformanceObserver since Node V20

Open mishaled opened this issue 1 year ago • 3 comments

Version

20

Platform

Mac

Subsystem

perf_hooks

What steps will reproduce the bug?

const { performance, PerformanceObserver } = require('perf_hooks');

const perfObserver = new PerformanceObserver((items) => {
  const entries = items.getEntries();
  entries.forEach((entry) => console.log(entry));
});

perfObserver.observe({ entryTypes: ['measure'] });

performance.mark(`sample-start`);
console.log('doing some work...');
performance.mark('sample-end');

performance.measure('sample', {
  start: 'sample-start',
  end: 'sample-end',
  detail: { some: 'data' },
});

How often does it reproduce? Is there a required condition?

Reproduces consistently

What is the expected behavior? Why is that the expected behavior?

The expected output-

doing some work...
PerformanceMeasure {
  name: 'sample',
  entryType: 'measure',
  startTime: 8.93499899105882,
  duration: 6.525000999999975,
  detail: { some: 'data' }
}

What do you see instead?

doing some work...
PerformanceMeasure {
  name: 'sample',
  entryType: 'measure',
  startTime: 8.93499899105882,
  duration: 6.525000999999975,
}

Additional information

Works well when using Node V18

mishaled avatar Jun 24 '24 12:06 mishaled

Thanks for the report! If you don't mind, could you edit your issue to use markdown code blocks? That way it'll be easier for viewers to see code vs text.

avivkeller avatar Jun 24 '24 13:06 avivkeller

@RedYetiDev I would like to work on this issue. I will start investigating the problem and will post updates here. Thank you!

MeCode50 avatar Jun 24 '24 15:06 MeCode50

You can use entry.detail or submit a PR to add toJSON function for PerformanceMeasure class .

theanarkh avatar Jun 24 '24 16:06 theanarkh