Re: hang in gconfd
- From: Havoc Pennington <hp redhat com>
- To: Michael Meeks <michael ximian com>
- Cc: jacob berkman <jacob ximian com>, <gconf-list gnome org>, gnome-2-0 <gnome-2-0-list gnome org>, <orbit-list gnome org>
- Subject: Re: hang in gconfd
- Date: 10 Dec 2001 10:42:33 -0500
Michael Meeks <michael ximian com> writes:
> Well - oneway _helps_ avoid the server hanging; but - if, as I
> suggested previously, instead of using 'ping' - you use the connection
> status; available via:
>
> CORBA_Object_non_existant.
>
> you win every way; since it involves you in no CORBA method calls
> to remote servers, no contexts switches to handle that data, no redundant
> data going into buffers, etc. etc. etc.
That helps with ping(), but I also have notify() etc. I believe in
ORBit1 this was the wacky function involving a fork() and so on,
wasn't it? It's no longer doing that right? ;-)
> Of course - if you don't want to have a timeout sitting there
> polling things, you can use ORBit_small_[un]listen_for_broken, which will
> give you a notification as soon as the remote end dies - saving ugly
> timeouts and less efficient polling.
Ah, very useful!
> Well - when the buffer is full; as I said, writes are blocking; it
> would be possible to work around this in ORBit2 with relative ease in
> fact; simply marking buffers as blocking, queueing all further data on
> that connection and waiting till we get an event on the socket to write
> more data;
I discussed this with Jody on IRC last night, makes sense, we had the
same theory on the blocking and same proposed solution.
I do agree the "oneway method, exit()" sequence breaking is bad as
well. atexit() doesn't un-bad it, since then you are making exit()
block - which is pretty bizarre. However, I suppose oneway is defined
to be a bit unreliable, so it may as well be a bit unreliable; the
semantic people are really relying on is that it's async and doesn't
block, I'd expect. And as previously discussed, atexit() doesn't
result in reliability anyway.
> It's not possible to make it fully non blocking without the above
> ORB changes. I've put them on my TODO - but my TODO is growing in an
> unbounded sort of way ... I'm happy to help point you / someone at the
> bits to hack though ... it would be wonderful to have this feature.
I can investigate, at least at some point. This is a really-must-fix
sort of thing. Which files do I look at?
Havoc
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]