The trace_archive_id argument of relayd_add_stream() is not
forwarded to the "2.11" implementation of the command. This means
that all streams on the relayd are created in the "chunk_id == 0"
EPOCH.
This may cause remote rotations to never complete when a stream
is created while a rotation is ongoing. In such a case, the
stream's chunk_id would be 0, but it would not have a rotation
sequence number. This would cause the rotation completion check
to always return that the rotation is "ongoing".
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
static int relayd_add_stream_2_11(struct lttcomm_relayd_sock *rsock,
const char *channel_name, const char *pathname,
static int relayd_add_stream_2_11(struct lttcomm_relayd_sock *rsock,
const char *channel_name, const char *pathname,
- uint64_t tracefile_size, uint64_t tracefile_count)
+ uint64_t tracefile_size, uint64_t tracefile_count,
+ uint64_t trace_archive_id)
{
int ret;
struct lttcomm_relayd_add_stream_2_11 *msg = NULL;
{
int ret;
struct lttcomm_relayd_add_stream_2_11 *msg = NULL;
msg->tracefile_size = htobe64(tracefile_size);
msg->tracefile_count = htobe64(tracefile_count);
msg->tracefile_size = htobe64(tracefile_size);
msg->tracefile_count = htobe64(tracefile_count);
+ msg->trace_archive_id = htobe64(trace_archive_id);
/* Send command */
ret = send_command(rsock, RELAYD_ADD_STREAM, (void *) msg, msg_length, 0);
/* Send command */
ret = send_command(rsock, RELAYD_ADD_STREAM, (void *) msg, msg_length, 0);
} else {
/* From 2.11 to ...*/
ret = relayd_add_stream_2_11(rsock, channel_name, pathname,
} else {
/* From 2.11 to ...*/
ret = relayd_add_stream_2_11(rsock, channel_name, pathname,
- tracefile_size, tracefile_count);
+ tracefile_size, tracefile_count,
+ trace_archive_id);