diff --git a/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/trace/TmfTrace.java b/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/trace/TmfTrace.java index d7b5d157b2..35f72edd68 100644 --- a/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/trace/TmfTrace.java +++ b/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/trace/TmfTrace.java @@ -850,6 +850,19 @@ private IStatus refreshAnalysisModulesImpl() { Set oldAnalysisModulesKeys = new HashSet<>(previousAnalysisModules.keySet()); Set keys = new HashSet<>(newAnalysisModules.keySet()); + /* Get all modules in the fAnalysisModules Map to allow + for dependent analysis builds */ + synchronized(fAnalysisModules){ + for (String key : keys) { + if (!fAnalysisModules.containsKey(key)) { + IAnalysisModule module = newAnalysisModules.get(key); + if (module != null) { + fAnalysisModules.put(key, module); + } + } + } + } + for (String key : keys) { IAnalysisModule module = newAnalysisModules.remove(key); if (!oldAnalysisModulesKeys.contains(key)) { @@ -861,6 +874,8 @@ private IStatus refreshAnalysisModulesImpl() { } else { oldAnalysisModulesKeys.remove(key); if (module != null) { + /* Remove the newly computed analysis module since it already + was done previously*/ module.dispose(); } }