Description
Today, ExecutionListenerManager eagerly registers an ExecutionListenerBus SparkListener when it is created, even if the SparkSession has no query execution listeners registered. In applications with many short-lived SparkSessions, this can cause a buildup of empty listeners on the shared listener bus, increasing Spark listener processing times on the driver.
If we make the registration lazy then we avoid this driver-side listener performance overhead.