Chris, On 2013-10-03 14:10, Chris Hegarty wrote: > Thanks Dmitry, > > I think we have agreement that the cause of the UHE should contain an > Exception containing the gai_strerror string message. I can live without > adding retry logic.
I'm ok with that. -Dmitry > > -Chris. > > On 10/03/2013 10:44 AM, Dmitry Samersoff wrote: >> Chris, >> >> On my opinion, it's better to just return meaningful exception to >> customer and let them deal with network issue (as current webrev does). >> >> Typical network failure requires at least couple of milliseconds to >> recover so immediate retry most probably fails with the same error. >> >> From the other side - cu has lots of possibility to defend against such >> failures on application level. E.g. popup a message box "please check >> your wiring and try again" >> >> In a future, >> >> it might be possible to add a timeout parameter to corresponding >> Java-level functions and keep trying on Java level until we get result >> or timeout, but it requires much more work and probably out of scope of >> this CR. >> >> -Dmitry >> >> >> On 2013-10-03 13:11, Chris Hegarty wrote: >>> On 10/02/2013 11:18 PM, Dmitry Samersoff wrote: >>>> Chris, >>>> >>>> I'm not sure immediate native retry make sence here because tipically >>>> EAGAIN of getaddrinfo caused by network failure, like unreachable >>>> nameserver. (see my previous letter) >>> >>> OK, while not ideal ( please don't shoot! ) what do others think of >>> Thread.yield() before retry. It is an attempt to allow other threads on >>> the system do some work before us, therefore potentially swapping out >>> our failed lookup thread until rescheduled. I'm just trying to avoid >>> baking in a hardcoded sleep/wait value ( since we don't know what that >>> should be ). >>> >>> The use of Thread.yield(), if acceptable, would of course most likely >>> make sense to push the retry logic back up into the Java level. >>> >>> -Chris. >>> >>>> >>>> -Dmitry >>>> >>>> On 2013-10-02 23:53, Chris Hegarty wrote: >>>>> On 10/02/2013 08:40 PM, Brian Burkhalter wrote: >>>>>> .... >>>>>> So, how about this approach: >>>>>> >>>>>> 1) If the error is EAI_AGAIN / EIA_SYSTEM+EAGAIN / WSATRY_AGAIN then >>>>>> do one immediate native retry. >>>>>> 2) If the retry fails with the same error, then throw a UHE with a >>>>>> specific message or cause. >>>>> >>>>> Sounds good to me. >>>>> >>>>>> Questions: >>>>>> >>>>>> A) Would it be better to do the retry in the Java layer, perhaps with >>>>>> a very short wait? >>>>> >>>>> native, without any wait, should be sufficient. >>>>> >>>>>> B) Should the message or cause in #2 be explicitly document in the >>>>>> javadoc? >>>>> >>>>> I don't think it is necessary for this to be documented. It is more >>>>> informational. >>>>> >>>>> -Chris. >>>> >>>> >> >> -- Dmitry Samersoff Oracle Java development team, Saint Petersburg, Russia * I would love to change the world, but they won't give me the sources.