From b006f85d9d07af970f24cfa5ab077bfe599d75c9 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=A9mie=20Galarneau?= Date: Thu, 15 Apr 2021 13:21:14 -0400 Subject: [PATCH] Remove error count property of lttng_condition_on_event MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Errors related to dropped tracer messages are not reported through the error query interface. Signed-off-by: Jérémie Galarneau Change-Id: Ib5f8bf841f37d98b582209abb44ab8a26c8fbbc6 --- include/lttng/condition/on-event-internal.h | 9 - .../notification-thread-events.c | 40 ----- src/bin/lttng-sessiond/ust-app.c | 14 -- src/bin/lttng-sessiond/ust-app.h | 2 - src/common/conditions/on-event.c | 169 ------------------ tests/unit/test_condition.c | 12 +- 6 files changed, 1 insertion(+), 245 deletions(-) diff --git a/include/lttng/condition/on-event-internal.h b/include/lttng/condition/on-event-internal.h index 1ccabf3f4..29a2b27b5 100644 --- a/include/lttng/condition/on-event-internal.h +++ b/include/lttng/condition/on-event-internal.h @@ -25,7 +25,6 @@ struct lttng_condition_on_event { struct lttng_condition parent; struct lttng_event_rule *rule; - LTTNG_OPTIONAL(uint64_t) error_count; /* * Internal use only. * Error accounting counter index. @@ -71,14 +70,6 @@ LTTNG_HIDDEN uint64_t lttng_condition_on_event_get_error_counter_index( const struct lttng_condition *condition); -LTTNG_HIDDEN -uint64_t lttng_condition_on_event_get_error_count( - const struct lttng_condition *condition); - -LTTNG_HIDDEN -void lttng_condition_on_event_set_error_count(struct lttng_condition *condition, - uint64_t error_count); - LTTNG_HIDDEN struct lttng_evaluation *lttng_evaluation_on_event_create( const struct lttng_condition_on_event *condition, diff --git a/src/bin/lttng-sessiond/notification-thread-events.c b/src/bin/lttng-sessiond/notification-thread-events.c index 5cccc008e..23614b0db 100644 --- a/src/bin/lttng-sessiond/notification-thread-events.c +++ b/src/bin/lttng-sessiond/notification-thread-events.c @@ -2174,40 +2174,6 @@ end: return ret; } -static -int condition_on_event_update_error_count(struct lttng_trigger *trigger) -{ - int ret = 0; - uint64_t error_count = 0; - struct lttng_condition *condition; - enum event_notifier_error_accounting_status status; - - condition = lttng_trigger_get_condition(trigger); - assert(lttng_condition_get_type(condition) == - LTTNG_CONDITION_TYPE_ON_EVENT); - - status = event_notifier_error_accounting_get_count(trigger, &error_count); - if (status != EVENT_NOTIFIER_ERROR_ACCOUNTING_STATUS_OK) { - uid_t trigger_owner_uid; - const char *trigger_name; - const enum lttng_trigger_status trigger_status = - lttng_trigger_get_owner_uid( - trigger, &trigger_owner_uid); - - assert(trigger_status == LTTNG_TRIGGER_STATUS_OK); - if (lttng_trigger_get_name(trigger, &trigger_name) != LTTNG_TRIGGER_STATUS_OK) { - trigger_name = "(unnamed)"; - } - - ERR("Failed to get event notifier error count of trigger for update: trigger owner = %d, trigger name = '%s'", - trigger_owner_uid, trigger_name); - ret = -1; - } - - lttng_condition_on_event_set_error_count(condition, error_count); - return ret; -} - int handle_notification_thread_remove_tracer_event_source_no_result( struct notification_thread_state *state, int tracer_event_source_fd) @@ -2255,12 +2221,6 @@ static int handle_notification_thread_command_list_triggers( continue; } - if (lttng_trigger_needs_tracer_notifier(trigger_ht_element->trigger)) { - ret = condition_on_event_update_error_count( - trigger_ht_element->trigger); - assert(!ret); - } - ret = lttng_triggers_add(local_triggers, trigger_ht_element->trigger); if (ret < 0) { diff --git a/src/bin/lttng-sessiond/ust-app.c b/src/bin/lttng-sessiond/ust-app.c index 3af7e3947..54cd14ee3 100644 --- a/src/bin/lttng-sessiond/ust-app.c +++ b/src/bin/lttng-sessiond/ust-app.c @@ -5991,20 +5991,6 @@ void ust_app_global_update_all_event_notifier_rules(void) rcu_read_unlock(); } -void ust_app_update_event_notifier_error_count(struct lttng_trigger *trigger) -{ - uint64_t error_count = 0; - enum event_notifier_error_accounting_status status; - struct lttng_condition *condition = lttng_trigger_get_condition(trigger); - - status = event_notifier_error_accounting_get_count(trigger, &error_count); - if (status != EVENT_NOTIFIER_ERROR_ACCOUNTING_STATUS_OK) { - ERR("Error getting trigger error count."); - } - - lttng_condition_on_event_set_error_count(condition, error_count); -} - /* * Add context to a specific channel for global UST domain. */ diff --git a/src/bin/lttng-sessiond/ust-app.h b/src/bin/lttng-sessiond/ust-app.h index 3dfb56215..6cdb261ae 100644 --- a/src/bin/lttng-sessiond/ust-app.h +++ b/src/bin/lttng-sessiond/ust-app.h @@ -360,8 +360,6 @@ void ust_app_global_update_all(struct ltt_ust_session *usess); void ust_app_global_update_event_notifier_rules(struct ust_app *app); void ust_app_global_update_all_event_notifier_rules(void); -void ust_app_update_event_notifier_error_count(struct lttng_trigger *trigger); - void ust_app_clean_list(void); int ust_app_ht_alloc(void); struct ust_app *ust_app_find_by_pid(pid_t pid); diff --git a/src/common/conditions/on-event.c b/src/common/conditions/on-event.c index 9a9e7620a..d86563b26 100644 --- a/src/common/conditions/on-event.c +++ b/src/common/conditions/on-event.c @@ -27,8 +27,6 @@ (lttng_condition_get_type(condition) == \ LTTNG_CONDITION_TYPE_ON_EVENT) -typedef LTTNG_OPTIONAL(uint64_t) optional_uint64; - static bool is_on_event_evaluation(const struct lttng_evaluation *evaluation) { enum lttng_condition_type type = lttng_evaluation_get_type(evaluation); @@ -286,7 +284,6 @@ static int lttng_condition_on_event_serialize( enum lttng_condition_status status; /* Used for iteration and communication (size matters). */ uint32_t i, capture_descr_count; - LTTNG_OPTIONAL_COMM(typeof(on_event_condition->error_count.value)) error_count_comm; if (!condition || !IS_ON_EVENT_CONDITION(condition)) { ret = -1; @@ -303,30 +300,6 @@ static int lttng_condition_on_event_serialize( goto end; } - error_count_comm = (typeof(error_count_comm)) { - .is_set = on_event_condition->error_count.is_set, - .value = on_event_condition->error_count.value, - }; - - { - char error_count_value_str[MAX_INT_DEC_LEN(on_event_condition->error_count.value)]; - const int fmt_ret = snprintf(error_count_value_str, - sizeof(error_count_value_str), "%" PRIu64, - on_event_condition->error_count.value); - - assert(fmt_ret > 0); - DBG("Serializing event rule condition's error count: value = %s", - on_event_condition->error_count.is_set ? - error_count_value_str : - "(unset)"); - } - - ret = lttng_dynamic_buffer_append(&payload->buffer, &error_count_comm, - sizeof(error_count_comm)); - if (ret) { - goto end; - } - status = lttng_condition_on_event_get_capture_descriptor_count( condition, &capture_descr_count); if (status != LTTNG_CONDITION_STATUS_OK) { @@ -533,112 +506,6 @@ end: return ret; } -static -int optional_uint_from_buffer( - const struct lttng_buffer_view *view, - size_t inner_value_size, - size_t *offset, - optional_uint64 *value) -{ - int ret; - - /* - * Those cases are identical except for the optional's inner type width. - */ - switch (inner_value_size) { - case sizeof(uint8_t): - { - LTTNG_OPTIONAL_COMM(uint8_t) *value_comm; - const struct lttng_buffer_view optional_uint_view = - lttng_buffer_view_from_view(view, *offset, - sizeof(*value_comm)); - - if (!lttng_buffer_view_is_valid(&optional_uint_view)) { - ret = -1; - goto end; - } - - value_comm = (typeof(value_comm)) optional_uint_view.data; - *value = (typeof(*value)) { - .is_set = value_comm->is_set, - .value = (uint64_t) value_comm->value, - }; - - *offset += sizeof(*value_comm); - break; - } - case sizeof(uint16_t): - { - LTTNG_OPTIONAL_COMM(uint16_t) *value_comm; - const struct lttng_buffer_view optional_uint_view = - lttng_buffer_view_from_view(view, *offset, - sizeof(*value_comm)); - - if (!lttng_buffer_view_is_valid(&optional_uint_view)) { - ret = -1; - goto end; - } - - value_comm = (typeof(value_comm)) optional_uint_view.data; - *value = (typeof(*value)) { - .is_set = value_comm->is_set, - .value = (uint64_t) value_comm->value, - }; - - *offset += sizeof(*value_comm); - break; - } - case sizeof(uint32_t): - { - LTTNG_OPTIONAL_COMM(uint32_t) *value_comm; - const struct lttng_buffer_view optional_uint_view = - lttng_buffer_view_from_view(view, *offset, - sizeof(*value_comm)); - - if (!lttng_buffer_view_is_valid(&optional_uint_view)) { - ret = -1; - goto end; - } - - value_comm = (typeof(value_comm)) optional_uint_view.data; - *value = (typeof(*value)) { - .is_set = value_comm->is_set, - .value = (uint64_t) value_comm->value, - }; - - *offset += sizeof(*value_comm); - break; - } - case sizeof(uint64_t): - { - LTTNG_OPTIONAL_COMM(uint64_t) *value_comm; - const struct lttng_buffer_view optional_uint_view = - lttng_buffer_view_from_view(view, *offset, - sizeof(*value_comm)); - - if (!lttng_buffer_view_is_valid(&optional_uint_view)) { - ret = -1; - goto end; - } - - value_comm = (typeof(value_comm)) optional_uint_view.data; - *value = (typeof(*value)) { - .is_set = value_comm->is_set, - .value = (uint64_t) value_comm->value, - }; - - *offset += sizeof(*value_comm); - break; - } - default: - abort(); - } - - ret = 0; -end: - return ret; -} - static const char *str_from_buffer(const struct lttng_buffer_view *view, size_t *offset) @@ -763,12 +630,10 @@ ssize_t lttng_condition_on_event_create_from_payload( struct lttng_payload_view *view, struct lttng_condition **_condition) { - int optional_ret; ssize_t consumed_length; size_t offset = 0; ssize_t event_rule_length; uint32_t i, capture_descr_count; - optional_uint64 error_count; struct lttng_condition *condition = NULL; struct lttng_event_rule *event_rule = NULL; @@ -791,25 +656,12 @@ ssize_t lttng_condition_on_event_create_from_payload( offset += event_rule_length; - /* Error count. */ - optional_ret = optional_uint_from_buffer(&view->buffer, - sizeof(error_count.value), &offset, - &error_count); - if (optional_ret) { - goto error; - } - /* Create condition (no capture descriptors yet) at this point */ condition = lttng_condition_on_event_create(event_rule); if (!condition) { goto error; } - if (error_count.is_set) { - lttng_condition_on_event_set_error_count( - condition, error_count.value); - } - /* Capture descriptor count. */ assert(event_rule_length >= 0); capture_descr_count = uint_from_buffer(&view->buffer, sizeof(uint32_t), &offset); @@ -911,27 +763,6 @@ uint64_t lttng_condition_on_event_get_error_counter_index( return LTTNG_OPTIONAL_GET(on_event_cond->error_counter_index); } -LTTNG_HIDDEN -void lttng_condition_on_event_set_error_count(struct lttng_condition *condition, - uint64_t error_count) -{ - struct lttng_condition_on_event *on_event_cond = - container_of(condition, - struct lttng_condition_on_event, parent); - - LTTNG_OPTIONAL_SET(&on_event_cond->error_count, error_count); -} - -uint64_t lttng_condition_on_event_get_error_count( - const struct lttng_condition *condition) -{ - const struct lttng_condition_on_event *on_event_cond = - container_of(condition, - const struct lttng_condition_on_event, parent); - - return LTTNG_OPTIONAL_GET(on_event_cond->error_count); -} - enum lttng_condition_status lttng_condition_on_event_append_capture_descriptor( struct lttng_condition *condition, diff --git a/tests/unit/test_condition.c b/tests/unit/test_condition.c index f4bc040d0..e2e35a3bc 100644 --- a/tests/unit/test_condition.c +++ b/tests/unit/test_condition.c @@ -32,7 +32,7 @@ int lttng_opt_quiet = 1; int lttng_opt_verbose; int lttng_opt_mi; -#define NUM_TESTS 14 +#define NUM_TESTS 13 static void test_condition_event_rule(void) @@ -47,7 +47,6 @@ void test_condition_event_rule(void) const char *pattern="my_event_*"; const char *filter="msg_id == 23 && size >= 2048"; const char *exclusions[] = { "my_event_test1", "my_event_test2", "my_event_test3" }; - uint64_t _error_count = 420, error_count; struct lttng_log_level_rule *log_level_rule_at_least_as_severe = NULL; struct lttng_payload buffer; @@ -82,9 +81,6 @@ void test_condition_event_rule(void) condition = lttng_condition_on_event_create(tracepoint); ok(condition, "Created condition"); - /* Set the error count information. */ - lttng_condition_on_event_set_error_count(condition, _error_count); - condition_status = lttng_condition_on_event_get_rule( condition, &tracepoint_tmp); ok(condition_status == LTTNG_CONDITION_STATUS_OK, @@ -107,12 +103,6 @@ void test_condition_event_rule(void) ok(lttng_condition_is_equal(condition, condition_from_buffer), "Serialized and de-serialized conditions are equal"); - /* - * Error count info is not considered in is_equal; test it separately. - */ - error_count = lttng_condition_on_event_get_error_count(condition_from_buffer); - ok(error_count == _error_count, "Error count is the same. Got %" PRIu64 " Expected %" PRIu64, error_count, _error_count); - lttng_payload_reset(&buffer); lttng_event_rule_destroy(tracepoint); lttng_condition_destroy(condition); -- 2.34.1