> 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-