[PATCH 5/5] activation: implement upstart activation
Scott James Remnant
scott at netsplit.com
Thu Dec 23 15:07:23 PST 2010
On Thu, Dec 23, 2010 at 10:57 PM, Lennart Poettering <mzqohf at 0pointer.de> wrote:
> On Thu, 23.12.10 22:46, Scott James Remnant (scott at netsplit.com) wrote:
>
>> >> + retval = bus_dispatch_matches (activation_transaction, NULL, bus_service_get_primary_owners_connection (service),
>> >> + message, error);
>> >
>> >
>> > Am I missing something or is there no error path back?
>> >
>> Correct, an event is always successfully accepted by Upstart. I
>> realised I missed out the (needless) dbus_message_set_no_reply
>> (message) - I should put that in for completeness sake.
>
> But what happens if the service fails to start up? If you send no error
> message back on failure, then actviation will time-out. You definitely
> don't want that, especially since the method invocation timeouts on the
> client side are not particularly long.
>
The timeout case is the same as, for example, Upstart itself not
connecting to the bus.
All method calls are generally subject to a timeout; the default, as
you say, is pretty low. So the worst case here is that you send a
method call, D-Bus is selected to use Upstart for activation, it sends
an activation message to Upstart, which times out so the client gets a
time out.
As far as I can see, this is the same as the systemd path. The only
difference is you explicitly signal D-Bus on activation failure within
that timeout, whereas Upstart doesn't.
Scott
More information about the dbus
mailing list