TMF: Bug 454283: Initialize all analysis modules before executing them
authorGeneviève Bastien <gbastien+lttng@versatic.net>
Tue, 16 Jun 2015 19:30:21 +0000 (15:30 -0400)
committerGenevieve Bastien <gbastien+lttng@versatic.net>
Thu, 7 Jan 2016 01:12:37 +0000 (20:12 -0500)
Analysis modules are first initialized, then automatic ones are executed when
the traceOpened signal is received. This makes sure any dependent module
exists for a trace before the execution takes place.

Change-Id: Ica4d77ca5805b37ec73a42af2b9bc5f15c9e21cd
Signed-off-by: Geneviève Bastien <gbastien+lttng@versatic.net>
Reviewed-on: https://git.eclipse.org/r/37698
Reviewed-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
Reviewed-by: Hudson CI
tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/trace/TmfTrace.java

index 7876c3315fc8f30fce2e93d992cebc6c3867329f..c13f924ddb052ffb0b6592808c67e7510bc30f46 100644 (file)
@@ -287,6 +287,7 @@ public abstract class TmfTrace extends TmfEventProvider implements ITmfTrace, IT
     protected IStatus executeAnalysis() {
         MultiStatus status = new MultiStatus(Activator.PLUGIN_ID, IStatus.OK, null, null);
 
+        /* First modules are initialized */
         Multimap<String, IAnalysisModuleHelper> modules = TmfAnalysisManager.getAnalysisModules();
         for (IAnalysisModuleHelper helper : modules.values()) {
             try {
@@ -295,13 +296,17 @@ public abstract class TmfTrace extends TmfEventProvider implements ITmfTrace, IT
                     continue;
                 }
                 fAnalysisModules.put(module.getId(), module);
-                if (module.isAutomatic()) {
-                    status.add(module.schedule());
-                }
             } catch (TmfAnalysisException e) {
                 status.add(new Status(IStatus.WARNING, Activator.PLUGIN_ID, e.getMessage()));
             }
         }
+
+        /* Once all modules are initialized, automatic modules are executed */
+        for (IAnalysisModule module : getAnalysisModules()) {
+            if (module.isAutomatic()) {
+                status.add(module.schedule());
+            }
+        }
         return status;
     }
 
This page took 0.026861 seconds and 5 git commands to generate.