GitHub user sarutak opened a pull request:

    https://github.com/apache/spark/pull/5417

    [SPARK-6769] Usage of the ListenerBus in YarnClusterSuite is wrong

    In YarnClusterSuite, a test case uses `SaveExecutorInfo`  to handle 
ExecutorAddedEvent as follows.
    
    ```
    private class SaveExecutorInfo extends SparkListener {
      val addedExecutorInfos = mutable.Map[String, ExecutorInfo]()
    
      override def onExecutorAdded(executor: SparkListenerExecutorAdded) {
        addedExecutorInfos(executor.executorId) = executor.executorInfo
      }
    }
    
    ...
    
        listener = new SaveExecutorInfo
        val sc = new SparkContext(new SparkConf()
          .setAppName("yarn \"test app\" 'with quotes' and \\back\\slashes and 
$dollarSigns"))
        sc.addSparkListener(listener)
        val status = new File(args(0))
        var result = "failure"
        try {
          val data = sc.parallelize(1 to 4, 4).collect().toSet
          assert(sc.listenerBus.waitUntilEmpty(WAIT_TIMEOUT_MILLIS))
          data should be (Set(1, 2, 3, 4))
          result = "success"
        } finally {
          sc.stop()
          Files.write(result, status, UTF_8)
        }
    ```
    
    But, the usage is wrong because Executors will spawn during initializing 
SparkContext and SparkContext#addSparkListener should be invoked after the 
initialization, thus after Executors spawn, so SaveExecutorInfo cannot handle 
ExecutorAddedEvent.
    
    Following code refers the result of the handling ExecutorAddedEvent. 
Because of the reason above, we cannot reach the assertion. 
    
    ```
        // verify log urls are present
        listener.addedExecutorInfos.values.foreach { info =>
          assert(info.logUrlMap.nonEmpty)
        }
    ```

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/sarutak/spark SPARK-6769

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/spark/pull/5417.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #5417
    
----
commit 153a91bf1c6365abd33c7a2dd0112c503790f616
Author: Kousuke Saruta <[email protected]>
Date:   2015-04-08T08:58:50Z

    Fixed the usage of listener bus in YarnClusterSuite

----


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to