projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix: relayd: remove assert of non-null stream trace chunk on rotate
[lttng-tools.git]
/
src
/
bin
/
lttng-relayd
/
live.c
diff --git
a/src/bin/lttng-relayd/live.c
b/src/bin/lttng-relayd/live.c
index e480f86e483400874c2240b78dfe74b46524222f..3ca1797ed9b07b12468840f0bcd963709f72a92b 100644
(file)
--- a/
src/bin/lttng-relayd/live.c
+++ b/
src/bin/lttng-relayd/live.c
@@
-291,6
+291,13
@@
static int make_viewer_streams(struct relay_session *session,
assert(session);
ASSERT_LOCKED(session->lock);
assert(session);
ASSERT_LOCKED(session->lock);
+ if (!viewer_trace_chunk) {
+ ERR("Internal error: viewer session associated with session \"%s\" has a NULL trace chunk",
+ session->session_name);
+ ret = -1;
+ goto error;
+ }
+
if (session->connection_closed) {
*closed = true;
}
if (session->connection_closed) {
*closed = true;
}
@@
-378,6
+385,7
@@
static int make_viewer_streams(struct relay_session *session,
error_unlock:
rcu_read_unlock();
error_unlock:
rcu_read_unlock();
+error:
return ret;
}
return ret;
}
@@
-954,23
+962,11
@@
int viewer_get_new_streams(struct relay_connection *conn)
}
if (!viewer_session_is_attached(conn->viewer_session, session)) {
}
if (!viewer_session_is_attached(conn->viewer_session, session)) {
- send_streams = 0;
response.status = htobe32(LTTNG_VIEWER_NEW_STREAMS_ERR);
goto send_reply;
}
response.status = htobe32(LTTNG_VIEWER_NEW_STREAMS_ERR);
goto send_reply;
}
- send_streams = 1;
- response.status = htobe32(LTTNG_VIEWER_NEW_STREAMS_OK);
-
pthread_mutex_lock(&session->lock);
pthread_mutex_lock(&session->lock);
- if (!conn->viewer_session->current_trace_chunk &&
- session->current_trace_chunk) {
- ret = viewer_session_set_trace_chunk(conn->viewer_session,
- session->current_trace_chunk);
- if (ret) {
- goto error_unlock_session;
- }
- }
ret = make_viewer_streams(session,
conn->viewer_session->current_trace_chunk,
LTTNG_VIEWER_SEEK_LAST, &nb_total, &nb_unsent,
ret = make_viewer_streams(session,
conn->viewer_session->current_trace_chunk,
LTTNG_VIEWER_SEEK_LAST, &nb_total, &nb_unsent,
@@
-978,7
+974,8
@@
int viewer_get_new_streams(struct relay_connection *conn)
if (ret < 0) {
goto error_unlock_session;
}
if (ret < 0) {
goto error_unlock_session;
}
- pthread_mutex_unlock(&session->lock);
+ send_streams = 1;
+ response.status = htobe32(LTTNG_VIEWER_NEW_STREAMS_OK);
/* Only send back the newly created streams with the unsent ones. */
nb_streams = nb_created + nb_unsent;
/* Only send back the newly created streams with the unsent ones. */
nb_streams = nb_created + nb_unsent;
@@
-992,8
+989,10
@@
int viewer_get_new_streams(struct relay_connection *conn)
send_streams = 0;
response.streams_count = 0;
response.status = htobe32(LTTNG_VIEWER_NEW_STREAMS_HUP);
send_streams = 0;
response.streams_count = 0;
response.status = htobe32(LTTNG_VIEWER_NEW_STREAMS_HUP);
- goto send_reply;
+ goto send_reply
_unlock
;
}
}
+send_reply_unlock:
+ pthread_mutex_unlock(&session->lock);
send_reply:
health_code_update();
send_reply:
health_code_update();
@@
-1047,6
+1046,7
@@
int viewer_attach_session(struct relay_connection *conn)
struct lttng_viewer_attach_session_request request;
struct lttng_viewer_attach_session_response response;
struct relay_session *session = NULL;
struct lttng_viewer_attach_session_request request;
struct lttng_viewer_attach_session_response response;
struct relay_session *session = NULL;
+ enum lttng_viewer_attach_return_code viewer_attach_status;
bool closed = false;
uint64_t session_id;
bool closed = false;
uint64_t session_id;
@@
-1096,10
+1096,10
@@
int viewer_attach_session(struct relay_connection *conn)
}
send_streams = 1;
}
send_streams = 1;
- ret = viewer_session_attach(conn->viewer_session, session);
- if (ret) {
- DBG("Already a viewer attached");
- response.status = htobe32(
LTTNG_VIEWER_ATTACH_ALREADY
);
+ viewer_attach_status = viewer_session_attach(conn->viewer_session,
+ session);
+ if (viewer_attach_status != LTTNG_VIEWER_ATTACH_OK) {
+ response.status = htobe32(
viewer_attach_status
);
goto send_reply;
}
goto send_reply;
}
@@
-1116,14
+1116,6
@@
int viewer_attach_session(struct relay_connection *conn)
goto send_reply;
}
goto send_reply;
}
- if (!conn->viewer_session->current_trace_chunk &&
- session->current_trace_chunk) {
- ret = viewer_session_set_trace_chunk(conn->viewer_session,
- session->current_trace_chunk);
- if (ret) {
- goto end_put_session;
- }
- }
ret = make_viewer_streams(session,
conn->viewer_session->current_trace_chunk, seek_type,
&nb_streams, NULL, NULL, &closed);
ret = make_viewer_streams(session,
conn->viewer_session->current_trace_chunk, seek_type,
&nb_streams, NULL, NULL, &closed);
This page took
0.025444 seconds
and
4
git commands to generate.