in flink-kubernetes-operator/src/main/java/org/apache/flink/kubernetes/operator/utils/ExceptionUtils.java [90:120]
private static String getExceptionMessage(Throwable throwable, int level) {
if (throwable == null) {
return null;
}
if (throwable instanceof SerializedThrowable) {
var serialized = ((SerializedThrowable) throwable);
var deserialized =
serialized.deserializeError(Thread.currentThread().getContextClassLoader());
if (deserialized == throwable) {
var msg = serialized.getMessage();
return msg != null ? msg : serialized.getOriginalErrorClassName();
} else {
return getExceptionMessage(deserialized, level);
}
}
var msg =
Optional.ofNullable(throwable.getMessage())
.orElse(throwable.getClass().getSimpleName());
if (level >= EXCEPTION_LIMIT_FOR_EVENT_MESSAGE) {
return msg;
}
if (throwable.getCause() == null) {
return msg;
} else {
return msg + " -> " + getExceptionMessage(throwable.getCause(), level + 1);
}
}