diff --git a/core/src/main/scala/org/apache/spark/storage/BlockManagerMaster.scala b/core/src/main/scala/org/apache/spark/storage/BlockManagerMaster.scala index e335eb6ddb761..e440c1ab7bcd9 100644 --- a/core/src/main/scala/org/apache/spark/storage/BlockManagerMaster.scala +++ b/core/src/main/scala/org/apache/spark/storage/BlockManagerMaster.scala @@ -167,10 +167,12 @@ class BlockManagerMaster( * amount of remaining memory. */ def getMemoryStatus: Map[BlockManagerId, (Long, Long)] = { + if (driverEndpoint == null) return Map.empty driverEndpoint.askSync[Map[BlockManagerId, (Long, Long)]](GetMemoryStatus) } def getStorageStatus: Array[StorageStatus] = { + if (driverEndpoint == null) return Array.empty driverEndpoint.askSync[Array[StorageStatus]](GetStorageStatus) } diff --git a/core/src/test/scala/org/apache/spark/storage/BlockManagerMasterSuite.scala b/core/src/test/scala/org/apache/spark/storage/BlockManagerMasterSuite.scala new file mode 100644 index 0000000000000..0d54726af7ee8 --- /dev/null +++ b/core/src/test/scala/org/apache/spark/storage/BlockManagerMasterSuite.scala @@ -0,0 +1,35 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.spark.storage + +import org.junit.Assert.assertTrue + +import org.apache.spark.{SparkConf, SparkFunSuite} + +class BlockManagerMasterSuite extends SparkFunSuite { + + test("SPARK-31422: getMemoryStatus should not fail after BlockManagerMaster stops") { + val bmm = new BlockManagerMaster(null, null, new SparkConf, true) + assertTrue(bmm.getMemoryStatus.isEmpty) + } + + test("SPARK-31422: getStorageStatus should not fail after BlockManagerMaster stops") { + val bmm = new BlockManagerMaster(null, null, new SparkConf, true) + assertTrue(bmm.getStorageStatus.isEmpty) + } +}