#include <common/optional.h>
#include <lttng/action/action-internal.h>
#include <lttng/action/group.h>
+#include <lttng/action/notify-internal.h>
#include <lttng/action/notify.h>
#include <lttng/action/rotate-session.h>
#include <lttng/action/snapshot-session.h>
#include <lttng/action/start-session.h>
#include <lttng/action/stop-session.h>
#include <lttng/condition/evaluation.h>
+#include <lttng/condition/on-event-internal.h>
#include <lttng/lttng-error.h>
#include <lttng/trigger/trigger-internal.h>
#include <pthread.h>
lttng_trigger_get_const_condition(work_item->trigger),
work_item->evaluation,
lttng_trigger_get_credentials(work_item->trigger),
- LTTNG_OPTIONAL_GET_PTR(work_item->object_creds),
+ work_item->object_creds.is_set ?
+ &(work_item->object_creds.value) :
+ NULL,
client_handle_transmission_status, executor);
}
session_lock_list();
session = session_find_by_name(session_name);
if (!session) {
- DBG("Failed to find session `%s` by name while executing `%s` action of trigger `%p`",
+ DBG("Failed to find session `%s` by name while executing `%s` action of trigger `%s`",
session_name, get_action_name(action),
- work_item->trigger);
+ get_trigger_name(work_item->trigger));
goto error_unlock_list;
}
assert(action_type != LTTNG_ACTION_TYPE_UNKNOWN);
- DBG("Executing action `%s` of trigger `%p` action work item %" PRIu64,
+ DBG("Executing action `%s` of trigger `%s` action work item %" PRIu64,
get_action_name(action),
get_trigger_name(work_item->trigger),
work_item->id);
{
struct action_executor *executor = _data;
+ pthread_mutex_lock(&executor->work.lock);
executor->should_quit = true;
pthread_cond_signal(&executor->work.cond);
+ pthread_mutex_unlock(&executor->work.lock);
return true;
}
work_item = zmalloc(sizeof(*work_item));
if (!work_item) {
- PERROR("Failed to allocate action executor work item on behalf of trigger `%p`",
+ PERROR("Failed to allocate action executor work item on behalf of trigger `%s`",
get_trigger_name(trigger));
executor_status = ACTION_EXECUTOR_STATUS_ERROR;
goto error_unlock;
evaluation = NULL;
cds_list_add_tail(&work_item->list_node, &executor->work.list);
executor->work.pending_count++;
- DBG("Enqueued action for trigger `%p` as work item %" PRIu64,
+ DBG("Enqueued action for trigger `%s` as work item #%" PRIu64,
get_trigger_name(trigger), work_item_id);
signal = true;
error_unlock:
- pthread_mutex_unlock(&executor->work.lock);
if (signal) {
pthread_cond_signal(&executor->work.cond);
}
+ pthread_mutex_unlock(&executor->work.lock);
lttng_evaluation_destroy(evaluation);
return executor_status;