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>
if (cpu == null) {
return;
}
if (cpu == null) {
return;
}
- if (!event.getName().equals(fSchedSwitch)) {
- return;
- }
ITmfStateSystemBuilder ssb = getStateSystemBuilder();
if (ssb == null) {
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;
+ }
- 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);
int nextTid = ((Long) event.getContent().getField(fNextTid).getValue()).intValue();
final TmfStateValue value = TmfStateValue.newValueInt(nextTid);
ssb.modifyAttribute(event.getTimestamp().toNanos(), value, cpuQuark);
Integer tid = null;
try {
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();
ITmfStateValue value = stateSystem.querySingleState(time, cpuQuark).getStateValue();
if (value.getType().equals(Type.INTEGER)) {
tid = value.unboxInt();