aboutsummaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorMark Hamstra <markhamstra@gmail.com>2013-12-05 17:16:44 -0800
committerMark Hamstra <markhamstra@gmail.com>2013-12-05 17:16:44 -0800
commitaebb123fd3b4bf0d57d867f33ca0325340ee42e4 (patch)
tree8e95f27ddc935a22ac98f3b50b71415b6f5bbb91 /core
parent5d460253d6080d871cb71efb112ea17be0873771 (diff)
downloadspark-aebb123fd3b4bf0d57d867f33ca0325340ee42e4.tar.gz
spark-aebb123fd3b4bf0d57d867f33ca0325340ee42e4.tar.bz2
spark-aebb123fd3b4bf0d57d867f33ca0325340ee42e4.zip
jobWaiter.synchronized before jobWaiter.wait
Diffstat (limited to 'core')
-rw-r--r--core/src/main/scala/org/apache/spark/FutureAction.scala2
-rw-r--r--core/src/main/scala/org/apache/spark/scheduler/JobWaiter.scala1
2 files changed, 2 insertions, 1 deletions
diff --git a/core/src/main/scala/org/apache/spark/FutureAction.scala b/core/src/main/scala/org/apache/spark/FutureAction.scala
index 1ad9240cfa..c6b4ac5192 100644
--- a/core/src/main/scala/org/apache/spark/FutureAction.scala
+++ b/core/src/main/scala/org/apache/spark/FutureAction.scala
@@ -99,7 +99,7 @@ class SimpleFutureAction[T] private[spark](jobWaiter: JobWaiter[_], resultFunc:
override def ready(atMost: Duration)(implicit permit: CanAwait): SimpleFutureAction.this.type = {
if (!atMost.isFinite()) {
awaitResult()
- } else {
+ } else jobWaiter.synchronized {
val finishTime = System.currentTimeMillis() + atMost.toMillis
while (!isCompleted) {
val time = System.currentTimeMillis()
diff --git a/core/src/main/scala/org/apache/spark/scheduler/JobWaiter.scala b/core/src/main/scala/org/apache/spark/scheduler/JobWaiter.scala
index 58f238d8cf..b026f860a8 100644
--- a/core/src/main/scala/org/apache/spark/scheduler/JobWaiter.scala
+++ b/core/src/main/scala/org/apache/spark/scheduler/JobWaiter.scala
@@ -31,6 +31,7 @@ private[spark] class JobWaiter[T](
private var finishedTasks = 0
// Is the job as a whole finished (succeeded or failed)?
+ @volatile
private var _jobFinished = totalTasks == 0
def jobFinished = _jobFinished