Re: hang in gconfd



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]