[libvirt] [Discussion] How do we think about time out mechanism?
James
james.wangyufei at huawei.com
Tue Aug 5 09:30:49 UTC 2014
On 2014/8/5 17:13, Martin Kletzander wrote:
> On Tue, Aug 05, 2014 at 03:15:18PM +0800, James wrote:
>> In fact, to deal with this kind of situation, we add some timeout codes in libvirtd, during remote_dispatch process.
>> The mechanism is like this:
>> 1. when we call an API, we start a thread to do the timer, when time out, the timer set a timeout flag to the API,
>> and return timeout result to the libvirt client.
>> 2. when the API return to remote_dispatch level, it checkout the timeout flag to consider what to do next.
>> If timeout, we do some rollback action. It's like detach device, if we attach device at first.
>>
>> In this solution, there's something trouble, first, we have to figure out suitable rollback actions. Second, I'm
>> not sure it's the best way to solve this kind of block problem, not so elegant.
>>
>> How do you think about it?
>>
>
> I'm not sure what do you want to know. Yes, there are problems like
> "what rollback actions to do", which would depend on where the call
> got stuck and "what's the timeout that should be set", which depends
> on thousands of factors. I can't think of any elegant solution that
> would prevent locking properly. Mainly because this is literally the
> Halting problem [1] plus a bit more.
>
> I'd say that whatever works for you in this situation is OK, but will
> (most probably) work only for your particular scenario.
>
> Martin
>
> [1] https://en.wikipedia.org/wiki/Halting_problem
Well, thank you very much. I'll think over it much more.
--
Best Regards
James
More information about the libvir-list
mailing list