gianm commented on code in PR #14171:
URL: https://github.com/apache/druid/pull/14171#discussion_r1194386452
##########
processing/src/main/java/org/apache/druid/java/util/common/Either.java:
##########
@@ -77,33 +77,50 @@ public L error()
}
/**
- * If this Either represents a value, returns it. If this Either represents
an error, throw an error.
- *
- * If the error is a {@link Throwable}, it is wrapped in a RuntimeException
and thrown. If it is not a throwable,
- * a generic error is thrown containing the string representation of the
error object.
- *
+ * <ul>
+ * <li>
+ * If this Either represents a value, returns it.
+ * </li>
+ * <li>
+ * If this Either represents an error, throw an error.
+ * <ul>
+ * <li>
+ * If the error is an {@link EitherException}, the original exception is
thrown.
+ * </li>
+ * <li>
+ * If the error is a {@link Throwable}, it is wrapped in an {@link
EitherException} and thrown.
+ * </li>
+ * <li>
+ * If it is not a throwable, a generic {@link EitherException} is thrown
containing the string representation of the error object.
+ * </li>
+ * </li>
+ * </ul>
+ * </ul>
+ * <br/>
* To retrieve the error as-is, use {@link #isError()} and {@link #error()}
instead.
*/
@Nullable
public R valueOrThrow()
{
if (isValue()) {
return value;
+ } else if (error instanceof EitherException) {
+ throw (EitherException) error;
Review Comment:
I don't think Either should be assuming that people want the exception stack
collapsed. It doesn't really know how it's going to be used. Better, IMO to do
the following:
- Have this code always wrap in EitherException, even if `error` is an
EitherException itself. (Ensures we always have the full exception stack trace
available, even when it's passed around and rethrown.)
- Have the code that reports MSQ errors unwrap the EitherExceptions. This
code knows it only cares about the "inner" exception.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]