On Fri, May 7, 2010 at 1:17 PM, Toshio Kuratomi <a.badger(a)gmail.com> wrote:
Running makefile-install-schema and makefile-uninstall-schema eventually
calls do_sync() which was supposed to reread the schemas. That's currently
calling gconf_engine_suggest_sync() in gconf.c and I'm not sure whether
there's some logic in there that could cause it not to suggest syncing in
our current setup.
I don't understand how this could ever work - GConf IPC happens in
terms of ORBit which is per-uid, so a bare --makefile-install-rule
might contact the GConf engine for uid 0 and ask it to reload, but
that's it. It would have to jump through hoops to contact the GConf
running as uid 500 or whatever, and I don't see those hoops being
jumped.
Oh but...I see, it's a Fedora patch not in the upstream GConf code to
run killall. My bad looking at upstream gconf git. Sigh...
So changing policy back to doing a killall -HUP in %posttrans should
work.
It would be nice to know what Fedora versions are affected by this and
whether it will someday be fixed before updating the Guidelines, though.
So though this still leaves a window of up to 30 seconds where after
installing an application the schema will be invalid. Which seems
very likely what people are hitting.
I think ideally we'd have the RPM system detect a schema was installed
and do an immediate reload once post transaction, and nuke the 30
second timeout from gconf. That still leaves though the problem of
the massive copy&paste scriptlets; we could remove the killall from
--makefile-install-rule which would help.