I propose using message just because I saw DAGScheduler uses message to handle everything, and CSB has the similar architecture, an inner actor to handle everything...

I was thinking that ReviveOffer is just to get some workerOffers, a new LaunchTask message is to launch new tasks to the executor, or you can encapsulate the message sending process in a function of CSB....en...the later one seems more consistent with the current architecture....