Hi, We've received the following error a handful of times and once it's occurred all subsequent queries fail with the same exception until we bounce the instance:
IllegalArgumentException: spark.sql.execution.id is already set at org.apache.spark.sql.execution.SQLExecution$.withNewExecutionId(SQLExecution.scala:77) at org.apache.spark.sql.DataFrame.withNewExecutionId(DataFrame.scala:2086) ForkJoinWorkerThreads call into SQLExecution#withNewExecutionId, are assigned an execution Id into their InheritableThreadLocal and this is later cleared in the finally block. I've noted that these ForkJoinWorkerThreads can create additional ForkJoinWorkerThreads and (as of SPARK-10563) the child threads receive a copy of the parent's properties. It seems that Prior to SPARK-10563, clearing the parent's executionId would have cleared the child's, but now it's a copy of the properties the child's executionId is never cleared leading to the above exception. I'm yet to recreate the issue locally, whilst I've seen ForkJoinWorkerThreads creating others and the properties being copied across I've not seen this from within the body of withNewExecutionId. Does this all sound reasonable? Our plan for a short term work around is to allow the condition to arise but remove the execution.id from the thread local before throwing the IllegalArgumentException so it succeeds on re-try. -- View this message in context: http://apache-spark-developers-list.1001551.n3.nabble.com/IllegalArgumentException-spark-sql-execution-id-is-already-set-tp19124.html Sent from the Apache Spark Developers List mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe e-mail: dev-unsubscr...@spark.apache.org