projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add a hashing function for session rotation conditions
[lttng-tools.git]
/
src
/
bin
/
lttng-relayd
/
main.c
diff --git
a/src/bin/lttng-relayd/main.c
b/src/bin/lttng-relayd/main.c
index cb4643b76f792b3555de1a65174cdf0d73410a06..5a3bcb43fbc8aea671e4cc7b0a3c15451522181e 100644
(file)
--- a/
src/bin/lttng-relayd/main.c
+++ b/
src/bin/lttng-relayd/main.c
@@
-1106,16
+1106,19
@@
static int relay_create_session(const struct lttcomm_relayd_hdr *recv_hdr,
memset(&reply, 0, sizeof(reply));
memset(&reply, 0, sizeof(reply));
- switch (conn->minor) {
- case 1:
- case 2:
- case 3:
- break;
- case 4: /* LTTng sessiond 2.4 */
- default:
+ if (conn->minor < 4) {
+ /* From 2.1 to 2.3 */
+ ret = 0;
+ } else if (conn->minor >= 4 && conn->minor < 11) {
+ /* From 2.4 to 2.10 */
ret = cmd_create_session_2_4(payload, session_name,
hostname, &live_timer, &snapshot);
ret = cmd_create_session_2_4(payload, session_name,
hostname, &live_timer, &snapshot);
+ } else {
+ /* From 2.11 to ... */
+ ret = cmd_create_session_2_11(payload, session_name,
+ hostname, &live_timer, &snapshot);
}
}
+
if (ret < 0) {
goto send_reply;
}
if (ret < 0) {
goto send_reply;
}
@@
-1195,6
+1198,7
@@
static int relay_add_stream(const struct lttcomm_relayd_hdr *recv_hdr,
uint64_t stream_handle = -1ULL;
char *path_name = NULL, *channel_name = NULL;
uint64_t tracefile_size = 0, tracefile_count = 0;
uint64_t stream_handle = -1ULL;
char *path_name = NULL, *channel_name = NULL;
uint64_t tracefile_size = 0, tracefile_count = 0;
+ struct relay_stream_chunk_id stream_chunk_id = { 0 };
if (!session || !conn->version_check_done) {
ERR("Trying to add a stream before version check");
if (!session || !conn->version_check_done) {
ERR("Trying to add a stream before version check");
@@
-1202,17
+1206,22
@@
static int relay_add_stream(const struct lttcomm_relayd_hdr *recv_hdr,
goto end_no_session;
}
goto end_no_session;
}
-
switch (session->minor
) {
-
case 1: /* LTTng sessiond 2.1. Allocates path_name and channel_name.
*/
+
if (session->minor == 1
) {
+
/* For 2.1
*/
ret = cmd_recv_stream_2_1(payload, &path_name,
&channel_name);
ret = cmd_recv_stream_2_1(payload, &path_name,
&channel_name);
- break;
- case 2: /* LTTng sessiond 2.2. Allocates path_name and channel_name. */
- default:
+ } else if (session->minor > 1 && session->minor < 11) {
+ /* From 2.2 to 2.10 */
ret = cmd_recv_stream_2_2(payload, &path_name,
&channel_name, &tracefile_size, &tracefile_count);
ret = cmd_recv_stream_2_2(payload, &path_name,
&channel_name, &tracefile_size, &tracefile_count);
- break;
+ } else {
+ /* From 2.11 to ... */
+ ret = cmd_recv_stream_2_11(payload, &path_name,
+ &channel_name, &tracefile_size, &tracefile_count,
+ &stream_chunk_id.value);
+ stream_chunk_id.is_set = true;
}
}
+
if (ret < 0) {
goto send_reply;
}
if (ret < 0) {
goto send_reply;
}
@@
-1229,7
+1238,8
@@
static int relay_add_stream(const struct lttcomm_relayd_hdr *recv_hdr,
/* We pass ownership of path_name and channel_name. */
stream = stream_create(trace, stream_handle, path_name,
/* We pass ownership of path_name and channel_name. */
stream = stream_create(trace, stream_handle, path_name,
- channel_name, tracefile_size, tracefile_count);
+ channel_name, tracefile_size, tracefile_count,
+ &stream_chunk_id);
path_name = NULL;
channel_name = NULL;
path_name = NULL;
channel_name = NULL;
@@
-2475,7
+2485,8
@@
static int relay_rotate_session_stream(const struct lttcomm_relayd_hdr *recv_hdr
goto end_stream_unlock;
}
goto end_stream_unlock;
}
- stream->chunk_id = stream_info.new_chunk_id;
+ assert(stream->current_chunk_id.is_set);
+ stream->current_chunk_id.value = stream_info.new_chunk_id;
if (stream->is_metadata) {
/*
if (stream->is_metadata) {
/*
@@
-2809,7
+2820,8
@@
int relay_rotate_pending(const struct lttcomm_relayd_hdr *recv_hdr,
chunk_id = be64toh(msg.chunk_id);
chunk_id = be64toh(msg.chunk_id);
- DBG("Evaluating rotate pending for chunk id %" PRIu64, chunk_id);
+ DBG("Evaluating rotate pending for session \"%s\" and chunk id %" PRIu64,
+ session->session_name, chunk_id);
/*
* Iterate over all the streams in the session and check if they are
/*
* Iterate over all the streams in the session and check if they are
@@
-2831,7
+2843,7
@@
int relay_rotate_pending(const struct lttcomm_relayd_hdr *recv_hdr,
rotate_pending = true;
DBG("Stream %" PRIu64 " is still rotating",
stream->stream_handle);
rotate_pending = true;
DBG("Stream %" PRIu64 " is still rotating",
stream->stream_handle);
- } else if (stream->c
hunk_id
< chunk_id) {
+ } else if (stream->c
urrent_chunk_id.value
< chunk_id) {
/*
* Stream closed on the consumer but still active on the
* relay.
/*
* Stream closed on the consumer but still active on the
* relay.
This page took
0.025985 seconds
and
5
git commands to generate.