sunchao commented on code in PR #45052: URL: https://github.com/apache/spark/pull/45052#discussion_r1498365236
########## core/src/main/scala/org/apache/spark/storage/BlockManager.scala: ########## @@ -177,15 +177,17 @@ private[spark] class HostLocalDirManager( * Manager running on every node (driver and executors) which provides interfaces for putting and * retrieving blocks both locally and remotely into various stores (memory, disk, and off-heap). * - * Note that [[initialize()]] must be called before the BlockManager is usable. + * Note that [[initialize()]] must be called before the BlockManager is usable. Also, the + * `memoryManager` is initialized at a later stage after DriverPlugin is loaded, to allow the + * plugin to overwrite memory configurations. */ private[spark] class BlockManager( val executorId: String, rpcEnv: RpcEnv, val master: BlockManagerMaster, val serializerManager: SerializerManager, val conf: SparkConf, - memoryManager: MemoryManager, + var memoryManager: MemoryManager, Review Comment: I tried that at the beginning, but found out in certain cases there may be race conditions in: ```scala private lazy val _memoryManager = Option(_memoryManager).getOrElse(SparkEnv.get.memoryManager) ``` Since a different thread can call `SparkEnv.set` right after the `memoryManger` is updated in the current `SparkEnv`. As result, the `memoryManager` could be null. This is revealed in `JobCancellationSuite`. The current approach makes the `memoryManager` a mutable field and updated later when the driver plugin is loaded. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org For additional commands, e-mail: reviews-h...@spark.apache.org