bt2: make log functions clear error indicator
authorSimon Marchi <simon.marchi@efficios.com>
Sat, 19 Oct 2019 03:57:30 +0000 (23:57 -0400)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Wed, 30 Oct 2019 19:14:52 +0000 (15:14 -0400)
In all call sites of logw_exception and loge_exception_append_cause, we
clear the error indicator afterwards (call PyErr_Clear).  Make these
functions clear the error indicator themselves instead, and rename them
accordingly.  This could help avoid forgetting to clear the indicator in
the future.

Change-Id: I22855c1bb4af0e5b85bafc3f1009589ee08c0564
Signed-off-by: Simon Marchi <simon.marchi@efficios.com>
Reviewed-on: https://review.lttng.org/c/babeltrace/+/2225
Reviewed-by: Francis Deslauriers <francis.deslauriers@efficios.com>
src/bindings/python/bt2/bt2/native_bt_component_class.i.h
src/bindings/python/bt2/bt2/native_bt_graph.i.h
src/bindings/python/bt2/bt2/native_bt_log_and_append_error.h
src/bindings/python/bt2/bt2/native_bt_trace.i.h
src/bindings/python/bt2/bt2/native_bt_trace_class.i.h

index 23e7d06a0dbcc5f1c831fa7b1bff588f490c2ef7..a80d059d052b7964d16d4f48ea4933053ca1d57a 100644 (file)
@@ -505,16 +505,15 @@ void component_class_finalize(bt_self_component *self_component)
                bt_logging_level log_level = get_self_component_log_level(
                        self_component);
 
-               BT_COMP_LOG_CUR_LVL(BT_LOG_WARNING, log_level, self_component,
-                       "User component's _user_finalize() method raised an exception: ignoring:");
-               logw_exception(log_level);
-
                /*
                 * Ignore any exception raised by the _user_finalize() method
                 * because it won't change anything at this point: the component
                 * is being destroyed anyway.
                 */
-               PyErr_Clear();
+               BT_COMP_LOG_CUR_LVL(BT_LOG_WARNING, log_level, self_component,
+                       "User component's _user_finalize() method raised an exception: ignoring:");
+               logw_exception_clear(log_level);
+
                goto end;
        }
 
@@ -1181,17 +1180,15 @@ void component_class_message_iterator_finalize(
                bt_logging_level log_level = get_self_component_log_level(
                        self_comp);
 
-               BT_COMP_LOG_CUR_LVL(BT_LOG_WARNING, log_level, self_comp,
-                       "User's _user_finalize() method raised an exception: ignoring:");
-               logw_exception(get_self_message_iterator_log_level(
-                       message_iterator));
-
                /*
                 * Ignore any exception raised by the _user_finalize() method
                 * because it won't change anything at this point: the component
                 * is being destroyed anyway.
                 */
-               PyErr_Clear();
+               BT_COMP_LOG_CUR_LVL(BT_LOG_WARNING, log_level, self_comp,
+                       "User's _user_finalize() method raised an exception: ignoring:");
+               logw_exception_clear(get_self_message_iterator_log_level(
+                       message_iterator));
        }
 
        Py_XDECREF(py_method_result);
index 9725b957b30b682bb34b6fa25d86843ac5e3c54b..e310e53bf245f9c6b5fd106b310c351125a8575d 100644 (file)
@@ -60,10 +60,9 @@ static bt_graph_listener_func_status port_added_listener(
        py_res = PyObject_CallFunction(py_callable, "(OiOi)",
                py_component_ptr, component_class_type, py_port_ptr, port_type);
        if (!py_res) {
-               loge_exception_append_cause(
+               loge_exception_append_cause_clear(
                        "Graph's port added listener (Python)",
                        BT_LOG_OUTPUT_LEVEL);
-               PyErr_Clear();
                status = __BT_FUNC_STATUS_ERROR;
                goto end;
        }
@@ -305,10 +304,9 @@ bt_graph_listener_func_status ports_connected_listener(
                py_downstream_component_ptr, downstream_component_class_type,
                py_downstream_port_ptr);
        if (!py_res) {
-               loge_exception_append_cause(
+               loge_exception_append_cause_clear(
                        "Graph's port connected listener (Python)",
                        BT_LOG_OUTPUT_LEVEL);
-               PyErr_Clear();
                status = __BT_FUNC_STATUS_ERROR;
                goto end;
        }
index 11b6e414e1ec435e99a7575c912e84eabc2cb090..77b4c77aa2d6c5002761b31125609c41903ce562 100644 (file)
@@ -228,15 +228,17 @@ bt_logging_level get_self_message_iterator_log_level(
 }
 
 static inline
-void loge_exception_append_cause(const char *module_name, int active_log_level)
+void loge_exception_append_cause_clear(const char *module_name, int active_log_level)
 {
        log_exception_and_maybe_append_cause(BT_LOG_ERROR, active_log_level,
                true, NULL, NULL, NULL, module_name);
+       PyErr_Clear();
 }
 
 static inline
-void logw_exception(int active_log_level)
+void logw_exception_clear(int active_log_level)
 {
        log_exception_and_maybe_append_cause(BT_LOG_WARNING, active_log_level,
                false, NULL, NULL, NULL, NULL);
+       PyErr_Clear();
 }
index c525fa11e1e16cfc232f75517cfdde993d21dd61..e8cd75b7c891f622c3ba0f0e1c446dd54b46ea67 100644 (file)
@@ -37,8 +37,7 @@ trace_destroyed_listener(const bt_trace *trace, void *py_callable)
 
        py_res = PyObject_CallFunction(py_callable, "(O)", py_trace_ptr);
        if (!py_res) {
-               logw_exception(BT_LOG_OUTPUT_LEVEL);
-               PyErr_Clear();
+               logw_exception_clear(BT_LOG_OUTPUT_LEVEL);
                goto end;
        }
 
index 329fda6555c04df0eae3e3b01226036bf37010c3..1e1eb3c1b2ae4b4af8bfdad8993f5b41b8e32d5f 100644 (file)
@@ -37,8 +37,7 @@ trace_class_destroyed_listener(const bt_trace_class *trace_class, void *py_calla
 
        py_res = PyObject_CallFunction(py_callable, "(O)", py_trace_class_ptr);
        if (!py_res) {
-               logw_exception(BT_LOG_OUTPUT_LEVEL);
-               PyErr_Clear();
+               logw_exception_clear(BT_LOG_OUTPUT_LEVEL);
                goto end;
        }
 
This page took 0.027899 seconds and 4 git commands to generate.