Github user vanzin commented on a diff in the pull request:

    https://github.com/apache/spark/pull/1222#discussion_r18535305
  
    --- Diff: core/src/main/scala/org/apache/spark/deploy/master/Master.scala 
---
    @@ -688,41 +691,34 @@ private[spark] class Master(
       def rebuildSparkUI(app: ApplicationInfo): Boolean = {
         val appName = app.desc.name
         val notFoundBasePath = HistoryServer.UI_PATH_PREFIX + "/not-found"
    -    val eventLogDir = app.desc.eventLogDir.getOrElse {
    -      // Event logging is not enabled for this application
    -      app.desc.appUiUrl = notFoundBasePath
    -      return false
    -    }
    -
    -    val appEventLogDir = EventLoggingListener.getLogDirPath(eventLogDir, 
app.id)
    -    val fileSystem = Utils.getHadoopFileSystem(appEventLogDir,
    -      SparkHadoopUtil.get.newConfiguration(conf))
    -    val eventLogInfo = 
EventLoggingListener.parseLoggingInfo(appEventLogDir, fileSystem)
    -    val eventLogPaths = eventLogInfo.logPaths
    -    val compressionCodec = eventLogInfo.compressionCodec
    -
    -    if (eventLogPaths.isEmpty) {
    -      // Event logging is enabled for this application, but no event logs 
are found
    -      val title = s"Application history not found (${app.id})"
    -      var msg = s"No event logs found for application $appName in 
$appEventLogDir."
    -      logWarning(msg)
    -      msg += " Did you specify the correct logging directory?"
    -      msg = URLEncoder.encode(msg, "UTF-8")
    -      app.desc.appUiUrl = notFoundBasePath + s"?msg=$msg&title=$title"
    -      return false
    -    }
    +    val eventLogFile = app.desc.eventLogFile.getOrElse { return false }
     
         try {
    -      val replayBus = new ReplayListenerBus(eventLogPaths, fileSystem, 
compressionCodec)
    -      val ui = new SparkUI(new SparkConf, replayBus, appName + " 
(completed)",
    -        HistoryServer.UI_PATH_PREFIX + s"/${app.id}")
    -      replayBus.replay()
    +      val fs = Utils.getHadoopFileSystem(eventLogFile, hadoopConf)
    +      val (logInput, sparkVersion) = EventLoggingListener.openEventLog(new 
Path(eventLogFile), fs)
    +      val replayBus = new ReplayListenerBus()
    +      val ui = new SparkUI(new SparkConf, replayBus, appName + " 
(completed)", "/history/" + app.id)
    +      try {
    +        replayBus.replay(logInput, sparkVersion)
    +      } finally {
    +        logInput.close()
    +      }
    +
           appIdToUI(app.id) = ui
           webUi.attachSparkUI(ui)
           // Application UI is successfully rebuilt, so link the Master UI to 
it
    -      app.desc.appUiUrl = ui.getBasePath
    +      app.desc.appUiUrl = ui.basePath
           true
         } catch {
    +      case fnf: FileNotFoundException =>
    +        // Event logging is enabled for this application, but no event 
logs are found
    +        val title = s"Application history not found (${app.id})"
    +        var msg = s"No event logs found for application $appName in 
$eventLogFile."
    +        logWarning(msg)
    +        msg += " Did you specify the correct logging directory?"
    +        msg = URLEncoder.encode(msg, "UTF-8")
    +        app.desc.appUiUrl = notFoundBasePath + s"?msg=$msg&title=$title"
    +        false
    --- End diff --
    
    I disagree. `if (file exists)` checks are racy, and entail more RPCs to the 
NN. And we're really interested in handling that particular exception, so I 
don't see any advantage in the explicit check.


---
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