You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@celeborn.apache.org by ni...@apache.org on 2024/02/18 10:58:33 UTC

(incubator-celeborn) branch main updated: [CELEBORN-1266] Improve log of current failed workers for WorkerStatusTracker

This is an automated email from the ASF dual-hosted git repository.

nicholasjiang pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-celeborn.git


The following commit(s) were added to refs/heads/main by this push:
     new 3f5b1de75 [CELEBORN-1266] Improve log of current failed workers for WorkerStatusTracker
3f5b1de75 is described below

commit 3f5b1de759ff0784c580029ff537a9e2057fdcf3
Author: SteNicholas <pr...@163.com>
AuthorDate: Sun Feb 18 18:58:20 2024 +0800

    [CELEBORN-1266] Improve log of current failed workers for WorkerStatusTracker
    
    ### What changes were proposed in this pull request?
    
    Improve log of current failed workers for `WorkerStatusTracker#recordWorkerFailure` and `WorkerStatusTracker#handleHeartbeatResponse`.
    
    ### Why are the changes needed?
    
    It's recommended to improve the log of current failed workers in `recordWorkerFailure` and `handleHeartbeatResponse` of `WorkerStatusTracker`. Meanwhile the log level of current failed workers could be warn.
    
    ### Does this PR introduce _any_ user-facing change?
    
    No.
    
    ### How was this patch tested?
    
    No.
    
    Closes #2290 from SteNicholas/CELEBORN-1266.
    
    Authored-by: SteNicholas <pr...@163.com>
    Signed-off-by: SteNicholas <pr...@163.com>
---
 .../celeborn/client/WorkerStatusTracker.scala      | 63 ++++++++++++++--------
 1 file changed, 40 insertions(+), 23 deletions(-)

diff --git a/client/src/main/scala/org/apache/celeborn/client/WorkerStatusTracker.scala b/client/src/main/scala/org/apache/celeborn/client/WorkerStatusTracker.scala
index 14a0df092..d7ccf0fe8 100644
--- a/client/src/main/scala/org/apache/celeborn/client/WorkerStatusTracker.scala
+++ b/client/src/main/scala/org/apache/celeborn/client/WorkerStatusTracker.scala
@@ -120,23 +120,15 @@ class WorkerStatusTracker(
 
   def recordWorkerFailure(failures: ShuffleFailedWorkers): Unit = {
     if (!failures.isEmpty) {
-      val failedWorker = new ShuffleFailedWorkers(failures)
-      val failedWorkerMsg = failedWorker.asScala.map { case (worker, (status, time)) =>
+      val failedWorkers = new ShuffleFailedWorkers(failures)
+      val failedWorkersMsg = failedWorkers.asScala.map { case (worker, (status, time)) =>
         s"${worker.readableAddress()}   ${status.name()}   ${Utils.formatTimestamp(time)}"
       }.mkString("\n")
-      val excludedWorkerMsg = excludedWorkers.asScala.map { case (worker, (status, time)) =>
-        s"${worker.readableAddress()}   ${status.name()}   ${Utils.formatTimestamp(time)}"
-      }.mkString("\n")
-      val shuttingDownMsg = shuttingWorkers.asScala.map(_.readableAddress()).mkString("\n")
-      logInfo(
+      logWarning(
         s"""
-           |Reporting failed worker:
-           |$failedWorkerMsg
-           |Current excluded worker:
-           |$excludedWorkerMsg
-           |Current shutting down worker:
-           |$shuttingDownMsg""".stripMargin)
-      failedWorker.asScala.foreach {
+           |Reporting failed workers:
+           |$failedWorkersMsg$currentFailedWorkers""".stripMargin)
+      failedWorkers.asScala.foreach {
         case (worker, (StatusCode.WORKER_SHUTDOWN, _)) =>
           shuttingWorkers.add(worker)
         case (worker, (statusCode, registerTime)) if !excludedWorkers.containsKey(worker) =>
@@ -213,16 +205,41 @@ class WorkerStatusTracker(
         }
       }
       if (statusChanged) {
-        logWarning("Worker status changed from application heartbeat response")
-        logInfo(
-          s"""
-             |Current excluded workers:
-             |${excludedWorkers.asScala.mkString("\n")}
-             |
-             |Current shutting down workers:
-             |${shuttingWorkers.asScala.map(_.readableAddress()).mkString("\n")}
-             |""".stripMargin)
+        logWarning(
+          s"Worker status changed from application heartbeat response.$currentFailedWorkers")
+      }
+    }
+  }
+
+  private def currentFailedWorkers: String = {
+    val excludedWorkersMsg =
+      excludedWorkers.asScala.groupBy(_._2._1).map { case (status, workers) =>
+        (
+          status,
+          workers.map { case (worker, (_, time)) =>
+            s"${worker.readableAddress()}   ${Utils.formatTimestamp(time)}"
+          }.mkString("\n"))
       }
+    val shutdownWorkersMsg = shuttingWorkers.asScala.map(_.readableAddress()).mkString("\n")
+    var failedWorkersMsg = ""
+    if (excludedWorkersMsg.contains(StatusCode.WORKER_EXCLUDED)) {
+      failedWorkersMsg +=
+        s"""
+           |Current excluded workers:
+           |${excludedWorkersMsg(StatusCode.WORKER_EXCLUDED)}""".stripMargin
+    }
+    if (excludedWorkersMsg.contains(StatusCode.WORKER_UNKNOWN)) {
+      failedWorkersMsg +=
+        s"""
+           |Current unknown workers:
+           |${excludedWorkersMsg(StatusCode.WORKER_UNKNOWN)}""".stripMargin
+    }
+    if (shutdownWorkersMsg.nonEmpty) {
+      failedWorkersMsg +=
+        s"""
+           |Current shutdown workers:
+           |$shutdownWorkersMsg""".stripMargin
     }
+    failedWorkersMsg
   }
 }