projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix: relay create session for version before 2.4
[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 8f73cd27c3eb908b30258ce1fe9c78b340b97e84..80c3da57ac63d2ee0fd69b5942e063c7aefa4f16 100644
(file)
--- a/
src/bin/lttng-relayd/live.c
+++ b/
src/bin/lttng-relayd/live.c
@@
-57,15
+57,10
@@
#include "lttng-viewer.h"
#include "utils.h"
#include "health-relayd.h"
#include "lttng-viewer.h"
#include "utils.h"
#include "health-relayd.h"
+#include "testpoint.h"
static struct lttng_uri *live_uri;
static struct lttng_uri *live_uri;
-/*
- * Quit pipe for all threads. This permits a single cancellation point
- * for all threads when receiving an event on the pipe.
- */
-static int live_thread_quit_pipe[2] = { -1, -1 };
-
/*
* This pipe is used to inform the worker thread that a command is queued and
* ready to be processed.
/*
* This pipe is used to inform the worker thread that a command is queued and
* ready to be processed.
@@
-126,7
+121,7
@@
void stop_threads(void)
/* Stopping all threads */
DBG("Terminating all live threads");
/* Stopping all threads */
DBG("Terminating all live threads");
- ret = notify_thread_pipe(
live_
thread_quit_pipe[1]);
+ ret = notify_thread_pipe(thread_quit_pipe[1]);
if (ret < 0) {
ERR("write error on thread quit pipe");
}
if (ret < 0) {
ERR("write error on thread quit pipe");
}
@@
-155,7
+150,7
@@
int create_thread_poll_set(struct lttng_poll_event *events, int size)
}
/* Add quit pipe */
}
/* Add quit pipe */
- ret = lttng_poll_add(events,
live_
thread_quit_pipe[0], LPOLLIN | LPOLLERR);
+ ret = lttng_poll_add(events, thread_quit_pipe[0], LPOLLIN | LPOLLERR);
if (ret < 0) {
goto error;
}
if (ret < 0) {
goto error;
}
@@
-174,7
+169,7
@@
error:
static
int check_thread_quit_pipe(int fd, uint32_t events)
{
static
int check_thread_quit_pipe(int fd, uint32_t events)
{
- if (fd ==
live_
thread_quit_pipe[0] && (events & LPOLLIN)) {
+ if (fd == thread_quit_pipe[0] && (events & LPOLLIN)) {
return 1;
}
return 1;
}
@@
-245,9
+240,7
@@
void *thread_listener(void *data)
goto error_sock_control;
}
goto error_sock_control;
}
- /*
- * Pass 3 as size here for the thread quit pipe, control and data socket.
- */
+ /* Pass 2 as size here for the thread quit pipe and control sockets. */
ret = create_thread_poll_set(&events, 2);
if (ret < 0) {
goto error_create_poll;
ret = create_thread_poll_set(&events, 2);
if (ret < 0) {
goto error_create_poll;
@@
-261,6
+254,10
@@
void *thread_listener(void *data)
lttng_relay_notify_ready();
lttng_relay_notify_ready();
+ if (testpoint(relayd_thread_live_listener)) {
+ goto error_testpoint;
+ }
+
while (1) {
health_code_update();
while (1) {
health_code_update();
@@
-348,6
+345,7
@@
restart:
exit:
error:
error_poll_add:
exit:
error:
error_poll_add:
+error_testpoint:
lttng_poll_clean(&events);
error_create_poll:
if (live_control_sock->fd >= 0) {
lttng_poll_clean(&events);
error_create_poll:
if (live_control_sock->fd >= 0) {
@@
-383,6
+381,10
@@
void *thread_dispatcher(void *data)
health_register(health_relayd, HEALTH_RELAYD_TYPE_LIVE_DISPATCHER);
health_register(health_relayd, HEALTH_RELAYD_TYPE_LIVE_DISPATCHER);
+ if (testpoint(relayd_thread_live_dispatcher)) {
+ goto error_testpoint;
+ }
+
health_code_update();
while (!CMM_LOAD_SHARED(live_dispatch_thread_exit)) {
health_code_update();
while (!CMM_LOAD_SHARED(live_dispatch_thread_exit)) {
@@
-431,6
+433,7
@@
void *thread_dispatcher(void *data)
err = 0;
error:
err = 0;
error:
+error_testpoint:
if (err) {
health_error();
ERR("Health error occurred in %s", __func__);
if (err) {
health_error();
ERR("Health error occurred in %s", __func__);
@@
-1833,6
+1836,10
@@
void *thread_worker(void *data)
health_register(health_relayd, HEALTH_RELAYD_TYPE_LIVE_WORKER);
health_register(health_relayd, HEALTH_RELAYD_TYPE_LIVE_WORKER);
+ if (testpoint(relayd_thread_live_worker)) {
+ goto error_testpoint;
+ }
+
/* table of connections indexed on socket */
relay_connections_ht = lttng_ht_new(0, LTTNG_HT_TYPE_ULONG);
if (!relay_connections_ht) {
/* table of connections indexed on socket */
relay_connections_ht = lttng_ht_new(0, LTTNG_HT_TYPE_ULONG);
if (!relay_connections_ht) {
@@
-1988,6
+1995,7
@@
relay_connections_ht_error:
DBG("Viewer worker thread exited with error");
}
DBG("Viewer worker thread cleanup complete");
DBG("Viewer worker thread exited with error");
}
DBG("Viewer worker thread cleanup complete");
+error_testpoint:
if (err) {
health_error();
ERR("Health error occurred in %s", __func__);
if (err) {
health_error();
ERR("Health error occurred in %s", __func__);
@@
-2046,7
+2054,7
@@
error:
* main
*/
int live_start_threads(struct lttng_uri *uri,
* main
*/
int live_start_threads(struct lttng_uri *uri,
- struct relay_local_data *relay_ctx
, int quit_pipe[2]
)
+ struct relay_local_data *relay_ctx)
{
int ret = 0;
void *status;
{
int ret = 0;
void *status;
@@
-2055,9
+2063,6
@@
int live_start_threads(struct lttng_uri *uri,
assert(uri);
live_uri = uri;
assert(uri);
live_uri = uri;
- live_thread_quit_pipe[0] = quit_pipe[0];
- live_thread_quit_pipe[1] = quit_pipe[1];
-
/* Check if daemon is UID = 0 */
is_root = !getuid();
/* Check if daemon is UID = 0 */
is_root = !getuid();
This page took
0.025121 seconds
and
4
git commands to generate.