On 15.10.2012 17:33, Lennart Poettering wrote:
> On Sun, 14.10.12 20:06, Michael Biebl (bi...@debian.org) wrote:
> 
>>> Summary: systemd blocks on networking.service, networking.service’s
>>> systemctl blocks on systemd → deadlock.
>>
>>
>> As discussed on IRC: I think there is a bit more to that then the above
>> explanation.
>> If you run "systemctl reload" on a non-running service, it will *not*
>> block and simply returns immediately. So this can't explain the problem
>> above.
>>
>> From past discussions with Lennart, I think the problem is, that systemd
>> tries to minimize unnecessary actions.
>>
>> Say during an transaction, a service is started and reloaded.
>> systemd will try to reorder the service so it can avoid the reload.
>> I guess in this case this means blocking, until the actual start
>> happens. And then we indeed get the deadlock.
>>
>> As my memory is a bit vague here, I've CCed Lennart, since I don't want
>> to tell nonsense. Lennart, I hope you can chime in here and shed some
>> light on this problem.
> 
> systemd only orderes queued jobs against each other. And yes if you have
> a service foobar.service ordered after waldo.service, and waldo.service
> issues a job for foobar.service and blocks on it, then systemd will
> honour the ordering and you might deadlock, indeed. There are various

Would it be possible to detect such dead lock situations and simply
refuse new requests which would cause a dead lock?
This would make systemd more robust overall.


-- 
Why is it that all of the instruments seeking intelligent life in the
universe are pointed away from Earth?

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to