Re: Last dbus upgrade issues

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

 



On Mon, 26 Nov 2018 at 20:04, Owen Taylor <otaylor@xxxxxxxxxx> wrote:
> On Mon, Nov 26, 2018 at 9:59 AM Tomasz Kłoczko <kloczko.tomasz@xxxxxxxxx> wrote:
> > 1) if dbus service crashes/is not availaible temporary IMO it wold be
> > good to prepare whole desktop apps code to not crash but handle dbus
> > disconnection and maybe display centered message that it is not
> > possible to connect to dbus. Crashing everything looks really *bad*.
>
> The design of D-Bus is that it is the central point of lifecycle
> management for your desktop - when the session bus goes away,
> everything on it should go away. Trying to make things survive bus
> restart compromises that, and makes it more likely you'll get stray
> processes after exit. Now with systemd user sessions, cgroups, etc, we
> have other mechanisms for session cleanup, but removing the older
> concept of exit-with-the-bus would require major rethinking.

Cleaning the session is perfect example of what can be done with using
Solaris contracts which is kind of grouping attribute for some group
of processes which needs to be treated as the group. When session
needs to be closed all processes which are part of the contract needs
to be killed by contract id (which works like task id or pid).
Lack of contacts is IMO another cause current systemd complexity
(Solaris SMF for example kills all service processes by not looking
for all PIDs but simple by killing all processes with the same ctid).
Is it any other propose of the dbus communication? (my question is
more about original initial design than what is now)
I'm asking because I do not fully understand of the cause why dbus has
been designed and to solve current design issue original cause of
erecting/designing such communication needs to be well understood.

> Plus, when the connection to the bus is lost, all assumptions that the
> app has about the state of the system are invalid. (Normally, with
> D-Bus you reliably get messages, or you reliably get notification when
> your communication partner goes away.) So the app state needs to be
> reinitialized from scratch. There's significant code complexity there
> which will be exercised in only very rare circumstance.

Looks like again contracts could solve such scenarios with sending
normal signal to PID 1 (like HUP) with masking to be received by all
processes with the same ctid. No new communication or protocols ..
just minute modifications of well known signal handlers.
https://docs.oracle.com/cd/E18752_01/html/816-5174/contract-4.html#REFMAN4contract-4
This idea already is used on live systems from more than decade.

kloczek
_______________________________________________
devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://getfedora.org/code-of-conduct.html
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Users]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]

  Powered by Linux