more bonobo-activation oddness ..



Hi Darin,

	Well - after my fix for oaf / bonobo-activation:

	if (si) {
		retval = od_server_activate (si, &ai, servant->self, ev);

                /* If we failed to activate - it may be because our
                 * request re-entered _during_ the activation
                 * process resulting in a second process being started
                 * but failing to register - so we'll look up again here
                 * to see if we can get it.
                 */
                if (ev->_major != CORBA_NO_EXCEPTION ||
                    retval == CORBA_OBJECT_NIL) {
                        g_warning ("HERE !!!! - failed to activate");
                        CORBA_exception_init (&retry_ev);

                        retval = od_get_active_server (servant, iid,
ctx, &retry_ev);

	Everything appeared fine with evolution's wombat but in fact it appears
not to be a solution to the underlying race.

	The problem is essentially that while the factory iid will be
registered with the activation server, and could thus be retrieved with
an od_get_active_server, unless the iid is that of a factory (although
the factory is registered) we will not see that we did in fact race, and
that now we can activate a child from the registered factory.

	So I'm pondering how best to fix this, this may well be the cause of
some evilness we see in activating the evolution composer occasionally.

	Sigh - also for reasons unknown this was particularly provoked when I
got the display stuff right in Nautilus, so I'm holding off committing
those fixes until this issue is addressed.

	Regards,

		Michael.

-- 
 mmeeks gnu org  <><, Pseudo Engineer, itinerant idiot




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