提交 04d3329b 编写于 作者: J jurgen

QM history collection fix

上级 04ac5407
DBeaver features usage model DBeaver features usage model
Data transfer DECIMAL(x,y) types convert.
Extract non-visual part to a separate plugin (preferences + editors) Extract non-visual part to a separate plugin (preferences + editors)
RSV find/replace action RSV find/replace action
Vertica keywords Vertica keywords
......
...@@ -41,11 +41,13 @@ public class QMMCollectorImpl extends DefaultExecutionHandler implements QMMColl ...@@ -41,11 +41,13 @@ public class QMMCollectorImpl extends DefaultExecutionHandler implements QMMColl
static final Log log = Log.getLog(QMMCollectorImpl.class); static final Log log = Log.getLog(QMMCollectorImpl.class);
private static final long EVENT_DISPATCH_PERIOD = 250; private static final long EVENT_DISPATCH_PERIOD = 250;
private static final int MAX_HISTORY_EVENTS = 1000;
private Map<String, QMMSessionInfo> sessionMap = new HashMap<String, QMMSessionInfo>(); private Map<String, QMMSessionInfo> sessionMap = new HashMap<String, QMMSessionInfo>();
private List<QMMetaListener> listeners = new ArrayList<QMMetaListener>(); private List<QMMetaListener> listeners = new ArrayList<QMMetaListener>();
private List<QMMetaEvent> eventPool = new ArrayList<QMMetaEvent>(); private List<QMMetaEvent> eventPool = new ArrayList<QMMetaEvent>();
private final List<QMMetaEvent> pastEvents = new ArrayList<QMMetaEvent>(); private final Object historySync = new Object();
private List<QMMetaEvent> pastEvents = new ArrayList<QMMetaEvent>();
private boolean running = true; private boolean running = true;
public QMMCollectorImpl() public QMMCollectorImpl()
...@@ -134,7 +136,7 @@ public class QMMCollectorImpl extends DefaultExecutionHandler implements QMMColl ...@@ -134,7 +136,7 @@ public class QMMCollectorImpl extends DefaultExecutionHandler implements QMMColl
public List<QMMetaEvent> getPastEvents() public List<QMMetaEvent> getPastEvents()
{ {
synchronized (pastEvents) { synchronized (historySync) {
return new ArrayList<QMMetaEvent>(pastEvents); return new ArrayList<QMMetaEvent>(pastEvents);
} }
} }
...@@ -300,8 +302,14 @@ public class QMMCollectorImpl extends DefaultExecutionHandler implements QMMColl ...@@ -300,8 +302,14 @@ public class QMMCollectorImpl extends DefaultExecutionHandler implements QMMColl
} }
} }
} }
synchronized (pastEvents) { synchronized (historySync) {
pastEvents.addAll(events); pastEvents.addAll(events);
int size = pastEvents.size();
if (size > MAX_HISTORY_EVENTS) {
pastEvents = new ArrayList<QMMetaEvent>(pastEvents.subList(
size - MAX_HISTORY_EVENTS,
size));
}
} }
if (isRunning()) { if (isRunning()) {
this.schedule(EVENT_DISPATCH_PERIOD); this.schedule(EVENT_DISPATCH_PERIOD);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册