[
https://issues.apache.org/jira/browse/HIVE-18214?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16312482#comment-16312482
]
Sahil Takiar commented on HIVE-18214:
-------------------------------------
[~aihuaxu] yes thats correct. It sends a shutdown message to the
{{RemoteDriver}} asynchronously. Then it creates another {{RemoteDriver}},
which leads to the exception.
Yeah, we could add logic to do that, but again its not something that would
happen in production because every {{RemoteDriver}} is spawned in a separate
container. The {{RemoteDriver#main(String args[])}} is run in a YARN container.
And each {{RemoteDriver}} creates a single {{SparkContext}} in its constructor.
We could just change {{TestSparkClient}} so that it always spawns the
{{RemoteDriver}} in a separate process, I checked and it only makes the test
take an extra 20 seconds. The code to run the {{RemoteDriver}} in the
local-process was only ever meant for test purposes.
> Flaky test: TestSparkClient
> ---------------------------
>
> Key: HIVE-18214
> URL: https://issues.apache.org/jira/browse/HIVE-18214
> Project: Hive
> Issue Type: Sub-task
> Components: Spark
> Reporter: Sahil Takiar
> Assignee: Sahil Takiar
> Attachments: HIVE-18214.1.patch
>
>
> Looks like there is a race condition in {{TestSparkClient#runTest}}. The test
> creates a {{RemoteDriver}} in memory, which creates a {{JavaSparkContext}}. A
> new {{JavaSparkContext}} is created for each test that is run. There is a
> race condition where the {{RemoteDriver}} isn't given enough time to
> shutdown, so when the next test starts running it creates another
> {{JavaSparkContext}} which causes an exception like
> {{org.apache.spark.SparkException: Only one SparkContext may be running in
> this JVM (see SPARK-2243)}}.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)