diff --git a/src/Build/BackEnd/Client/MSBuildClient.cs b/src/Build/BackEnd/Client/MSBuildClient.cs index 27fc6f75d0e..8da1322684d 100644 --- a/src/Build/BackEnd/Client/MSBuildClient.cs +++ b/src/Build/BackEnd/Client/MSBuildClient.cs @@ -174,8 +174,6 @@ public MSBuildClientExitResult Execute(CancellationToken cancellationToken) // Connect to server. if (!TryConnectToServer(serverIsAlreadyRunning ? 1_000 : 20_000)) { - CommunicationsUtilities.Trace("Failure to connect to a server."); - _exitResult.MSBuildClientExitType = MSBuildClientExitType.ConnectionError; return _exitResult; } @@ -187,7 +185,8 @@ public MSBuildClientExitResult Execute(CancellationToken cancellationToken) if (!TrySendBuildCommand()) { CommunicationsUtilities.Trace("Failure to connect to a server."); - _exitResult.MSBuildClientExitType = MSBuildClientExitType.ConnectionError; + // Overwrite the client exit type from unexpected to connection error, since that would trigger the fallback to old build behavior. + _exitResult.MSBuildClientExitType = MSBuildClientExitType.UnableToConnect; return _exitResult; } @@ -359,7 +358,7 @@ private bool TrySendPacket(Func packetResolver) catch (Exception ex) { CommunicationsUtilities.Trace("Failed to send command packet of type '{0}' to server: {1}", packet?.Type.ToString() ?? "Unknown", ex); - _exitResult.MSBuildClientExitType = MSBuildClientExitType.ConnectionError; + _exitResult.MSBuildClientExitType = MSBuildClientExitType.Unexpected; return false; } @@ -515,7 +514,7 @@ private bool TryConnectToServer(int timeout) catch (Exception ex) { CommunicationsUtilities.Trace("Failed to connect to server: {0}", ex); - _exitResult.MSBuildClientExitType = MSBuildClientExitType.ConnectionError; + _exitResult.MSBuildClientExitType = MSBuildClientExitType.UnableToConnect; return false; } diff --git a/src/Build/BackEnd/Client/MSBuildClientExitType.cs b/src/Build/BackEnd/Client/MSBuildClientExitType.cs index b8061b3295e..e9916bd5414 100644 --- a/src/Build/BackEnd/Client/MSBuildClientExitType.cs +++ b/src/Build/BackEnd/Client/MSBuildClientExitType.cs @@ -9,15 +9,15 @@ public enum MSBuildClientExitType /// Success, /// - /// Server is busy. + /// Server is busy. This would invoke a fallback behavior. /// ServerBusy, /// - /// Client was unable to connect to the server. + /// Client was unable to connect to the server. This would invoke a fallback behavior. /// - ConnectionError, + UnableToConnect, /// - /// Client was unable to launch the server. + /// Client was unable to launch the server. This would invoke a fallback behavior. /// LaunchError, /// diff --git a/src/Build/PublicAPI/net/PublicAPI.Unshipped.txt b/src/Build/PublicAPI/net/PublicAPI.Unshipped.txt index 7ce7bc26ef8..a8ca12cca99 100644 --- a/src/Build/PublicAPI/net/PublicAPI.Unshipped.txt +++ b/src/Build/PublicAPI/net/PublicAPI.Unshipped.txt @@ -9,10 +9,10 @@ Microsoft.Build.Experimental.MSBuildClientExitResult.MSBuildClientExitResult() - Microsoft.Build.Experimental.MSBuildClientExitResult.MSBuildClientExitType.get -> Microsoft.Build.Experimental.MSBuildClientExitType Microsoft.Build.Experimental.MSBuildClientExitResult.MSBuildClientExitType.set -> void Microsoft.Build.Experimental.MSBuildClientExitType -Microsoft.Build.Experimental.MSBuildClientExitType.ConnectionError = 2 -> Microsoft.Build.Experimental.MSBuildClientExitType Microsoft.Build.Experimental.MSBuildClientExitType.LaunchError = 3 -> Microsoft.Build.Experimental.MSBuildClientExitType Microsoft.Build.Experimental.MSBuildClientExitType.ServerBusy = 1 -> Microsoft.Build.Experimental.MSBuildClientExitType Microsoft.Build.Experimental.MSBuildClientExitType.Success = 0 -> Microsoft.Build.Experimental.MSBuildClientExitType +Microsoft.Build.Experimental.MSBuildClientExitType.UnableToConnect = 2 -> Microsoft.Build.Experimental.MSBuildClientExitType Microsoft.Build.Experimental.MSBuildClientExitType.Unexpected = 4 -> Microsoft.Build.Experimental.MSBuildClientExitType Microsoft.Build.Experimental.OutOfProcServerNode Microsoft.Build.Experimental.OutOfProcServerNode.BuildCallback diff --git a/src/Build/PublicAPI/netstandard/PublicAPI.Unshipped.txt b/src/Build/PublicAPI/netstandard/PublicAPI.Unshipped.txt index c97cd564039..aa42c2c0ede 100644 --- a/src/Build/PublicAPI/netstandard/PublicAPI.Unshipped.txt +++ b/src/Build/PublicAPI/netstandard/PublicAPI.Unshipped.txt @@ -9,10 +9,10 @@ Microsoft.Build.Experimental.MSBuildClientExitResult.MSBuildClientExitResult() - Microsoft.Build.Experimental.MSBuildClientExitResult.MSBuildClientExitType.get -> Microsoft.Build.Experimental.MSBuildClientExitType Microsoft.Build.Experimental.MSBuildClientExitResult.MSBuildClientExitType.set -> void Microsoft.Build.Experimental.MSBuildClientExitType -Microsoft.Build.Experimental.MSBuildClientExitType.ConnectionError = 2 -> Microsoft.Build.Experimental.MSBuildClientExitType Microsoft.Build.Experimental.MSBuildClientExitType.LaunchError = 3 -> Microsoft.Build.Experimental.MSBuildClientExitType Microsoft.Build.Experimental.MSBuildClientExitType.ServerBusy = 1 -> Microsoft.Build.Experimental.MSBuildClientExitType Microsoft.Build.Experimental.MSBuildClientExitType.Success = 0 -> Microsoft.Build.Experimental.MSBuildClientExitType +Microsoft.Build.Experimental.MSBuildClientExitType.UnableToConnect = 2 -> Microsoft.Build.Experimental.MSBuildClientExitType Microsoft.Build.Experimental.MSBuildClientExitType.Unexpected = 4 -> Microsoft.Build.Experimental.MSBuildClientExitType Microsoft.Build.Experimental.OutOfProcServerNode Microsoft.Build.Experimental.OutOfProcServerNode.BuildCallback diff --git a/src/MSBuild/MSBuildClientApp.cs b/src/MSBuild/MSBuildClientApp.cs index b5187d198a1..a2ea3bbfb60 100644 --- a/src/MSBuild/MSBuildClientApp.cs +++ b/src/MSBuild/MSBuildClientApp.cs @@ -74,7 +74,8 @@ public static MSBuildApp.ExitType Execute( MSBuildClientExitResult exitResult = msbuildClient.Execute(cancellationToken); if (exitResult.MSBuildClientExitType == MSBuildClientExitType.ServerBusy || - exitResult.MSBuildClientExitType == MSBuildClientExitType.ConnectionError) + exitResult.MSBuildClientExitType == MSBuildClientExitType.UnableToConnect || + exitResult.MSBuildClientExitType == MSBuildClientExitType.LaunchError) { // Server is busy, fallback to old behavior. return MSBuildApp.Execute(commandLine);