> OK, looks pretty good. But....
> 
> One little thing is still bothering me. Suppose we get interrupted from the 
> sleep() and bail out on that basis. If we got to the point where we're 
> sleeping, we must have caught an AccessDeniedException previously. 
> Unfortunately this exception is discarded if we were interrupted. This might 
> lose valuable diagnostic information. So, what do we do with it? How about 
> adding:
> 
>    ie.addSuppressed(cause);
> 
> in the catch InterruptedException clause, before throwing the 
> RuntimeException.

Another good point...


> (There's another issue which is that if there were previous retries, the ADEs 
> from them are thrown away. But maybe we should save that one for another day.)

I had the same thought, but aside from collecting and reporting all of them 
somehow I'm not sure what could be done about it.

Maybe instead of:
    cause = ade;

do:
    if (cause != null) {
        cause.addSuppressed(ade);
    } else {
        cause = ade;
    }

Then they'll at least all be reported when RuntimeException is thrown.

-DrD-

Reply via email to