GP-0: Trace recorder should only release trace once.

This commit is contained in:
Dan 2021-12-21 09:10:30 -05:00
parent 7f2675c9c1
commit 00b8e14f37

View file

@ -81,6 +81,7 @@ public class DefaultTraceRecorder implements TraceRecorder {
public DefaultTraceRecorder(DebuggerModelServicePlugin plugin, Trace trace, TargetObject target,
DefaultDebuggerTargetTraceMapper mapper) {
trace.addConsumer(this);
this.plugin = plugin;
this.tool = plugin.getTool();
this.trace = trace;
@ -99,9 +100,6 @@ public class DefaultTraceRecorder implements TraceRecorder {
this.symbolRecorder = new DefaultSymbolRecorder(this);
this.timeRecorder = new DefaultTimeRecorder(this);
this.objectManager = new TraceObjectManager(target, mapper, this);
trace.addConsumer(this);
}
/*---------------- OBJECT MANAGER METHODS -------------------*/
@ -358,9 +356,14 @@ public class DefaultTraceRecorder implements TraceRecorder {
}
protected void invalidate() {
valid = false;
objectManager.disposeModelListeners();
trace.release(this);
synchronized (this) {
if (!valid) {
return;
}
valid = false;
trace.release(this);
}
}
/*---------------- FOCUS-SUPPORT METHODS -------------------*/