diff --git a/tracetools_analysis/analysis/handler.py b/tracetools_analysis/analysis/handler.py index 350d2fe..84b1859 100644 --- a/tracetools_analysis/analysis/handler.py +++ b/tracetools_analysis/analysis/handler.py @@ -31,10 +31,14 @@ class EventHandler(): if handler_function is not None: pid = lttng_models.get_field(event, 'vpid', - default=lttng_models.get_field(event, 'pid')) + default=lttng_models.get_field(event, + 'pid', + raise_if_not_found=False)) tid = lttng_models.get_field(event, 'vtid', - default=lttng_models.get_field(event, 'tid')) + default=lttng_models.get_field(event, + 'tid', + raise_if_not_found=False)) timestamp = lttng_models.get_field(event, '_timestamp') procname = lttng_models.get_field(event, 'procname') metadata = lttng_models.EventMetadata(event_name, pid, tid, timestamp, procname) diff --git a/tracetools_analysis/analysis/lttng_models.py b/tracetools_analysis/analysis/lttng_models.py index d0cb096..7562d2f 100644 --- a/tracetools_analysis/analysis/lttng_models.py +++ b/tracetools_analysis/analysis/lttng_models.py @@ -1,8 +1,12 @@ # Model objects for LTTng traces/events -def get_field(event, field_name, default=None): - return event.get(field_name, default) +def get_field(event, field_name, default=None, raise_if_not_found=True): + field_value = event.get(field_name, default) + # If enabled, raise exception as soon as possible to avoid headaches + if raise_if_not_found and field_value is None: + raise AttributeError(f'event field "{field_name}" not found!') + return field_value def get_name(event):