diff --git a/core/src/main/scala/org/apache/spark/storage/memory/MemoryStore.scala b/core/src/main/scala/org/apache/spark/storage/memory/MemoryStore.scala index 1b4cc595b8471b34b098d0400b660c21834c0045..c473ab3c8e94c6e6565d5fa4c6d2bb3439f91d0c 100644 --- a/core/src/main/scala/org/apache/spark/storage/memory/MemoryStore.scala +++ b/core/src/main/scala/org/apache/spark/storage/memory/MemoryStore.scala @@ -478,7 +478,8 @@ private[spark] class MemoryStore( blockInfoManager.blockManager.stageExInfos.get(blockManager.currentStage) match { case Some(curStageExInfo) => // cur is this stage's output RDD - if (!curStageExInfo.curRunningRddMap.contains(bxi.blockId.asRDDId.get.rddId)) { + if (blockInfoManager.lockForWriting(bxi.blockId, blocking = false).isDefined && + !curStageExInfo.curRunningRddMap.contains(bxi.blockId.asRDDId.get.rddId)) { selectedBlocks += bxi.blockId freedMemory += bxi.size }