From 9273b204b6a7b27cc6ab524cba5f1a4194b600db Mon Sep 17 00:00:00 2001 From: Erin Harris Date: Wed, 10 Jun 2020 15:12:35 -0400 Subject: [PATCH] CW Issue #3119: Better detection and message for debug attach timeout 0.13.0 --- .../core/internal/CodewindEclipseApplication.java | 4 +++- .../core/internal/launch/CodewindDebugConnector.java | 10 ++++++++++ .../internal/launch/CodewindLaunchConfigDelegate.java | 2 +- .../codewind/core/internal/messages/Messages.java | 2 +- .../core/internal/messages/messages.properties | 2 +- 5 files changed, 16 insertions(+), 4 deletions(-) diff --git a/dev/org.eclipse.codewind.core/src/org/eclipse/codewind/core/internal/CodewindEclipseApplication.java b/dev/org.eclipse.codewind.core/src/org/eclipse/codewind/core/internal/CodewindEclipseApplication.java index 7312386f8..555568b13 100644 --- a/dev/org.eclipse.codewind.core/src/org/eclipse/codewind/core/internal/CodewindEclipseApplication.java +++ b/dev/org.eclipse.codewind.core/src/org/eclipse/codewind/core/internal/CodewindEclipseApplication.java @@ -64,7 +64,7 @@ public class CodewindEclipseApplication extends CodewindApplication { public static final String QUICK_FIX_DESCRIPTION = "quickFixDescription"; // in seconds - public static final int DEFAULT_DEBUG_CONNECT_TIMEOUT = 10; + public static final int DEFAULT_DEBUG_CONNECT_TIMEOUT = 180; // New consoles private Set activeConsoles = new HashSet(); @@ -154,6 +154,8 @@ protected IStatus run(IProgressMonitor monitor) { return launcher.launchDebugger(app, monitor); } } + } catch (CoreException e) { + return e.getStatus(); } catch (Exception e) { Logger.logError("An error occurred while trying to launch the debugger for project: " + app.name, e); //$NON-NLS-1$ return new Status(IStatus.ERROR, CodewindCorePlugin.PLUGIN_ID, diff --git a/dev/org.eclipse.codewind.core/src/org/eclipse/codewind/core/internal/launch/CodewindDebugConnector.java b/dev/org.eclipse.codewind.core/src/org/eclipse/codewind/core/internal/launch/CodewindDebugConnector.java index ef31ca14d..1b552ed1b 100644 --- a/dev/org.eclipse.codewind.core/src/org/eclipse/codewind/core/internal/launch/CodewindDebugConnector.java +++ b/dev/org.eclipse.codewind.core/src/org/eclipse/codewind/core/internal/launch/CodewindDebugConnector.java @@ -33,6 +33,7 @@ import com.sun.jdi.connect.AttachingConnector; import com.sun.jdi.connect.Connector; import com.sun.jdi.connect.IllegalConnectorArgumentsException; +import com.sun.jdi.connect.spi.ClosedConnectionException; @SuppressWarnings("restriction") public class CodewindDebugConnector { @@ -95,6 +96,15 @@ public static IDebugTarget connectDebugger(ILaunch launch, CodewindApplication a // do nothing } } + + // Check for timeout + if (itr <= 0 && vm == null && (ex == null || ex instanceof ClosedConnectionException)) { + // Log any exception + if (ex != null) { + Logger.logError("Debug connect timed out. Last exception was: " + ex.toString(), ex); + } + throw new CoreException(new Status(IStatus.ERROR, CodewindCorePlugin.PLUGIN_ID, Messages.DebuggerConnectFailureTimeoutMsg, ex)); + } if (ex instanceof IllegalConnectorArgumentsException) { throw (IllegalConnectorArgumentsException) ex; diff --git a/dev/org.eclipse.codewind.core/src/org/eclipse/codewind/core/internal/launch/CodewindLaunchConfigDelegate.java b/dev/org.eclipse.codewind.core/src/org/eclipse/codewind/core/internal/launch/CodewindLaunchConfigDelegate.java index 8a76d8ae3..818eb1052 100644 --- a/dev/org.eclipse.codewind.core/src/org/eclipse/codewind/core/internal/launch/CodewindLaunchConfigDelegate.java +++ b/dev/org.eclipse.codewind.core/src/org/eclipse/codewind/core/internal/launch/CodewindLaunchConfigDelegate.java @@ -75,7 +75,7 @@ private void launchInner(ILaunchConfiguration config, String launchMode, ILaunch launch.addDebugTarget(debugTarget); } else if (!monitor.isCanceled()) { Logger.logError("Debugger connect timeout for project: " + app.name); //$NON-NLS-1$ - CoreUtil.openDialog(true, Messages.DebuggerConnectFailureDialogTitle, Messages.DebuggerConnectFailureDialogMsg); + CoreUtil.openDialog(true, Messages.DebuggerConnectFailureDialogTitle, Messages.DebuggerConnectFailureTimeoutMsg); getLaunchManager().removeLaunch(launch); } diff --git a/dev/org.eclipse.codewind.core/src/org/eclipse/codewind/core/internal/messages/Messages.java b/dev/org.eclipse.codewind.core/src/org/eclipse/codewind/core/internal/messages/Messages.java index 1e79c5ed4..f87ff7cc1 100644 --- a/dev/org.eclipse.codewind.core/src/org/eclipse/codewind/core/internal/messages/Messages.java +++ b/dev/org.eclipse.codewind.core/src/org/eclipse/codewind/core/internal/messages/Messages.java @@ -45,7 +45,7 @@ public class Messages extends NLS { public static String DebugLaunchConfigName; public static String DebuggerConnectFailureDialogTitle; - public static String DebuggerConnectFailureDialogMsg; + public static String DebuggerConnectFailureTimeoutMsg; public static String RemoteDebugErrorTitle; public static String RemoteDebugPortForwardErrorWithMsg; diff --git a/dev/org.eclipse.codewind.core/src/org/eclipse/codewind/core/internal/messages/messages.properties b/dev/org.eclipse.codewind.core/src/org/eclipse/codewind/core/internal/messages/messages.properties index 3e85f7aa0..31206c482 100644 --- a/dev/org.eclipse.codewind.core/src/org/eclipse/codewind/core/internal/messages/messages.properties +++ b/dev/org.eclipse.codewind.core/src/org/eclipse/codewind/core/internal/messages/messages.properties @@ -38,7 +38,7 @@ ReconnectJob_ReconnectErrorDialogMsg=Eclipse could not reconnect to {0}.\nRecrea DebugLaunchConfigName=Debugging {0} at {1}:{2} DebuggerConnectFailureDialogTitle=The debugger failed to connect -DebuggerConnectFailureDialogMsg=The debugger failed to connect in time. Increase the debug timeout in the Codewind preferences. +DebuggerConnectFailureTimeoutMsg=The debugger failed to connect in time. Increase the debug timeout in the Codewind preferences then right-click on the project and select Attach Debugger. RemoteDebugErrorTitle=Debug Setup Error RemoteDebugPortForwardErrorWithMsg=An error occurred trying to port forward the debug port for the {0} project: {1}