On Tue, Aug 23, 2011 at 4:18 PM, Michael Mol <mike...@gmail.com> wrote: > On Tue, Aug 23, 2011 at 3:47 PM, Canek Peláez Valdés <can...@gmail.com> wrote: >> On Tue, Aug 23, 2011 at 3:08 PM, Michael Mol <mike...@gmail.com> wrote: >>> Because I generally update my desktop system while running X, and on >>> at least two occasions, an update killed my X session by restarting >>> DBUS on me >> >> The update don't restart D-Bus: from the dbus-1.4.14 ebuild: >> >> elog "To start the D-Bus system-wide messagebus by default" >> elog "you should add it to the default runlevel :" >> elog "\`rc-update add dbus default\`" >> elog >> elog "Some applications require a session bus in addition to the system" >> elog "bus. Please see \`man dbus-launch\` for more information." >> elog >> ewarn "You must restart D-Bus \`/etc/init.d/dbus restart\` to run" >> ewarn "the new version of the daemon." >> ewarn "Don't do this while X is running because it will restart your X as >> well." >> >> Emphasising: "Don't do this while X is running because it will restart >> your X as well." So I will assume something went terribly wrong when >> updating, and again, if that's the case then it's a bug and should be >> reported. > > I see. Apologies for the snark, but this feels like it leads to a > "Setup requires that you restart your computer to continue" situation. > > (This becomes less and less of an exaggeration as more and more system > components choose to route their traffic through D-Bus)
And I think it's OK. To upgrade the kernel, we need a computer restart. To upgrade the system bus, we need a system bus (service) restart. To upgrade the session bus, we need a session restart (logout/login). Nobody is saying that a bus restart needs a complete computer restart (although I'm pretty sure some distros would do that by default). >>> On the other hand, sshd handles restarts without killing active sessions. >> >> Because the daemon state for sshd is tiny compared with the one from >> D-Bus. Apples and oranges. > > That doesn't really enter into it. To me, that means you would want to > use something like shared memory (is there any multi-tasking operating > system with protected memory which can't mmap?) and rigorous checks > and controls for managing that state. Even sqlite can manage that. > (Not that I'm suggesting you would use sqlite for tracking D-Bus > state, just that you'd look at what they do with locks and integrity > checks for guaranteeing integrity on shared memory with multiple > consuming processes.) You are right, I stand corrected. And actually, D-Bus is very much capable of restart without kicking out sessions (read Havoc explanation in http://article.gmane.org/gmane.comp.freedesktop.dbus/7730). The problem is that many apps don't handle this correctly, and the D-Bus developers choose the "safe" option. If all the apps supported gracefully the restart, there would be no problems. > And, yes, upgrades on live data can be a royal PITA. Designing a > system which can handle it requires careful attention and testing. The > more anal you want to be about it, the more you start talking about > writing provable and verifiable code and other stringent debugging, > development and testing practices. It's a matter of cost-benefit. Given the open source community, I think the PITA is not worth it in several cases, D-Bus being one of them. > Yet it's done. Last Friday, I sat at a table with someone who > witnessed an IBM tech replace a CPU in a mainframe. Flip a switch, > pull out the old part, insert the new part, flip the switch back on, > everything's fine. Saturday, I listened to a guy present on how he > dynamically reroutes live calls through a VOIP network based on > hardware faults. I have seen those kind of systems. And again, it's a matter of cost-benefit: See the difference in budgets for that kind of systems and our open source software stack. > D-Bus wants to be a core system service, and *that's* what should be > setting its design goals, not how difficult it would be for the system > to be worthy of the core. > > Again, I really don't believe D-Bus is badly-written. I just think its > community isn't fully aware of the trends of its position in the > system, and what responsibilities it carries. I think we are fully aware. The thing is, given the community resources, D-Bus is good enough, which, as everybody knows, is the enemy of (the impossible) perfect. Just my 0.02 ${CURRENCY}. -- Canek Peláez Valdés Posgrado en Ciencia e Ingeniería de la Computación Universidad Nacional Autónoma de México