Skip to content

Commit 31c62b1

Browse files
committed
tmf:refresh open state system analysis
Refresh open state system analysis during fetchTree Signed-off-by: Yassine Ibhir <[email protected]> pr review suggestions
1 parent 398ef83 commit 31c62b1

File tree

1 file changed

+16
-2
lines changed

1 file changed

+16
-2
lines changed

tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/internal/tmf/core/statesystem/provider/StateSystemDataProvider.java

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ public class StateSystemDataProvider extends AbstractTmfTraceDataProvider implem
102102
private final Map<ITmfStateSystem, Long> fSsToId = new HashMap<>();
103103
private final List<ModuleEntryModel> fModuleEntryModelList = new ArrayList<>();
104104

105-
private final Map<ITmfAnalysisModuleWithStateSystems, Boolean> fModulesToStatus = new HashMap<>();
105+
private final Map<ITmfAnalysisModuleWithStateSystems, Boolean> fModulesToStatus = new ConcurrentHashMap<>();
106106

107107
/*
108108
* Entry Builder is a table to stash the entries so it won't duplicate the
@@ -176,8 +176,19 @@ public class StateSystemDataProvider extends AbstractTmfTraceDataProvider implem
176176
*/
177177
public StateSystemDataProvider(ITmfTrace trace) {
178178
super(trace);
179+
updateRegisteredAnalysisModules(trace);
180+
}
181+
182+
private void updateRegisteredAnalysisModules(ITmfTrace trace) {
183+
Set<ITmfAnalysisModuleWithStateSystems> traceAnalyses = new HashSet<>(fModulesToStatus.keySet());
179184
for (ITmfAnalysisModuleWithStateSystems module : Objects.requireNonNull(Iterables.filter(trace.getAnalysisModules(), ITmfAnalysisModuleWithStateSystems.class))) {
180-
fModulesToStatus.put(module, false);
185+
traceAnalyses.remove(module);
186+
fModulesToStatus.putIfAbsent(module, false);
187+
}
188+
189+
// Remove any deleted state system modules
190+
for (ITmfAnalysisModuleWithStateSystems module : traceAnalyses) {
191+
fModulesToStatus.remove(module);
181192
}
182193
}
183194

@@ -506,6 +517,7 @@ public int getQuark() {
506517

507518
@Override
508519
public @NonNull TmfModelResponse<TmfTreeModel<TimeGraphEntryModel>> fetchTree(Map<String, Object> fetchParameters, @Nullable IProgressMonitor monitor) {
520+
509521
// need to create the tree
510522
boolean fetchTreeIsComplete;
511523
synchronized (fEntryBuilder) {
@@ -529,6 +541,8 @@ public int getQuark() {
529541
private boolean addTrace(@Nullable IProgressMonitor monitor) {
530542
boolean fetchTreeIsComplete = true;
531543
ITmfTrace trace = getTrace();
544+
// Add newly created analysis and remove deleted analysis/add newly created analysis
545+
updateRegisteredAnalysisModules(trace);
532546

533547
// look if the trace entry already exist
534548
String traceName = Objects.requireNonNull(trace.getName());

0 commit comments

Comments
 (0)