Re: [PATCH 0/9] Resolve libvirtd hang on termination with connected long running client

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Jan 23, 2018 at 05:41 PM +0100, Marc Hartmayer <mhartmay@xxxxxxxxxxxxxxxxxx> wrote:
> On Tue, Jan 23, 2018 at 04:01 PM +0100, John Ferlan <jferlan@xxxxxxxxxx> wrote:
>> On 01/23/2018 04:21 AM, Marc Hartmayer wrote:
>>> On Fri, Jan 19, 2018 at 06:23 PM +0100, John Ferlan <jferlan@xxxxxxxxxx> wrote:
>>>> RFC:
>>>> https://www.redhat.com/archives/libvir-list/2018-January/msg00318.html
>>>>
>>>> Adjustments since RFC...
>>>>
>>>> Patches 1&2: No change, were already R-B'd
>>>> Patch 3: Removed code as noted in code review, update commit message
>>>> Patch 4: From old series removed, see below for more details
>>>> Patch 9: no change
>>>> NB: Patches 5-8 and 10 from Nikolay Shirokovskiy <nshirokovskiy@xxxxxxxxxxxxx>
>>>>     are removed as they seemed to not be necessary
>>>>
>>>> Replaced the former patch 4 with series of patches to (slowly) provide
>>>> support to disable new connections, handle removing waiting jobs, causing
>>>> the waiting workers to quit, and allow any running jobs to complete.
>>>>
>>>> As it turns out, waiting for running jobs to complete cannot be done
>>>> from the virNetServerClose callbacks because that means the event loop
>>>> processing done during virNetServerRun will not allow any currently
>>>> long running worker job thread a means to complete.
>>>>
>>>> So when virNetDaemonQuit is called as a result of the libvirtd signal
>>>> handlers for SIG{QUIT|INT|TERM}, instead of just causing virNetServerRun
>>>> to quit immediately, alter to using a quitRequested flag and then use
>>>> that quitRequested flag to check for long running worker threads before
>>>> causing the event loop to quit resulting in libvirtd being able to run
>>>> through the virNetDaemonClose processing.
>>>
>>> Gave a quick test:
>>>  + Didn't get a segmentation fault at the end of libvirtd (at least for
>>>    my quick test)
>>>  - a single SIGTERM doesn’t always lead to the termination of libvirtd
>>>    now (debugged it: main thread is waiting for poll()). This behavior
>>>    can be easily reproduced: Start libvirtd on the CLI, wait some
>>>    seconds for the first initialization -> CTRL + C -> libvirtd doesn’t
>>>    terminate, but also doesn’t accept new connections.
>>>
>>
>> Does this include the "update" in my response to patch 7?  It should be
>> extract-able and apply-able.
>
> No, I forgot this one :( I’ll try it tomorrow.

It works with the new patch 7.

[…snip]

--
Beste Grüße / Kind regards
   Marc Hartmayer

IBM Deutschland Research & Development GmbH
Vorsitzende des Aufsichtsrats: Martina Koederitz
Geschäftsführung: Dirk Wittkopp
Sitz der Gesellschaft: Böblingen
Registergericht: Amtsgericht Stuttgart, HRB 243294


--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux