From 044054f9f4089341e208dd6df69f4287ac8dd5c3 Mon Sep 17 00:00:00 2001 From: serge-rider Date: Sun, 25 Mar 2018 20:21:37 +0300 Subject: [PATCH] #3203 Terminate server output reader on SQL editor close (thread leak fix) --- .../dbeaver/ui/editors/sql/SQLEditor.java | 31 +++++++++---------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditor.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditor.java index a21dd4b78b..ce109bd776 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditor.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/editors/sql/SQLEditor.java @@ -2481,9 +2481,9 @@ public class SQLEditor extends SQLEditorBase implements @Override protected IStatus run(DBRProgressMonitor monitor) { - dumpOutput(monitor); + if (!DBeaverCore.isClosing() && sashForm != null && !sashForm.isDisposed()) { + dumpOutput(monitor); - if (!DBeaverCore.isClosing()) { schedule(200); } @@ -2503,21 +2503,18 @@ public class SQLEditor extends SQLEditorBase implements info.outputReader.readServerOutput(monitor, info.executionContext, new PrintWriter(dump, true)); final String dumpString = dump.toString(); if (!dumpString.isEmpty()) { - DBeaverUI.asyncExec(new Runnable() { - @Override - public void run() { - if (outputViewer.isDisposed()) { - return; - } - try { - IOUtils.copyText(new StringReader(dumpString), outputViewer.getOutputWriter()); - } catch (IOException e) { - log.error(e); - } - if (outputViewer.isHasNewOutput()) { - outputViewer.scrollToEnd(); - updateOutputViewerIcon(true); - } + DBeaverUI.asyncExec(() -> { + if (outputViewer.isDisposed()) { + return; + } + try { + IOUtils.copyText(new StringReader(dumpString), outputViewer.getOutputWriter()); + } catch (IOException e) { + log.error(e); + } + if (outputViewer.isHasNewOutput()) { + outputViewer.scrollToEnd(); + updateOutputViewerIcon(true); } }); } -- GitLab