Uh oh!
There was an error while loading. Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork 34.3k
perf_hooks: remove useless calls in Histogram#41579
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
Uh oh!
There was an error while loading. Please reload this page.
Conversation
Coverity reported some calls that had no effect, remove them Signed-off-by: Michael Dawson <[email protected]>
mhdawson commented Jan 18, 2022
I guess this might explain why the call was made ? On OSX: ../src/histogram.cc:162:5: error: ignoring return value of function declared with 'warn_unused_result' attribute [-Werror,-Wunused-result] |
mhdawson commented Jan 18, 2022
Not sure why it did not fail locally, as seems to be reported for linux as well. Maybe my local compiler version? |
mhdawson commented Jan 18, 2022
I think I understand what is going on here:
Our options would seem to be:
|
mhdawson commented Jan 18, 2022
ToLocalChecked will crash if the result is empty so we'd only use that if we want to know that the Set failed versus just ignoring and continuing. |
mhdawson commented Jan 18, 2022
No local test failures with ToLocalChecked so I think that means it's not expected that the Set can fail. |
mhdawson commented Jan 18, 2022
@jasnell since I think you are the main contributor to this part of the code do you think I should:
Some additional explanation/discussion above. |
RaisinTen left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This would crash if an exception is thrown between subsequent V8 calls in any of these binding functions. As a solution, instead of removing the IsEmpty() checks, we should pass on the return value of the Set() call from the lambdas and in
Lines 61 to 70 in 22792c8
| template <typename Iterator> | |
| voidHistogram::Percentiles(Iterator&& fn){ | |
| Mutex::ScopedLock lock(mutex_); | |
| hdr_iter iter; | |
| hdr_iter_percentile_init(&iter, histogram_.get(), 1); | |
| while (hdr_iter_next(&iter)){ | |
| double key = iter.specifics.percentiles.percentile; | |
| fn(key, iter.value); | |
| } | |
| } |
while calling fn(), we should check if the returned value is an empty maybe and return early if that's the case.
addaleax commented Jan 19, 2022
+1 to what @RaisinTen said. If that's not an option, we should use |
jasnell commented Jan 19, 2022
I suggest just using |
mhdawson commented Jan 20, 2022
Thanks, I'll look at @RaisinTen's suggestion and if that does not seem practical add the USE() |
mhdawson commented Jan 26, 2022
Code higher up looks like getpercentilesBigInt(){if(!isHistogram(this))thrownewERR_INVALID_THIS('Histogram');this[kMap].clear();this[kHandle]?.percentilesBigInt(this[kMap]);returnthis[kMap];} |
mhdawson commented Jan 26, 2022
Returning the result of map-Set up to the JavaScript would only let us return undefined/null instead of an empty map, but I think For that reason I think just using |
Signed-off-by: Michael Dawson <[email protected]>
richardlau commented Jan 26, 2022
Commit message will need updating to reflect the new approach. |
mhdawson commented Jan 26, 2022
@RaisinTen pushed update to change to add USE() |
RaisinTen left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
nodejs-github-bot commented Jan 27, 2022
Coverity reported some calls that had no effect, remove them Signed-off-by: Michael Dawson <[email protected]> PR-URL: #41579 Reviewed-By: Yash Ladha <[email protected]> Reviewed-By: Darshan Sen <[email protected]> Reviewed-By: Richard Lau <[email protected]>
mhdawson commented Jan 28, 2022
Landed in d86dcaa |
Coverity reported some calls that had no effect, remove them Signed-off-by: Michael Dawson <[email protected]> PR-URL: nodejs#41579 Reviewed-By: Yash Ladha <[email protected]> Reviewed-By: Darshan Sen <[email protected]> Reviewed-By: Richard Lau <[email protected]>
Coverity reported some calls that had no effect, remove them Signed-off-by: Michael Dawson <[email protected]> PR-URL: #41579 Reviewed-By: Yash Ladha <[email protected]> Reviewed-By: Darshan Sen <[email protected]> Reviewed-By: Richard Lau <[email protected]>
Coverity reported some calls that had no effect, remove them Signed-off-by: Michael Dawson <[email protected]> PR-URL: #41579 Reviewed-By: Yash Ladha <[email protected]> Reviewed-By: Darshan Sen <[email protected]> Reviewed-By: Richard Lau <[email protected]>
Coverity reported some calls that had no effect, remove them Signed-off-by: Michael Dawson <[email protected]> PR-URL: #41579 Reviewed-By: Yash Ladha <[email protected]> Reviewed-By: Darshan Sen <[email protected]> Reviewed-By: Richard Lau <[email protected]>
Coverity reported some calls that had no effect, remove them Signed-off-by: Michael Dawson <[email protected]> PR-URL: #41579 Reviewed-By: Yash Ladha <[email protected]> Reviewed-By: Darshan Sen <[email protected]> Reviewed-By: Richard Lau <[email protected]>
Coverity reported some calls that had no effect,
remove them
Signed-off-by: Michael Dawson [email protected]