From 11f6ce94d8fb73f017888681aaba5d7df55fc735 Mon Sep 17 00:00:00 2001 From: Jonathan Rajotte Date: Thu, 16 Apr 2020 16:31:16 -0400 Subject: [PATCH] Use bytecode seqnum to force the evaluation ordering of capture bytecode MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit This ensure that the resulting payload is ordered as expected. Signed-off-by: Jonathan Rajotte Signed-off-by: Jérémie Galarneau Change-Id: I74c87cdc7098030e05b060f287561b4177739cc1 Depends-on: lttng-ust: I8423c510bf6af2f9bf85256e8d6f931d36f7054b --- src/bin/lttng-sessiond/ust-app.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/bin/lttng-sessiond/ust-app.c b/src/bin/lttng-sessiond/ust-app.c index cc027be99..43864bd0f 100644 --- a/src/bin/lttng-sessiond/ust-app.c +++ b/src/bin/lttng-sessiond/ust-app.c @@ -1579,9 +1579,12 @@ error: /* * Set a capture bytecode for the passed object. + * The sequence number enforces the ordering at runtime and on reception of + * the captured payloads. */ static int set_ust_capture(struct ust_app *app, const struct lttng_bytecode *bytecode, + unsigned int capture_seqnum, struct lttng_ust_object_data *ust_object) { int ret; @@ -1595,6 +1598,11 @@ static int set_ust_capture(struct ust_app *app, goto error; } + /* + * Set the sequence number to ensure the capture of fields is ordered. + */ + ust_bytecode->seqnum = capture_seqnum; + pthread_mutex_lock(&app->sock_lock); ret = ustctl_set_capture(app->sock, ust_bytecode, ust_object); @@ -2159,7 +2167,7 @@ static int create_ust_event_notifier(struct ust_app *app, lttng_condition_event_rule_get_capture_bytecode_at_index( condition, i); - ret = set_ust_capture(app, capture_bytecode, + ret = set_ust_capture(app, capture_bytecode, i, ua_event_notifier_rule->obj); if (ret < 0) { goto error; -- 2.34.1