On 2/27/20 9:12 AM, Richard W.M. Jones wrote:
In tests/test-eval.sh we have a test which looks something like
this:
nbdkit eval close='echo closed > file' --run 'qemu-img info $nbd'
if ! grep 'closed' file; then fail; fi
However there was a race condition here. nbdkit exits when the --run
command exits without waiting for the captive nbdkit subprocess. Thus
we couldn't be sure that the final 'closed' message got written to the
file. It worked most of the time, but on slow machines the test
failed.
This indicates that we ought to wait for the captive nbdkit to exit.
One reason is so that plugin cleanup is done before we continue after
the captive nbdkit. That should make shell scripts using captive
nbdkit + any plugin that does significant cleanup on exit more
predictable.
This adds the appropriate call to waitpid but we still ignore the exit
status of the captive nbdkit subprocess (in fact it is most likely to
fail since it will sent a SIGTERM signal).
---
server/captive.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
ACK.
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3226
Virtualization:
qemu.org |
libvirt.org