From 08ec9c30b2600608d71b3fc1f76824f2fb7fa229 Mon Sep 17 00:00:00 2001 From: Christophe Bedard Date: Thu, 13 Jun 2019 13:42:48 +0200 Subject: [PATCH] Add option for raising exception if event field not found --- tracetools_analysis/analysis/handler.py | 8 ++++++-- tracetools_analysis/analysis/lttng_models.py | 8 ++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) 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):