Re: race-free exit-on-idle (redux)

Lennart Poettering <[email protected]>
Newsgroups gmane.comp.freedesktop.dbus
Message-ID <20150513182709.GA21656@gardel-login>
On Wed, 13.05.15 14:10, Colin Walters ([email protected]) wrote:

> Hi,
> 
> Regarding: https://bugs.freedesktop.org/show_bug.cgi?id=11454
> (But posting here as I spend too much of my life waiting for
>  Bugzilla instances - we can summarize there after, link to this thread)
> 
> We were talking about having a daemon for rpm-ostree in
> https://github.com/projectatomic/rpm-ostree/pull/116
> 
> I would like to not have a persistent in memory daemon, for a variety
> of reasons.
> 
> Now several systemd services do exit-on-idle.  I dug into how that's
> supposed to work (mainly via `sd_notify("STOPPING=1")` ), and came up
> with this example of a (hopefully) standalone race-free stateful service:
> 
> https://github.com/cgwalters/test-exit-on-idle
> 
> Now...is this actually race free?  There are a lot of subtleties involved
> here, so I'd like to tap the collective brainpower here - was
>  sd_notify(STOPPING=1) and the fact that systemd can track process
> state and ensure there's only one, synchronized with the bus name
> ownership the missing piece on top of the designs in https://bugs.freedesktop.org/show_bug.cgi?id=11454
> ?

It's race-free. But it only works for services which do not create
context objects based on method calls. The algorithm gives up the
busname, then continues to process all queued method calls. As long as
these method calls are context-free, all is good, they can simply be
processed and a reply passed back to the client. As soon as you have a
bus service that knows context objects though things become
problematic: if you decide you are idle, give up your name, and then
when end up processing a final message that sets up a new context
object then you are fucked, since you cannot really dispatch that
anymore, since you are about to go down...

Lennart

-- 
Lennart Poettering, Red Hat
_______________________________________________
dbus mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/dbus
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.