diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/jobs/ConnectJob.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/jobs/ConnectJob.java index 6dfcbeec0ebd8ae55f07df32f8b5d578b355dfd4..4648feb5d9f0f253c43fb1743581ec7a37b18219 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/jobs/ConnectJob.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/jobs/ConnectJob.java @@ -71,15 +71,15 @@ public class ConnectJob extends AbstractJob } try { - container.connect(monitor, initialize, reflect); + final boolean connected = container.connect(monitor, initialize, reflect); + + connectStatus = connected ? Status.OK_STATUS : Status.CANCEL_STATUS; } finally { if (connectThread != null) { connectThread.setName(oldName); connectThread = null; } } - - connectStatus = Status.OK_STATUS; } catch (Throwable ex) { log.debug(ex); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/connection/ConnectionWizard.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/connection/ConnectionWizard.java index 0c26c74d93eb8957528b68d53af224f34edf475b..442f556fe954a16368b54802d9ef562eda457723 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/connection/ConnectionWizard.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/dialogs/connection/ConnectionWizard.java @@ -136,6 +136,9 @@ public abstract class ConnectionWizard extends Wizard implements INewWizard { if (op.getConnectError() != null) { throw new InvocationTargetException(op.getConnectError()); } + if (op.getConnectStatus() == Status.CANCEL_STATUS) { + throw new InterruptedException(); + } } }); @@ -221,6 +224,9 @@ public abstract class ConnectionWizard extends Wizard implements INewWizard { if (connectError != null || monitor.isCanceled()) { return Status.OK_STATUS; } + if (connectStatus == Status.CANCEL_STATUS) { + return Status.CANCEL_STATUS; + } monitor.worked(1); DBPDataSource dataSource = container.getDataSource();