[Evolution-hackers] EDS API calls hang when EDS dies - how to detect that?



Hello,

SyncEvolution users have started to report that the "syncevolution"
process hangs, as far as I could tell from the reports while accessing
the Evolution Dataserver through libecal's or libebook's synchronous
functions (e.g. in e_book_get_contact()).

It then also happened to me randomly with Evolution 2.6.3 from Debian
stable. The reason apparently was that the Evolution Dataserver process
had died (the Evolution GUI said that much and ps confirmed it), but
e_book_get_contact() didn't return.

The main point of this email is not the EDS crash (I trust that 2.12
will be more stable due to all the hard work you guys put into it - I
will compile it as soon as time permits or perhaps even better, run
SyncEvolution more regularly against unstable versions), but what I can
do in SyncEvolution to detect the EDS crash and report it properly to
the user.

Looking at the current libebook API documentation [1] I see a
"backend-died" signal prototype. I don't remember having seen that
before - was the signal or its documentation added recently?

I suppose I can call g_signal_connect(ebook, "backend-died", mycallback,
NULL), then in mycallback print an error and abort the process, right?

Aborting the process is a very drastic reaction, it would be much nicer
if e_book_get_contact() would return an error in that case. Can I
achieve that by doing something in my code with the existing libebook
shared objects shipped today?

[1] http://www.gnome.org/projects/evolution/developer-doc/libebook/EBook.html

-- 
Bye, Patrick Ohly
--  
Patrick Ohly gmx de
http://www.estamos.de/



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