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

ethanfeng pushed a commit to branch branch-0.5
in repository https://gitbox.apache.org/repos/asf/celeborn.git


The following commit(s) were added to refs/heads/branch-0.5 by this push:
     new 7e8a1bf61 [CELEBORN-1646] Catch exception of Files#getFileStore for 
DeviceMonitor and StorageManager for input/ouput error
7e8a1bf61 is described below

commit 7e8a1bf6146f61648e22555d80b6d3a222e9e7c0
Author: SteNicholas <[email protected]>
AuthorDate: Wed Oct 16 15:55:31 2024 +0800

    [CELEBORN-1646] Catch exception of Files#getFileStore for DeviceMonitor and 
StorageManager for input/ouput error
    
    ### What changes were proposed in this pull request?
    
    Catch exception of `Files#getFileStore` for `DeviceMonitor` and 
`StorageManager` for input/ouput error.
    
    ### Why are the changes needed?
    
    `DeviceMonitor` uses `Files#getFileStore` to record `DeviceOSTotalBytes` 
and `DeviceOSFreeBytes` gauges at present, which could causes the metric 
corruption for input/ouput error of disk.
    
    <img width="1351" alt="image" 
src="https://github.com/user-attachments/assets/eae03f33-aaa2-4803-86a8-272aa85058d1";>
    
    ```
    2024-10-14 12:00:11,805 [WARN] [worker-JettyThreadPool-3119995] - 
org.apache.celeborn.server.common.http.HttpUtils -Logging.scala(76) -GET 
/metrics failed: java.nio.file.FileSystemException: /mnt/storage01: 
Input/output error
    java.nio.file.FileSystemException: /mnt/storage01: Input/output error
            at 
sun.nio.fs.UnixException.translateToIOException(UnixException.java:91) 
~[?:1.8.0_162]
            at 
sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102) 
~[?:1.8.0_162]
            at 
sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107) 
~[?:1.8.0_162]
            at sun.nio.fs.UnixFileStore.devFor(UnixFileStore.java:57) 
~[?:1.8.0_162]
            at sun.nio.fs.UnixFileStore.<init>(UnixFileStore.java:64) 
~[?:1.8.0_162]
            at sun.nio.fs.LinuxFileStore.<init>(LinuxFileStore.java:44) 
~[?:1.8.0_162]
            at 
sun.nio.fs.LinuxFileSystemProvider.getFileStore(LinuxFileSystemProvider.java:51)
 ~[?:1.8.0_162]
            at 
sun.nio.fs.LinuxFileSystemProvider.getFileStore(LinuxFileSystemProvider.java:39)
 ~[?:1.8.0_162]
            at 
sun.nio.fs.UnixFileSystemProvider.getFileStore(UnixFileSystemProvider.java:368) 
~[?:1.8.0_162]
            at java.nio.file.Files.getFileStore(Files.java:1461) ~[?:1.8.0_162]
            at 
org.apache.celeborn.service.deploy.worker.storage.DeviceMonitor$.getDiskUsageInfos(DeviceMonitor.scala:231)
 ~[celeborn-worker_2.12-0.5.0-SNAPSHOT.jar:0.5.0-SNAPSHOT]
            at 
org.apache.celeborn.service.deploy.worker.storage.LocalDeviceMonitor.usage$1(DeviceMonitor.scala:89)
 ~[celeborn-worker_2.12-0.5.0-SNAPSHOT.jar:0.5.0-SNAPSHOT]
            at 
org.apache.celeborn.service.deploy.worker.storage.LocalDeviceMonitor.$anonfun$init$7(DeviceMonitor.scala:91)
 ~[celeborn-worker_2.12-0.5.0-SNAPSHOT.jar:0.5.0-SNAPSHOT]
            at 
scala.runtime.java8.JFunction0$mcJ$sp.apply(JFunction0$mcJ$sp.java:23) 
~[scala-library-2.12.10.jar:?]
            at 
org.apache.celeborn.common.metrics.source.GaugeSupplier$$anon$3.getValue(AbstractSource.scala:470)
 ~[celeborn-common_2.12-0.5.0-SNAPSHOT.jar:0.5.0-SNAPSHOT]
            at 
org.apache.celeborn.common.metrics.source.AbstractSource.recordGauge(AbstractSource.scala:346)
 ~[celeborn-common_2.12-0.5.0-SNAPSHOT.jar:0.5.0-SNAPSHOT]
            at 
org.apache.celeborn.common.metrics.source.AbstractSource.$anonfun$getMetrics$2(AbstractSource.scala:406)
 ~[celeborn-common_2.12-0.5.0-SNAPSHOT.jar:0.5.0-SNAPSHOT]
            at 
org.apache.celeborn.common.metrics.source.AbstractSource.$anonfun$getMetrics$2$adapted(AbstractSource.scala:406)
 ~[celeborn-common_2.12-0.5.0-SNAPSHOT.jar:0.5.0-SNAPSHOT]
            at scala.collection.immutable.List.foreach(List.scala:392) 
~[scala-library-2.12.10.jar:?]
            at 
org.apache.celeborn.common.metrics.source.AbstractSource.getMetrics(AbstractSource.scala:406)
 ~[celeborn-common_2.12-0.5.0-SNAPSHOT.jar:0.5.0-SNAPSHOT]
            at 
org.apache.celeborn.common.metrics.sink.AbstractServlet.$anonfun$getMetricsSnapshot$1(AbstractServlet.scala:34)
 ~[celeborn-service_2.12-0.5.0-SNAPSHOT.jar:0.5.0-SNAPSHOT]
            at 
scala.collection.TraversableLike.$anonfun$map$1(TraversableLike.scala:238) 
~[scala-library-2.12.10.jar:?]
            at scala.collection.Iterator.foreach(Iterator.scala:941) 
~[scala-library-2.12.10.jar:?]
            at scala.collection.Iterator.foreach$(Iterator.scala:941) 
~[scala-library-2.12.10.jar:?]
            at scala.collection.AbstractIterator.foreach(Iterator.scala:1429) 
~[scala-library-2.12.10.jar:?]
            at scala.collection.IterableLike.foreach(IterableLike.scala:74) 
~[scala-library-2.12.10.jar:?]
            at scala.collection.IterableLike.foreach$(IterableLike.scala:73) 
~[scala-library-2.12.10.jar:?]
            at scala.collection.AbstractIterable.foreach(Iterable.scala:56) 
~[scala-library-2.12.10.jar:?]
            at scala.collection.TraversableLike.map(TraversableLike.scala:238) 
~[scala-library-2.12.10.jar:?]
            at scala.collection.TraversableLike.map$(TraversableLike.scala:231) 
~[scala-library-2.12.10.jar:?]
            at scala.collection.AbstractTraversable.map(Traversable.scala:108) 
~[scala-library-2.12.10.jar:?]
            at 
org.apache.celeborn.common.metrics.sink.AbstractServlet.getMetricsSnapshot(AbstractServlet.scala:34)
 ~[celeborn-service_2.12-0.5.0-SNAPSHOT.jar:0.5.0-SNAPSHOT]
            at 
org.apache.celeborn.common.metrics.sink.PrometheusServlet.$anonfun$createServletHandler$1(PrometheusServlet.scala:38)
 ~[celeborn-service_2.12-0.5.0-SNAPSHOT.jar:0.5.0-SNAPSHOT]
            at 
org.apache.celeborn.server.common.http.HttpUtils$$anon$1.doGet(HttpUtils.scala:51)
 ~[celeborn-service_2.12-0.5.0-SNAPSHOT.jar:0.5.0-SNAPSHOT]
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:497) 
~[jakarta.servlet-api-4.0.4.jar:4.0.4]
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:584) 
~[jakarta.servlet-api-4.0.4.jar:4.0.4]
            at 
org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799) 
~[jetty-servlet-9.4.52.v20230823.jar:9.4.52.v20230823]
            at 
org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:554) 
~[jetty-servlet-9.4.52.v20230823.jar:9.4.52.v20230823]
            at 
org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
 ~[jetty-server-9.4.52.v20230823.jar:9.4.52.v20230823]
            at 
org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1440)
 ~[jetty-server-9.4.52.v20230823.jar:9.4.52.v20230823]
            at 
org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)
 ~[jetty-server-9.4.52.v20230823.jar:9.4.52.v20230823]
            at 
org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:505) 
~[jetty-servlet-9.4.52.v20230823.jar:9.4.52.v20230823]
            at 
org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)
 ~[jetty-server-9.4.52.v20230823.jar:9.4.52.v20230823]
            at 
org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1355)
 ~[jetty-server-9.4.52.v20230823.jar:9.4.52.v20230823]
            at 
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) 
~[jetty-server-9.4.52.v20230823.jar:9.4.52.v20230823]
            at 
org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:234)
 ~[jetty-server-9.4.52.v20230823.jar:9.4.52.v20230823]
            at 
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) 
~[jetty-server-9.4.52.v20230823.jar:9.4.52.v20230823]
            at org.eclipse.jetty.server.Server.handle(Server.java:516) 
~[jetty-server-9.4.52.v20230823.jar:9.4.52.v20230823]
            at 
org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487) 
~[jetty-server-9.4.52.v20230823.jar:9.4.52.v20230823]
            at 
org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732) 
~[jetty-server-9.4.52.v20230823.jar:9.4.52.v20230823]
            at 
org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479) 
~[jetty-server-9.4.52.v20230823.jar:9.4.52.v20230823]
            at 
org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277) 
~[jetty-server-9.4.52.v20230823.jar:9.4.52.v20230823]
            at 
org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
 ~[jetty-io-9.4.52.v20230823.jar:9.4.52.v20230823]
            at 
org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) 
~[jetty-io-9.4.52.v20230823.jar:9.4.52.v20230823]
            at 
org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) 
~[jetty-io-9.4.52.v20230823.jar:9.4.52.v20230823]
            at 
org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338)
 ~[jetty-util-9.4.52.v20230823.jar:9.4.52.v20230823]
            at 
org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315)
 ~[jetty-util-9.4.52.v20230823.jar:9.4.52.v20230823]
            at 
org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173)
 ~[jetty-util-9.4.52.v20230823.jar:9.4.52.v20230823]
            at 
org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131)
 ~[jetty-util-9.4.52.v20230823.jar:9.4.52.v20230823]
            at 
org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409)
 ~[jetty-util-9.4.52.v20230823.jar:9.4.52.v20230823]
            at 
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)
 ~[jetty-util-9.4.52.v20230823.jar:9.4.52.v20230823]
            at 
org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)
 ~[jetty-util-9.4.52.v20230823.jar:9.4.52.v20230823]
            at java.lang.Thread.run(Thread.java:748) ~[?:1.8.0_162]
    2024-10-14 12:00:42,701 [ERROR] [worker-disk-checker] - 
org.apache.celeborn.service.deploy.worker.storage.LocalDeviceMonitor 
-Logging.scala(80) -Device check failed.
    java.util.concurrent.ExecutionException: java.nio.file.FileSystemException: 
/mnt/storage01: Input/output error
            at java.util.concurrent.FutureTask.report(FutureTask.java:122) 
~[?:1.8.0_162]
            at java.util.concurrent.FutureTask.get(FutureTask.java:206) 
~[?:1.8.0_162]
            at 
org.apache.celeborn.common.util.Utils$.tryWithTimeoutAndCallback(Utils.scala:950)
 ~[celeborn-common_2.12-0.5.0-SNAPSHOT.jar:0.5.0-SNAPSHOT]
            at 
org.apache.celeborn.service.deploy.worker.storage.DeviceMonitor$.highDiskUsage(DeviceMonitor.scala:268)
 ~[celeborn-worker_2.12-0.5.0-SNAPSHOT.jar:0.5.0-SNAPSHOT]
            at 
org.apache.celeborn.service.deploy.worker.storage.LocalDeviceMonitor$$anon$1.$anonfun$run$9(DeviceMonitor.scala:137)
 ~[celeborn-worker_2.12-0.5.0-SNAPSHOT.jar:0.5.0-SNAPSHOT]
            at 
org.apache.celeborn.service.deploy.worker.storage.LocalDeviceMonitor$$anon$1.$anonfun$run$9$adapted(DeviceMonitor.scala:136)
 ~[celeborn-worker_2.12-0.5.0-SNAPSHOT.jar:0.5.0-SNAPSHOT]
            at scala.collection.Iterator.foreach(Iterator.scala:941) 
~[scala-library-2.12.10.jar:?]
            at scala.collection.Iterator.foreach$(Iterator.scala:941) 
~[scala-library-2.12.10.jar:?]
            at scala.collection.AbstractIterator.foreach(Iterator.scala:1429) 
~[scala-library-2.12.10.jar:?]
            at scala.collection.IterableLike.foreach(IterableLike.scala:74) 
~[scala-library-2.12.10.jar:?]
            at scala.collection.IterableLike.foreach$(IterableLike.scala:73) 
~[scala-library-2.12.10.jar:?]
            at scala.collection.AbstractIterable.foreach(Iterable.scala:56) 
~[scala-library-2.12.10.jar:?]
            at 
org.apache.celeborn.service.deploy.worker.storage.LocalDeviceMonitor$$anon$1.$anonfun$run$2(DeviceMonitor.scala:136)
 ~[celeborn-worker_2.12-0.5.0-SNAPSHOT.jar:0.5.0-SNAPSHOT]
            at 
org.apache.celeborn.service.deploy.worker.storage.LocalDeviceMonitor$$anon$1.$anonfun$run$2$adapted(DeviceMonitor.scala:111)
 ~[celeborn-worker_2.12-0.5.0-SNAPSHOT.jar:0.5.0-SNAPSHOT]
            at scala.collection.Iterator.foreach(Iterator.scala:941) 
~[scala-library-2.12.10.jar:?]
            at scala.collection.Iterator.foreach$(Iterator.scala:941) 
~[scala-library-2.12.10.jar:?]
            at scala.collection.AbstractIterator.foreach(Iterator.scala:1429) 
~[scala-library-2.12.10.jar:?]
            at scala.collection.IterableLike.foreach(IterableLike.scala:74) 
~[scala-library-2.12.10.jar:?]
            at scala.collection.IterableLike.foreach$(IterableLike.scala:73) 
~[scala-library-2.12.10.jar:?]
            at scala.collection.AbstractIterable.foreach(Iterable.scala:56) 
~[scala-library-2.12.10.jar:?]
            at 
org.apache.celeborn.service.deploy.worker.storage.LocalDeviceMonitor$$anon$1.run(DeviceMonitor.scala:111)
 ~[celeborn-worker_2.12-0.5.0-SNAPSHOT.jar:0.5.0-SNAPSHOT]
            at 
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
~[?:1.8.0_162]
            at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) 
~[?:1.8.0_162]
            at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
 ~[?:1.8.0_162]
            at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
 ~[?:1.8.0_162]
            at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 
~[?:1.8.0_162]
            at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 
~[?:1.8.0_162]
            at java.lang.Thread.run(Thread.java:748) ~[?:1.8.0_162]
    Caused by: java.nio.file.FileSystemException: /mnt/storage01: Input/output 
error
            at 
sun.nio.fs.UnixException.translateToIOException(UnixException.java:91) 
~[?:1.8.0_162]
            at 
sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102) 
~[?:1.8.0_162]
            at 
sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107) 
~[?:1.8.0_162]
            at sun.nio.fs.UnixFileStore.devFor(UnixFileStore.java:57) 
~[?:1.8.0_162]
            at sun.nio.fs.UnixFileStore.<init>(UnixFileStore.java:64) 
~[?:1.8.0_162]
            at sun.nio.fs.LinuxFileStore.<init>(LinuxFileStore.java:44) 
~[?:1.8.0_162]
            at 
sun.nio.fs.LinuxFileSystemProvider.getFileStore(LinuxFileSystemProvider.java:51)
 ~[?:1.8.0_162]
            at 
sun.nio.fs.LinuxFileSystemProvider.getFileStore(LinuxFileSystemProvider.java:39)
 ~[?:1.8.0_162]
            at 
sun.nio.fs.UnixFileSystemProvider.getFileStore(UnixFileSystemProvider.java:368) 
~[?:1.8.0_162]
            at java.nio.file.Files.getFileStore(Files.java:1461) ~[?:1.8.0_162]
            at 
org.apache.celeborn.service.deploy.worker.storage.DeviceMonitor$.getDiskUsageInfos(DeviceMonitor.scala:231)
 ~[celeborn-worker_2.12-0.5.0-SNAPSHOT.jar:0.5.0-SNAPSHOT]
            at 
org.apache.celeborn.service.deploy.worker.storage.DeviceMonitor$.$anonfun$highDiskUsage$1(DeviceMonitor.scala:248)
 ~[celeborn-worker_2.12-0.5.0-SNAPSHOT.jar:0.5.0-SNAPSHOT]
            at 
scala.runtime.java8.JFunction0$mcZ$sp.apply(JFunction0$mcZ$sp.java:23) 
~[scala-library-2.12.10.jar:?]
            at 
org.apache.celeborn.common.util.Utils$$anon$3.call(Utils.scala:943) 
~[celeborn-common_2.12-0.5.0-SNAPSHOT.jar:0.5.0-SNAPSHOT]
            at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
~[?:1.8.0_162]
            ... 3 more
    ```
    
    Meanwhile, `StorageManager` should not update space related diskInfo for 
