Jimmy, Jing Lv wrote:
Geir Magnusson Jr. wrote:
I committed the initial fix to the socket interrupt problem. I stared at it a while and did what I thought the simplest thing possible. (Most of the staring was trying to grok some of the intent in the socket.c and hysock.c code...

Simply put, I ensured that hysock_select() just dealt w/ that return code correctly, translating to the HSOCK error code. (I also did a bit of reformatting... apologies if it really upsets someone - I'll put it back). The result is that hysock_select() still behaves the same.

I also modified one function in socket.c - the pollSelectRead() call - to deal with the interrupt return code from hysock_select().

I *think* I got it right, and am hoping that some others can review and comment. I'm embarrassed to have used a 'goto' (mimicing the style there), but didn't want to do the rewrite I wanted to while also fixing the interrupt problem. :) (I also want some better tests before we take it apart...)


I've taken a quick review on the two files, and I like the reformatting :) Maybe the "goto" can be avoid, but this does not matter much.

It can certainly be avoided, but I didn't want to change too much at this time.


I notice the port lib, say hysock.c is modified, adding a line:
        if (errno == EINTR) {
rc = portLibrary->error_set_last_error(portLibrary, errno, HYPORT_ERROR_SOCKET_INTERRUPTED);
        }
IMHO, we can avoid this modification, for method in socket.c the result is judged by the return value("result"), not last_error. IMHO, we'd better do no modification on port lib. Please correct me if I'm wrong.

Well, yes, it is judged by the return value, but if the semantics of hyscok_XXXX is that if there is an error, the platform error is set via _error_set_last_error, then I wanted to follow the convention.

This was one more thing to chase down- I figured I'd just follow along for now :)


This of course fixes the problems w/ Tomcat that we created w/ the DRLVM thread manager fix, so I'm going to try to spin a new snapshot tonight.

Also, I'll go and treat the other usages of hysock_select() to deal w/ this return code, but after there's been a period of review and comment for these changes.


I have no objection if everything goes well, but still worry about how to tell the difference between a necessary interruption(user interruption) and this recover-able interruption.

I've been thinking about this a lot, and I just don't know. There is no concept for this up in Java, so it's not like we're breaking anything there.

I do wonder if our concerns are overblown, that this is Just The Way Things Are due to the history of how IO calls and signals evolved in unix and linux.

But again, I'm not sure of myself here...

geir


geir


---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]





---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to