Fix: metadata push -EPIPE should be recoverable
[lttng-tools.git] / src / bin / lttng-sessiond / ust-consumer.c
index 8a3533ba10c360097a8fb2cb0099a4f3d986f324..ad076e3c3173085f922c3d7864d9959bb9c93c9c 100644 (file)
@@ -110,6 +110,7 @@ static int ask_channel_creation(struct ust_app_session *ua_sess,
        struct lttcomm_consumer_msg msg;
        struct ust_registry_channel *chan_reg;
        char shm_path[PATH_MAX] = "";
+       char root_shm_path[PATH_MAX] = "";
 
        assert(ua_sess);
        assert(ua_chan);
@@ -156,6 +157,8 @@ static int ask_channel_creation(struct ust_app_session *ua_sess,
                                strncat(shm_path, "_",
                                        sizeof(shm_path) - strlen(shm_path) - 1);
                }
+               strncpy(root_shm_path, ua_sess->root_shm_path, sizeof(root_shm_path));
+               root_shm_path[sizeof(root_shm_path) - 1] = '\0';
        }
 
        switch (ua_chan->attr.output) {
@@ -188,7 +191,7 @@ static int ask_channel_creation(struct ust_app_session *ua_sess,
                        ua_sess->id,
                        ua_sess->output_traces,
                        ua_sess->uid,
-                       shm_path);
+                       root_shm_path, shm_path);
 
        health_code_update();
 
@@ -508,12 +511,15 @@ int ust_consumer_metadata_request(struct consumer_socket *socket)
        pthread_mutex_lock(&ust_reg->lock);
        ret_push = ust_app_push_metadata(ust_reg, socket, 1);
        pthread_mutex_unlock(&ust_reg->lock);
-       if (ret_push < 0) {
+       if (ret_push == -EPIPE) {
+               DBG("Application or relay closed while pushing metadata");
+       } else if (ret_push < 0) {
                ERR("Pushing metadata");
                ret = -1;
                goto end;
+       } else {
+               DBG("UST Consumer metadata pushed successfully");
        }
-       DBG("UST Consumer metadata pushed successfully");
        ret = 0;
 
 end:
This page took 0.024857 seconds and 4 git commands to generate.