input/ouput error of disk.
    
    ### Does this PR introduce _any_ user-facing change?
    
    No.
    
    ### How was this patch tested?
    
    Cluster test.
    
    Closes #2809 from SteNicholas/CELEBORN-1646.
    
    Authored-by: SteNicholas <[email protected]>
    Signed-off-by: mingji <[email protected]>
    (cherry picked from commit fbea91fc1990ff18f08aae06aafab952ebf5e17a)
    Signed-off-by: mingji <[email protected]>
---
 .../deploy/worker/storage/DeviceMonitor.scala      |  9 +++-
 .../deploy/worker/storage/StorageManager.scala     | 62 +++++++++++++---------
 2 files changed, 44 insertions(+), 27 deletions(-)

diff --git 
a/worker/src/main/scala/org/apache/celeborn/service/deploy/worker/storage/DeviceMonitor.scala
 
b/worker/src/main/scala/org/apache/celeborn/service/deploy/worker/storage/DeviceMonitor.scala
index 611686fcf..8243f6522 100644
--- 
a/worker/src/main/scala/org/apache/celeborn/service/deploy/worker/storage/DeviceMonitor.scala
+++ 
b/worker/src/main/scala/org/apache/celeborn/service/deploy/worker/storage/DeviceMonitor.scala
@@ -86,7 +86,14 @@ class LocalDeviceMonitor(
       .groupBy(_.deviceInfo)
       .foreach { case (deviceInfo: DeviceInfo, diskInfos: List[DiskInfo]) =>
         val deviceLabel = Map("device" -> deviceInfo.name)
-        def usage: DeviceMonitor.DiskUsageInfo = 
DeviceMonitor.getDiskUsageInfos(diskInfos.head)
+        def usage: DeviceMonitor.DiskUsageInfo =
+          try {
+            DeviceMonitor.getDiskUsageInfos(diskInfos.head)
+          } catch {
+            case t: Throwable =>
+              logError("Device monitor get usage infos failed.", t)
+              DeviceMonitor.DiskUsageInfo(0L, 0L, 0L, 0)
+          }
         workerSource.addGauge(WorkerSource.DEVICE_OS_TOTAL_CAPACITY, 
deviceLabel) { () =>
           usage.totalSpace
         }
diff --git 
a/worker/src/main/scala/org/apache/celeborn/service/deploy/worker/storage/StorageManager.scala
 
b/worker/src/main/scala/org/apache/celeborn/service/deploy/worker/storage/StorageManager.scala
index 13bda7b43..4fc65f3c7 100644
--- 
a/worker/src/main/scala/org/apache/celeborn/service/deploy/worker/storage/StorageManager.scala
+++ 
b/worker/src/main/scala/org/apache/celeborn/service/deploy/worker/storage/StorageManager.scala
@@ -783,33 +783,43 @@ final private[worker] class StorageManager(conf: 
CelebornConf, workerSource: Abs
   }
 
   def updateDiskInfos(): Unit = this.synchronized {
-    disksSnapshot().filter(_.status != DiskStatus.IO_HANG).foreach { diskInfo 
=>
-      val totalUsage = diskInfo.dirs.map { dir =>
-        val writers = workingDirWriters.get(dir)
-        if (writers != null) {
-          writers.synchronized {
-            writers.values.asScala.map(_.getDiskFileInfo.getFileLength).sum
+    disksSnapshot()
+      .filter(diskInfo =>
+        diskInfo.status != DiskStatus.IO_HANG || diskInfo.status != 
DiskStatus.READ_OR_WRITE_FAILURE)
+      .foreach {
+        diskInfo =>
+          val totalUsage = diskInfo.dirs.map { dir =>
+            val writers = workingDirWriters.get(dir)
+            if (writers != null) {
+              writers.synchronized {
+                writers.values.asScala.map(_.getDiskFileInfo.getFileLength).sum
+              }
+            } else {
+              0
+            }
+          }.sum
+
+          try {
+            val (fileSystemReportedUsableSpace, fileSystemReportedTotalSpace) =
+              getFileSystemReportedSpace(diskInfo.mountPoint)
+            val workingDirUsableSpace =
+              Math.min(diskInfo.configuredUsableSpace - totalUsage, 
fileSystemReportedUsableSpace)
+            val minimumReserveSize =
+              DiskUtils.getMinimumUsableSize(diskInfo, diskReserveSize, 
diskReserveRatio)
+            val usableSpace = Math.max(workingDirUsableSpace - 
minimumReserveSize, 0)
+            logDebug(
+              s"Update diskInfo:${diskInfo.mountPoint} 
workingDirUsableSpace:$workingDirUsableSpace 
fileMeta:$fileSystemReportedUsableSpace" +
+                s"conf:${diskInfo.configuredUsableSpace} 
totalUsage:$totalUsage totalSpace:$fileSystemReportedTotalSpace" +
+                s"minimumReserveSize:$minimumReserveSize 
usableSpace:$usableSpace")
+            diskInfo.setUsableSpace(usableSpace)
+            diskInfo.setTotalSpace(fileSystemReportedTotalSpace)
+          } catch {
+            case t: Throwable =>
+              logError(s"Update diskInfo:${diskInfo.mountPoint} failed.", t)
           }
-        } else {
-          0
-        }
-      }.sum
-
-      val (fileSystemReportedUsableSpace, fileSystemReportedTotalSpace) =
-        getFileSystemReportedSpace(diskInfo.mountPoint)
-      val workingDirUsableSpace =
-        Math.min(diskInfo.configuredUsableSpace - totalUsage, 
fileSystemReportedUsableSpace)
-      val minimumReserveSize =
-        DiskUtils.getMinimumUsableSize(diskInfo, diskReserveSize, 
diskReserveRatio)
-      val usableSpace = Math.max(workingDirUsableSpace - minimumReserveSize, 0)
-      logDebug(s"updateDiskInfos workingDirUsableSpace:$workingDirUsableSpace 
filemeta:$fileSystemReportedUsableSpace" +
-        s"conf:${diskInfo.configuredUsableSpace} totalUsage:$totalUsage 
totalSpace:$fileSystemReportedTotalSpace" +
-        s"minimumReserveSize:$minimumReserveSize usableSpace:$usableSpace")
-      diskInfo.setUsableSpace(usableSpace)
-      diskInfo.setTotalSpace(fileSystemReportedTotalSpace)
-      diskInfo.updateFlushTime()
-      diskInfo.updateFetchTime()
-    }
+          diskInfo.updateFlushTime()
+          diskInfo.updateFetchTime()
+      }
     logInfo(s"Updated diskInfos:\n${disksSnapshot().mkString("\n")}")
   }
 

Reply via email to