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 _______________________________________________ Libguestfs mailing list [email protected] https://www.redhat.com/mailman/listinfo/libguestfs
