From 81457e60ec2300a043863d0c7dab163cdc747d6b Mon Sep 17 00:00:00 2001 From: Ondra Pelech Date: Fri, 5 Mar 2021 05:21:42 +0100 Subject: [PATCH] Give an explanation in case of ServerAlreadyBootingException (#6353) Give and explanation in case of ServerAlreadyBootingException --- .../src/main/java/sbt/internal/BootServerSocket.java | 2 +- .../java/sbt/internal/ServerAlreadyBootingException.java | 9 ++++++++- main/src/main/scala/sbt/Main.scala | 6 ++++-- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/main-command/src/main/java/sbt/internal/BootServerSocket.java b/main-command/src/main/java/sbt/internal/BootServerSocket.java index fab6c90d2..beff97566 100644 --- a/main-command/src/main/java/sbt/internal/BootServerSocket.java +++ b/main-command/src/main/java/sbt/internal/BootServerSocket.java @@ -345,7 +345,7 @@ public class BootServerSocket implements AutoCloseable { : new UnixDomainServerSocket(name, jni); return socket; } catch (final IOException e) { - throw new ServerAlreadyBootingException(); + throw new ServerAlreadyBootingException(e); } } diff --git a/main-command/src/main/java/sbt/internal/ServerAlreadyBootingException.java b/main-command/src/main/java/sbt/internal/ServerAlreadyBootingException.java index 070dc8b92..90a16fdff 100644 --- a/main-command/src/main/java/sbt/internal/ServerAlreadyBootingException.java +++ b/main-command/src/main/java/sbt/internal/ServerAlreadyBootingException.java @@ -7,4 +7,11 @@ package sbt.internal; -public class ServerAlreadyBootingException extends Exception {} +import java.io.IOException; + +public class ServerAlreadyBootingException extends Exception { + + public ServerAlreadyBootingException(IOException e) { + super(e); + } +} diff --git a/main/src/main/scala/sbt/Main.scala b/main/src/main/scala/sbt/Main.scala index af6e97b2c..2064fa514 100644 --- a/main/src/main/scala/sbt/Main.scala +++ b/main/src/main/scala/sbt/Main.scala @@ -118,9 +118,11 @@ private[sbt] object xMain { ): (Option[BootServerSocket], Option[Exit]) = try (Some(new BootServerSocket(configuration)) -> None) catch { - case _: ServerAlreadyBootingException + case e: ServerAlreadyBootingException if System.console != null && !ITerminal.startedByRemoteClient => - println("sbt server is already booting. Create a new server? y/n (default y)") + println( + s"sbt thinks that server is already booting because of this exception:\n${e.getCause}\nCreate a new server? y/n (default y)" + ) val exit = ITerminal.get.withRawInput(System.in.read) match { case 110 => Some(Exit(1)) case _ => None