linux: make TID analysis handle no TID more gracefully - Bug 491275
authorMatthew Khouzam <matthew.khouzam@ericsson.com>
Thu, 7 Apr 2016 20:19:12 +0000 (16:19 -0400)
committerMatthew Khouzam <matthew.khouzam@ericsson.com>
Fri, 8 Apr 2016 20:53:25 +0000 (16:53 -0400)
This stops AttributNotFoundExceptions from being thrown in the beginning
of a trace.

Change-Id: I917fa81b3882ce3c98f23f782a87a6f7f8947b10
Signed-off-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
Reviewed-on: https://git.eclipse.org/r/70170
Reviewed-by: Hudson CI
Reviewed-by: Patrick Tasse <patrick.tasse@gmail.com>
Tested-by: Patrick Tasse <patrick.tasse@gmail.com>
analysis/org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/analysis/os/linux/core/tid/ActiveTidStateProvider.java
analysis/org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/analysis/os/linux/core/tid/TidAnalysisModule.java

index b15bcf9339091cc2f985b94f710825a05508ef10..d9f9dee5ff1a0397d89a92a5c3a59e6f8690aabf 100644 (file)
@@ -72,20 +72,21 @@ class ActiveTidStateProvider extends AbstractTmfStateProvider {
         if (cpu == null) {
             return;
         }
-        if (!event.getName().equals(fSchedSwitch)) {
-            return;
-        }
         ITmfStateSystemBuilder ssb = getStateSystemBuilder();
         if (ssb == null) {
             return;
         }
+        Integer cpuQuark = fCpuNumToQuark.get(cpu);
+        if (cpuQuark == null) {
+            // this will only happen once
+            String cpuAttributeName = NonNullUtils.nullToEmptyString(cpu);
+            cpuQuark = ssb.getQuarkAbsoluteAndAdd(cpuAttributeName);
+            fCpuNumToQuark.put(cpu, cpuQuark);
+        }
+        if (!event.getName().equals(fSchedSwitch)) {
+            return;
+        }
         try {
-            Integer cpuQuark = fCpuNumToQuark.get(cpu);
-            if (cpuQuark == null) {
-                String cpuAttributeName = NonNullUtils.nullToEmptyString(cpu);
-                cpuQuark = ssb.getQuarkAbsoluteAndAdd(cpuAttributeName);
-                fCpuNumToQuark.put(cpu, cpuQuark);
-            }
             int nextTid = ((Long) event.getContent().getField(fNextTid).getValue()).intValue();
             final TmfStateValue value = TmfStateValue.newValueInt(nextTid);
             ssb.modifyAttribute(event.getTimestamp().toNanos(), value, cpuQuark);
index 6aadd40b31a1132a1663a512c7c27ec3b31631e3..b4f63a9e174d2a59201189ae5de62c7c4b4cfe61 100644 (file)
@@ -82,7 +82,10 @@ public class TidAnalysisModule extends TmfStateSystemAnalysisModule {
 
         Integer tid = null;
         try {
-            int cpuQuark = stateSystem.getQuarkAbsolute(Integer.toString(cpu));
+            int cpuQuark = stateSystem.optQuarkAbsolute(Integer.toString(cpu));
+            if (cpuQuark == ITmfStateSystem.INVALID_ATTRIBUTE) {
+                return null;
+            }
             ITmfStateValue value = stateSystem.querySingleState(time, cpuQuark).getStateValue();
             if (value.getType().equals(Type.INTEGER)) {
                 tid = value.unboxInt();
This page took 0.025259 seconds and 5 git commands to generate.