diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/qm/meta/QMMCollector.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/qm/meta/QMMCollector.java index b59f3164400383b9eceb00a6fb308b21d42997c6..6666459b13490920458e1b46137cab575f56a3a5 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/qm/meta/QMMCollector.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/runtime/qm/meta/QMMCollector.java @@ -17,17 +17,19 @@ */ package org.jkiss.dbeaver.runtime.qm.meta; -import org.jkiss.dbeaver.core.Log; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; -import org.jkiss.dbeaver.model.exec.*; +import org.jkiss.dbeaver.core.Log; +import org.jkiss.dbeaver.model.exec.DBCExecutionContext; +import org.jkiss.dbeaver.model.exec.DBCResultSet; +import org.jkiss.dbeaver.model.exec.DBCSavepoint; +import org.jkiss.dbeaver.model.exec.DBCStatement; import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor; import org.jkiss.dbeaver.runtime.AbstractJob; import org.jkiss.dbeaver.runtime.qm.DefaultExecutionHandler; import org.jkiss.dbeaver.runtime.qm.QMMetaEvent; import org.jkiss.dbeaver.runtime.qm.QMMetaListener; import org.jkiss.dbeaver.ui.ICommandIds; -import org.jkiss.dbeaver.ui.UIUtils; import org.jkiss.dbeaver.ui.actions.DataSourcePropertyTester; import java.util.*; @@ -298,19 +300,13 @@ public class QMMCollector extends DefaultExecutionHandler { final List listeners = getListeners(); if (!listeners.isEmpty() && !events.isEmpty()) { // Dispatch all events - UIUtils.runInUI(null, new Runnable() { - @Override - public void run() - { - for (QMMetaListener listener : listeners) { - try { - listener.metaInfoChanged(events); - } catch (Throwable e) { - log.error("Error notifying event listener", e); - } - } + for (QMMetaListener listener : listeners) { + try { + listener.metaInfoChanged(events); + } catch (Throwable e) { + log.error("Error notifying event listener", e); } - }); + } } synchronized (pastEvents) { pastEvents.addAll(events); diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/querylog/QueryLogViewer.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/querylog/QueryLogViewer.java index ad052db49f9ccefaefe90642ef41078f1db2c034..152e14997f8193449588a238c7a08208fd7863f9 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/querylog/QueryLogViewer.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/controls/querylog/QueryLogViewer.java @@ -515,11 +515,21 @@ public class QueryLogViewer extends Viewer implements QMMetaListener, IPropertyC this.entriesPerPage = store.getInt(QMConstants.PROP_ENTRIES_PER_PAGE); clearLog(); - metaInfoChanged(QMUtils.getPastMetaEvents()); + updateMetaInfo(QMUtils.getPastMetaEvents()); } @Override - public synchronized void metaInfoChanged(java.util.List events) + public void metaInfoChanged(final java.util.List events) { + // Run in UI thread + UIUtils.runInUI(null, new Runnable() { + @Override + public void run() { + updateMetaInfo(events); + } + }); + } + + private synchronized void updateMetaInfo(final java.util.List events) { if (logTable.isDisposed()) { return;