Avoid returning 'null[]' after unhandled exceptions
Some exceptions that bubble to the top do not have messages,
so this stops those exceptions from causing 'null []' to be returned
to the user. Instead the class of the exception and a default error
message are shown when there is no other message to show from
the exception.
Change-Id: I44d856e5c4600f0a1606971ade8fbc0b0bb46a88
Reviewed-on: http://fulliautomatix.ics.uci.edu:8443/190
Reviewed-by: Chris Hillery <ceej@lambda.nu>
Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
diff --git a/asterix-app/src/main/java/edu/uci/ics/asterix/result/ResultUtils.java b/asterix-app/src/main/java/edu/uci/ics/asterix/result/ResultUtils.java
index 1900d50..f558eb6 100644
--- a/asterix-app/src/main/java/edu/uci/ics/asterix/result/ResultUtils.java
+++ b/asterix-app/src/main/java/edu/uci/ics/asterix/result/ResultUtils.java
@@ -251,18 +251,15 @@
*/
private static String extractErrorMessage(Throwable e) {
Throwable cause = getRootCause(e);
-
- String exceptionClassName = "";
- String[] messageSplits = cause.toString().split(":");
- if (messageSplits.length > 1) {
- String fullyQualifiedExceptionClassName = messageSplits[0];
- System.out.println(fullyQualifiedExceptionClassName);
- String[] hierarchySplits = fullyQualifiedExceptionClassName.split("\\.");
- if (hierarchySplits.length > 0) {
- exceptionClassName = hierarchySplits[hierarchySplits.length - 1];
- }
+ String fullyQualifiedExceptionClassName = cause.getClass().getName();
+ String[] hierarchySplits = fullyQualifiedExceptionClassName.split("\\.");
+ //try returning the class without package qualification
+ String exceptionClassName = hierarchySplits[hierarchySplits.length - 1];
+ String localizedMessage = cause.getLocalizedMessage();
+ if(localizedMessage == null){
+ localizedMessage = "Internal error. Please check instance logs for further details.";
}
- return cause.getLocalizedMessage() + " [" + exceptionClassName + "]";
+ return localizedMessage + " [" + exceptionClassName + "]";
}
/**
diff --git a/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/declared/AqlMetadataProvider.java b/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/declared/AqlMetadataProvider.java
index 71d41fc..c02b23a 100644
--- a/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/declared/AqlMetadataProvider.java
+++ b/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/declared/AqlMetadataProvider.java
@@ -2145,7 +2145,7 @@
"' in dataverse '" + dataverse + "'", e);
}
if (type == null) {
- throw new AlgebricksException("Type name '" + typeName + " unknown in dataverse '" + dataverse +"'");
+ throw new AlgebricksException("Type name '" + typeName + "' unknown in dataverse '" + dataverse +"'");
}
return type.getDatatype();
}