#include <lttng/event-rule/event-rule-internal.h>
#include <lttng/event-rule/tracepoint.h>
#include <lttng/condition/condition.h>
-#include <lttng/condition/on-event-internal.h>
-#include <lttng/condition/on-event.h>
+#include <lttng/condition/event-rule-matches-internal.h>
+#include <lttng/condition/event-rule-matches.h>
#include <lttng/trigger/trigger-internal.h>
#include <common/sessiond-comm/sessiond-comm.h>
assert(LTTNG_CONDITION_STATUS_OK == lttng_condition_on_event_get_rule(condition, &event_rule));
assert(event_rule);
+ ua_event_notifier_rule->error_counter_index =
+ lttng_condition_on_event_get_error_counter_index(condition);
/* Acquire the event notifier's reference to the trigger. */
lttng_trigger_get(trigger);
event_notifier_error_accounting_status = event_notifier_error_accounting_register_app(app);
if (event_notifier_error_accounting_status != EVENT_NOTIFIER_ERROR_ACCOUNTING_STATUS_OK) {
+ if (event_notifier_error_accounting_status == EVENT_NOTIFIER_ERROR_ACCOUNTING_STATUS_APP_DEAD) {
+ DBG3("Failed to setup event notifier error accounting (application is dead): app socket fd = %d",
+ app->sock);
+ ret = 0;
+ goto error_accounting;
+ }
+
ERR("Failed to setup event notifier error accounting for app");
ret = -1;
- goto error;
+ goto error_accounting;
}
return ret;
+error_accounting:
+ lttng_ret = notification_thread_command_remove_tracer_event_source(
+ the_notification_thread_handle,
+ lttng_pipe_get_readfd(
+ app->event_notifier_group.event_pipe));
+ if (lttng_ret != LTTNG_OK) {
+ ERR("Failed to remove application tracer event source from notification thread");
+ }
+
error:
ustctl_release_object(app->sock, app->event_notifier_group.object);
free(app->event_notifier_group.object);