Skip to content

Commit

Permalink
fix: retry counting build tool digest
Browse files Browse the repository at this point in the history
  • Loading branch information
kasiaMarek committed Apr 19, 2024
1 parent dfa2bfe commit 73944e4
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ final class BloopInstall(
status: Status,
buildTool: BloopInstallProvider,
): Unit = {
buildTool.digest(workspace).foreach { checksum =>
buildTool.digestWithRetry(workspace).foreach { checksum =>
tables.digests.setStatus(checksum, status)
}
}
Expand Down
20 changes: 19 additions & 1 deletion metals/src/main/scala/scala/meta/internal/builds/BuildTool.scala
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package scala.meta.internal.builds

import java.io.IOException
import java.nio.file.Files
import java.nio.file.Path
import java.nio.file.StandardCopyOption
Expand All @@ -9,7 +10,24 @@ import scala.meta.io.AbsolutePath

trait BuildTool {

def digest(workspace: AbsolutePath): Option[String]
def digestWithRetry(
workspace: AbsolutePath,
retries: Int = 1,
): Option[String] = {
try {
digest(workspace)
} catch {
case error: IOException =>
scribe.warn(
s"Failed to digest workspace $workspace for build tool $executableName with error: $error${if (retries > 0) ", will retry" else ""}"
)
if (retries > 0) {
digestWithRetry(workspace, retries = 0)
} else None
}
}

protected def digest(workspace: AbsolutePath): Option[String]

protected lazy val tempDir: Path = {
val dir = Files.createTempDirectory("metals")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ final class WorkspaceReload(
status: Status,
buildTool: BuildTool,
): Unit = {
buildTool.digest(workspace).foreach { checksum =>
buildTool.digestWithRetry(workspace).foreach { checksum =>
tables.digests.setStatus(checksum, status)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2091,7 +2091,7 @@ class MetalsLspService(
) =>
BuildTool.IncompatibleVersion(buildTool)
case _ =>
buildTool.digest(folder) match {
buildTool.digestWithRetry(folder) match {
case Some(digest) =>
BuildTool.Found(buildTool, digest)
case None => BuildTool.NoChecksum(buildTool, folder)
Expand Down

0 comments on commit 73944e4

Please sign in to comment.