Join GitHub today
GitHub is home to over 31 million developers working together to host and review code, manage projects, and build software together.
Sign uplib: rearm pre-existing signal event registrations #24651
Conversation
This comment has been minimized.
This comment has been minimized.
nodejs-github-bot
commented
Nov 26, 2018
|
@gireeshpunathil sadly an error occured when I tried to trigger a build :( |
nodejs-github-bot
added
the
process
label
Nov 26, 2018
gireeshpunathil
added
the
lib / src
label
Nov 26, 2018
gireeshpunathil
requested review from
joyeecheung and
addaleax
Nov 26, 2018
gireeshpunathil
force-pushed the
gireeshpunathil:signal_rearm
branch
from
77bbb0d
to
58fc8ec
Nov 26, 2018
addaleax
approved these changes
Nov 26, 2018
mscdex
reviewed
Nov 26, 2018
| // re-arm pre-existing signal event registrations | ||
| // with this signal wrap capabilities. | ||
| const events = process.eventNames(); | ||
| if (events != null) { |
This comment has been minimized.
This comment has been minimized.
mscdex
Nov 26, 2018
Contributor
Won't this always be true? It should always be at the very least an empty array.
This comment has been minimized.
This comment has been minimized.
gireeshpunathil
Nov 26, 2018
Author
Member
@mscdex - thanks, yes - the process object was subjected for events in the previous block, so there should be a non-null array. I removed the check now and tested, all good. PTAL.
gireeshpunathil
requested a review
from
mscdex
Nov 26, 2018
mscdex
reviewed
Nov 26, 2018
| // re-arm pre-existing signal event registrations | ||
| // with this signal wrap capabilities. | ||
| const events = process.eventNames(); | ||
| events.forEach((ev) => { |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
gireeshpunathil
force-pushed the
gireeshpunathil:signal_rearm
branch
from
2679a8a
to
5f0cbdb
Nov 26, 2018
fhinkel
approved these changes
Nov 27, 2018
joyeecheung
approved these changes
Nov 27, 2018
|
|
||
| // re-arm pre-existing signal event registrations | ||
| // with this signal wrap capabilities. | ||
| process.eventNames().forEach((ev) => { |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
gireeshpunathil
Nov 27, 2018
Author
Member
@joyeecheung - thanks, I am unaware of any such preferences; pls let me know (or any links on) if there are any merits / tradeoffs between the two?
This comment has been minimized.
This comment has been minimized.
joyeecheung
Nov 27, 2018
Member
Just an observation, at least I thought we prefer for-of loops...
(on a side note, I took a look at the bytecode generated with for-of loops and they look humongous compared to forEach loops)
This comment has been minimized.
This comment has been minimized.
devsnek
Nov 27, 2018
Member
from perf standpoint, forEach is usually faster in newer versions of V8. from from a semantic standpoint i think it looks better to use forEach, but that's just opinion.
This comment has been minimized.
This comment has been minimized.
gireeshpunathil
Nov 28, 2018
Author
Member
thanks @joyeecheung @devsnek for the reasoning; so I am keeping things as is.
This comment has been minimized.
This comment has been minimized.
Trott
added
the
author ready
label
Nov 28, 2018
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
|
Landed in 25ad8de |
gireeshpunathil commentedNov 26, 2018
process.on('somesignal', ...) semantics expect the process to catch the signal and invoke the associated handler.
setupSignalHandlersperform the additional task of preparing the libuv signal handler and associate it with the event handler. It is possible that by the time this is setup there could be pre-existing registrations that pre-date this setup in the boot sequence.So rearm pre-existing signal event registrations to get those upto speed.
This is required by node-report; however given its independent existence
raising is a separate one.
I wish I could add a test for this, but realize it might not be possible, as the logic is exercised within the boot sequence that is not influenced / intercepted by any test cases.
Ref: #22712 (comment)
/cc @addaleax
Checklist
make -j4 test(UNIX), orvcbuild test(Windows) passes