On Thu, Jul 23, 2020 at 01:14:07PM +0300, Nikolay Shirokovskiy wrote: > Currently we have issues like [1] on libvirtd shutdown as we cleanup while RPC > and other threads are still running. Let's finish all threads other then main > before cleanup. > > The approach to finish threads is suggested in [2]. In order to finish RPC > threads serving API calls we let the event loop run but stop accepting new API > calls and block processing any pending API calls. We also inform all drivers of > shutdown so they can prepare for shutdown too. Then we wait for all RPC threads > and driver's background thread to finish. If finishing takes more then 15s we > just exit as we can't safely cleanup in time. > > [1] https://bugzilla.redhat.com/show_bug.cgi?id=1828207 > [2] https://www.redhat.com/archives/libvir-list/2020-April/msg01328.html > > Signed-off-by: Nikolay Shirokovskiy <nshirokovskiy@xxxxxxxxxxxxx> > Reviewed-by: Daniel Henrique Barboza <danielhb413@xxxxxxxxx> > --- > src/remote/remote_daemon.c | 6 ++-- > src/rpc/virnetdaemon.c | 81 +++++++++++++++++++++++++++++++++++++++++++++- > 2 files changed, 83 insertions(+), 4 deletions(-) Reviewed-by: Daniel P. Berrangé <berrange@xxxxxxxxxx> Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|