X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Fust-consumer.c;h=493340cb9e751d34e82dd3f31a05be23b475228f;hb=ee3f5169cd70c5b930a195427a77a39380af5af8;hp=5207bfa74f740200d10dcaa50a6c5d6c98710069;hpb=c51311d61be71faf78b325c1d2c8185fa0af2285;p=lttng-tools.git diff --git a/src/bin/lttng-sessiond/ust-consumer.c b/src/bin/lttng-sessiond/ust-consumer.c index 5207bfa74..493340cb9 100644 --- a/src/bin/lttng-sessiond/ust-consumer.c +++ b/src/bin/lttng-sessiond/ust-consumer.c @@ -30,67 +30,11 @@ #include "consumer.h" #include "health-sessiond.h" #include "ust-consumer.h" +#include "lttng-ust-error.h" #include "buffer-registry.h" #include "session.h" #include "lttng-sessiond.h" -/* - * Return allocated full pathname of the session using the consumer trace path - * and subdir if available. - * - * The caller can safely free(3) the returned value. On error, NULL is - * returned. - */ -static char *setup_channel_trace_path(struct consumer_output *consumer, - struct ust_app_session *ua_sess) -{ - int ret; - char *pathname; - - assert(consumer); - assert(ua_sess); - - health_code_update(); - - /* - * Allocate the string ourself to make sure we never exceed - * LTTNG_PATH_MAX. - */ - pathname = zmalloc(LTTNG_PATH_MAX); - if (!pathname) { - goto error; - } - - /* Get correct path name destination */ - if (consumer->type == CONSUMER_DST_LOCAL) { - /* Set application path to the destination path */ - ret = snprintf(pathname, LTTNG_PATH_MAX, "%s%s", - consumer->domain_subdir, ua_sess->path); - DBG3("Userspace local consumer trace path relative to current trace chunk: \"%s\"", - pathname); - } else { - ret = snprintf(pathname, LTTNG_PATH_MAX, "%s%s/%s%s", - consumer->dst.net.base_dir, - consumer->chunk_path, - consumer->domain_subdir, - ua_sess->path); - } - if (ret < 0) { - PERROR("Failed to format channel path"); - goto error; - } else if (ret >= LTTNG_PATH_MAX) { - ERR("Truncation occurred while formatting channel path"); - ret = -1; - goto error; - } - - return pathname; - -error: - free(pathname); - return NULL; -} - /* * Send a single channel to the consumer using command ASK_CHANNEL_CREATION. * @@ -123,7 +67,7 @@ static int ask_channel_creation(struct ust_app_session *ua_sess, is_local_trace = consumer->net_seq_index == -1ULL; /* Format the channel's path (relative to the current trace chunk). */ - pathname = setup_channel_trace_path(consumer, ua_sess); + pathname = setup_channel_trace_path(consumer, ua_sess->path); if (!pathname) { ret = -1; goto error; @@ -200,6 +144,7 @@ static int ask_channel_creation(struct ust_app_session *ua_sess, ua_chan->attr.switch_timer_interval, ua_chan->attr.read_timer_interval, ua_sess->live_timer_interval, + ua_sess->live_timer_interval != 0, ua_chan->monitor_timer_interval, output, (int) ua_chan->attr.type, @@ -437,11 +382,16 @@ int ust_consumer_send_stream_to_ust(struct ust_app *app, ret = ustctl_send_stream_to_ust(app->sock, channel->obj, stream->obj); pthread_mutex_unlock(&app->sock_lock); if (ret < 0) { - if (ret != -EPIPE && ret != -LTTNG_UST_ERR_EXITING) { - ERR("ustctl send stream handle %d to app pid: %d with ret %d", - stream->obj->handle, app->pid, ret); + if (ret == -EPIPE || ret == -LTTNG_UST_ERR_EXITING) { + DBG3("UST app send stream to ust failed. Application is dead. (pid: %d, sock: %d).", + app->pid, app->sock); + } else if (ret == -EAGAIN) { + WARN("UST app send stream to ust failed. Communication time out (pid: %d, sock: %d).", + app->pid, app->sock); } else { - DBG3("UST app send stream to ust failed. Application is dead."); + ERR("UST app send stream, handle %d, to ust failed with ret %d (pid: %d, sock: %d).", + stream->obj->handle, ret, app->pid, + app->sock); } goto error; } @@ -474,11 +424,16 @@ int ust_consumer_send_channel_to_ust(struct ust_app *app, ret = ustctl_send_channel_to_ust(app->sock, ua_sess->handle, channel->obj); pthread_mutex_unlock(&app->sock_lock); if (ret < 0) { - if (ret != -EPIPE && ret != -LTTNG_UST_ERR_EXITING) { - ERR("Error ustctl send channel %s to app pid: %d with ret %d", - channel->name, app->pid, ret); + if (ret == -EPIPE || ret == -LTTNG_UST_ERR_EXITING) { + DBG3("UST app send channel to ust failed. Application is dead (pid: %d, sock: %d).", + app->pid, app->sock); + } else if (ret == -EAGAIN) { + WARN("UST app send channel to ust failed. Communication timeout (pid: %d, sock: %d).", + app->pid, app->sock); } else { - DBG3("UST app send channel to ust failed. Application is dead."); + ERR("UST app send channel %s, to ust failed with ret %d (pid: %d, sock: %d).", + channel->name, ret, app->pid, + app->sock); } goto error; }