@@ -12,9 +12,10 @@ import java.io.{File, IOException}
12
12
import scala .annotation .tailrec
13
13
import scala .build .EitherCps .{either , value }
14
14
import scala .build .errors .{BuildException , ModuleFormatError }
15
- import scala .build .internal .CsLoggerUtil ._
15
+ import scala .build .internal .CsLoggerUtil .*
16
+ import scala .concurrent .ExecutionException
16
17
import scala .concurrent .duration .FiniteDuration
17
- import scala .jdk .CollectionConverters ._
18
+ import scala .jdk .CollectionConverters .*
18
19
19
20
object Bloop {
20
21
@@ -37,8 +38,10 @@ object Bloop {
37
38
): Either [Throwable , Boolean ] =
38
39
try {
39
40
logger.debug(" Listing BSP build targets" )
40
- val results = buildServer.workspaceBuildTargets()
41
- .get(buildTargetsTimeout.length, buildTargetsTimeout.unit)
41
+ val results = retry()(logger) {
42
+ buildServer.workspaceBuildTargets()
43
+ .get(buildTargetsTimeout.length, buildTargetsTimeout.unit)
44
+ }
42
45
val buildTargetOpt = results.getTargets.asScala.find(_.getDisplayName == projectName)
43
46
44
47
val buildTarget = buildTargetOpt.getOrElse {
@@ -61,6 +64,11 @@ object Bloop {
61
64
case ex @ BrokenPipeInCauses (e) =>
62
65
logger.debug(s " Caught $ex while exchanging with Bloop server, assuming Bloop server exited " )
63
66
Left (ex)
67
+ case ex : ExecutionException =>
68
+ logger.debug(
69
+ s " Caught $ex while exchanging with Bloop server, you may consider restarting the build server "
70
+ )
71
+ Left (ex)
64
72
}
65
73
66
74
def bloopClassPath (
0 commit comments