[Libguestfs] question on nbdkit shutdown behavior
Richard W.M. Jones
rjones at redhat.com
Tue Nov 14 10:25:53 UTC 2017
On Mon, Nov 13, 2017 at 12:42:48PM -0600, Eric Blake wrote:
> I'm observing a difference in timing on nbdkit shutdown that is
> dependent on client behavior, and I wonder if that's a bug, but I can't
> figure out where to patch it.
>
> When there is no connection present, sending SIGINT to nbdkit terminates
> immediately.
>
> If, on the other hand, there is a single client currently connected, the
> termination behavior on SIGINT depends on what the client has done: if
> the client is currently silent with regards to issuing
> transmission-phase transactions, nbdkit hangs for 5 seconds, then
> forcibly tears down the connection:
I'm guessing it's because of commit 63f0eb0889c8f8a82ba06a02a8a92d695902baad
which I added to fix a race in plugin_cleanup(). See also:
https://www.redhat.com/archives/libguestfs/2017-September/msg00226.html
[...]
> Why does current traffic from the client cause the plugin to be torn
> down faster? Does it matter?
I believe because the main loop checks the !quit flag if there
is traffic on the connection.
There is most likely to be a better fix for the race than 63f0eb0889.
I added that as a quick workaround for the segfault we saw in the
tests. Perhaps we should actively cancel the threads on shutdown
instead of waiting?
Rich.
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-top is 'top' for virtual machines. Tiny program with many
powerful monitoring features, net stats, disk stats, logging, etc.
http://people.redhat.com/~rjones/virt-top
More information about the Libguestfs
mailing list