diff --git a/core/src/main/scala/org/apache/spark/scheduler/DAGScheduler.scala b/core/src/main/scala/org/apache/spark/scheduler/DAGScheduler.scala
index 05b8ab0d0a1f9b4f18a47f7182e02d97971964b8..5d812918a13d1e11c07699f9623dca092bca2fd0 100644
--- a/core/src/main/scala/org/apache/spark/scheduler/DAGScheduler.scala
+++ b/core/src/main/scala/org/apache/spark/scheduler/DAGScheduler.scala
@@ -1399,6 +1399,7 @@ class DAGScheduler(
 
   def stop() {
     logInfo("Stopping DAGScheduler")
+    messageScheduler.shutdownNow()
     eventProcessLoop.stop()
     taskScheduler.stop()
   }
diff --git a/streaming/src/main/scala/org/apache/spark/streaming/receiver/ReceivedBlockHandler.scala b/streaming/src/main/scala/org/apache/spark/streaming/receiver/ReceivedBlockHandler.scala
index 4b3d9ee4b00908fd1bfea9b3b96fb24d5e34b21c..651b534ac1900e0d5b9b92177bd495218fdca952 100644
--- a/streaming/src/main/scala/org/apache/spark/streaming/receiver/ReceivedBlockHandler.scala
+++ b/streaming/src/main/scala/org/apache/spark/streaming/receiver/ReceivedBlockHandler.scala
@@ -190,6 +190,7 @@ private[streaming] class WriteAheadLogBasedBlockHandler(
 
   def stop() {
     writeAheadLog.close()
+    executionContext.shutdown()
   }
 }