Uh oh!
There was an error while loading. Please reload this page.
test: unflake async hooks statwatcher test - #30362
Conversation
lundibundi
commented
Nov 11, 2019
Could someone help with node-stress-single-test, what would be the correct GIT_REMOTE_REF for this PR? ( |
Trott
commented
Nov 12, 2019
Thank you for this!!!!
|
lundibundi
commented
Nov 12, 2019
Well, looks like it was successful. |
Trott
commented
Nov 12, 2019
@nodejs/testing @nodejs/async_hooks This could use some reviews. |
lundibundi
commented
Nov 26, 2019
ping @nodejs/testing @nodejs/async_hooks |
Trott
commented
Nov 27, 2019
@nodejs/collaborators |
nodejs-github-bot
commented
Dec 21, 2019
richardlau
commented
Dec 21, 2019
If this unflakes the test shouldn’t it be removed from |
Under high load 2 types of issues arise with this test. * filesystem calls gets queued even when the 'sync' is used which leads to async_hooks being called with the events of tmpdir clean or initial file write after clean. This is solved by counting all 'change' calls while making sure there is no dependency of StatWatcher's on one another and the expected changes are waited for. * some events are getting lost with the current clean->write->write_and_watch strategy. Specifically I observed the file size going from 0 to 5 entirely skipping 3 even though the write call was there (this happened reliably on -j128). So I've changed the strategy to avoid additional write considering this still tests the hooks correctly. This may indicate some sort of bug in async_hooks though I'm not sure. Closes: nodejs#21425
a4e124f to
33b8300Comparelundibundi
commented
Dec 21, 2019
@richardlau done. I had to rebase (and force push) as this change wasn't present at the time. |
nodejs-github-bot
commented
Dec 21, 2019
Trott
commented
Dec 22, 2019
Landed in ea6a457 |
Under high load 2 types of issues arise with this test. * filesystem calls gets queued even when the 'sync' is used which leads to async_hooks being called with the events of tmpdir clean or initial file write after clean. This is solved by counting all 'change' calls while making sure there is no dependency of StatWatcher's on one another and the expected changes are waited for. * some events are getting lost with the current clean->write->write_and_watch strategy. Specifically I observed the file size going from 0 to 5 entirely skipping 3 even though the write call was there (this happened reliably on -j128). So I've changed the strategy to avoid additional write considering this still tests the hooks correctly. This may indicate some sort of bug in async_hooks though I'm not sure. Closes: #21425 PR-URL: #30362Fixes: #21425 Reviewed-By: Stephen Belanger <admin@stephenbelanger.com> Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: Richard Lau <riclau@uk.ibm.com> Reviewed-By: Vladimir de Turckheim <vlad2t@hotmail.com>
Under high load 2 types of issues arise with this test. * filesystem calls gets queued even when the 'sync' is used which leads to async_hooks being called with the events of tmpdir clean or initial file write after clean. This is solved by counting all 'change' calls while making sure there is no dependency of StatWatcher's on one another and the expected changes are waited for. * some events are getting lost with the current clean->write->write_and_watch strategy. Specifically I observed the file size going from 0 to 5 entirely skipping 3 even though the write call was there (this happened reliably on -j128). So I've changed the strategy to avoid additional write considering this still tests the hooks correctly. This may indicate some sort of bug in async_hooks though I'm not sure. Closes: #21425 PR-URL: #30362Fixes: #21425 Reviewed-By: Stephen Belanger <admin@stephenbelanger.com> Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: Richard Lau <riclau@uk.ibm.com> Reviewed-By: Vladimir de Turckheim <vlad2t@hotmail.com>
Under high load 2 types of issues arise with this test. * filesystem calls gets queued even when the 'sync' is used which leads to async_hooks being called with the events of tmpdir clean or initial file write after clean. This is solved by counting all 'change' calls while making sure there is no dependency of StatWatcher's on one another and the expected changes are waited for. * some events are getting lost with the current clean->write->write_and_watch strategy. Specifically I observed the file size going from 0 to 5 entirely skipping 3 even though the write call was there (this happened reliably on -j128). So I've changed the strategy to avoid additional write considering this still tests the hooks correctly. This may indicate some sort of bug in async_hooks though I'm not sure. Closes: #21425 PR-URL: #30362Fixes: #21425 Reviewed-By: Stephen Belanger <admin@stephenbelanger.com> Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: Richard Lau <riclau@uk.ibm.com> Reviewed-By: Vladimir de Turckheim <vlad2t@hotmail.com>
Under high load 2 types of issues arise with this test. * filesystem calls gets queued even when the 'sync' is used which leads to async_hooks being called with the events of tmpdir clean or initial file write after clean. This is solved by counting all 'change' calls while making sure there is no dependency of StatWatcher's on one another and the expected changes are waited for. * some events are getting lost with the current clean->write->write_and_watch strategy. Specifically I observed the file size going from 0 to 5 entirely skipping 3 even though the write call was there (this happened reliably on -j128). So I've changed the strategy to avoid additional write considering this still tests the hooks correctly. This may indicate some sort of bug in async_hooks though I'm not sure. Closes: #21425 PR-URL: #30362Fixes: #21425 Reviewed-By: Stephen Belanger <admin@stephenbelanger.com> Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: Richard Lau <riclau@uk.ibm.com> Reviewed-By: Vladimir de Turckheim <vlad2t@hotmail.com>
Under high load 2 types of issues arise with this test.
filesystem calls gets queued even when the 'sync' is used which leads
to async_hooks being called with the events of tmpdir clean or
initial file write after clean.
This is solved by counting all 'change' calls while making sure there
is no dependency of StatWatcher's on one another and the expected
changes are waited for.
some events are getting lost with the current
clean->write->write_and_watch strategy. Specifically I observed the
file size going from 0 (
empty) to 5 ('foo++') entirely skipping 3 ('foo') even though the writecall was there (this happened reliably on -j128).
So I've changed the strategy to avoid additional write considering
this still tests the hooks correctly.
This may indicate some sort of bug in async_hooks though I'm not sure.Not the async hooks but the fs watcher as it was missing an event.
With these changes, this test reliably passes with
-j128 --repeat 4000on my machine. Time to test this on CI.Closes: #21425
Checklist
make -j4 test(UNIX), orvcbuild test(Windows) passes