[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