aboutsummaryrefslogtreecommitdiff
path: root/R/pkg/R/utils.R
diff options
context:
space:
mode:
Diffstat (limited to 'R/pkg/R/utils.R')
-rw-r--r--R/pkg/R/utils.R11
1 files changed, 10 insertions, 1 deletions
diff --git a/R/pkg/R/utils.R b/R/pkg/R/utils.R
index 1f7848f2b4..810de9917e 100644
--- a/R/pkg/R/utils.R
+++ b/R/pkg/R/utils.R
@@ -823,7 +823,16 @@ captureJVMException <- function(e, method) {
stacktrace <- rawmsg
}
- if (any(grep("java.lang.IllegalArgumentException: ", stacktrace))) {
+ # StreamingQueryException could wrap an IllegalArgumentException, so look for that first
+ if (any(grep("org.apache.spark.sql.streaming.StreamingQueryException: ", stacktrace))) {
+ msg <- strsplit(stacktrace, "org.apache.spark.sql.streaming.StreamingQueryException: ",
+ fixed = TRUE)[[1]]
+ # Extract "Error in ..." message.
+ rmsg <- msg[1]
+ # Extract the first message of JVM exception.
+ first <- strsplit(msg[2], "\r?\n\tat")[[1]][1]
+ stop(paste0(rmsg, "streaming query error - ", first), call. = FALSE)
+ } else if (any(grep("java.lang.IllegalArgumentException: ", stacktrace))) {
msg <- strsplit(stacktrace, "java.lang.IllegalArgumentException: ", fixed = TRUE)[[1]]
# Extract "Error in ..." message.
rmsg <- msg[1]