Skip to content
Closed
Prev Previous commit
Next Next commit
[SQL] Fixes the race condition that may cause test failure
The removed `Future` was used to end the test case as soon as the Spark SQL CLI process exits. When the process exits prematurely, this mechanism prevents the test case to wait until timeout. But it also creates a race condition: when `foundAllExpectedAnswers.tryFailure` is called, there are chances that the last expected output line of the CLI process hasn't been caught by the main logics of the test code, thus fails the test case.

Removing this `Future` doesn't affect correctness.

Author: Cheng Lian <lian.cs.zju@gmail.com>

Closes #2823 from liancheng/clean-clisuite and squashes the following commits:

489a97c [Cheng Lian] Fixes the race condition that may cause test failure
  • Loading branch information
liancheng committed Nov 6, 2014
commit 0dd28ecda5755790912fa08625f3d7a649967a2a
Original file line number Diff line number Diff line change
Expand Up @@ -78,12 +78,6 @@ class CliSuite extends FunSuite with BeforeAndAfterAll with Logging {
val process = (Process(command) #< queryStream).run(
ProcessLogger(captureOutput("stdout"), captureOutput("stderr")))

Future {
val exitValue = process.exitValue()
foundAllExpectedAnswers.tryFailure(
new SparkException(s"Spark SQL CLI process exit value: $exitValue"))
}

try {
Await.result(foundAllExpectedAnswers.future, timeout)
} catch { case cause: Throwable =>
Expand Down