<div dir="ltr">Merged in master, stable-2.6 and stable-2.5. Thanks!<div><br></div><div>Jérémie</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Jul 6, 2015 at 12:21 PM, Mathieu Desnoyers <span dir="ltr"><<a href="mailto:mathieu.desnoyers@efficios.com" target="_blank">mathieu.desnoyers@efficios.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">This return value can be caused by application terminating concurrently<br>
(when using per-PID buffers), so it should not make the consumer<br>
management thread exit.<br>
<br>
CC: Aravind HT <<a href="mailto:aravind.ht@gmail.com">aravind.ht@gmail.com</a>><br>
Signed-off-by: Mathieu Desnoyers <<a href="mailto:mathieu.desnoyers@efficios.com">mathieu.desnoyers@efficios.com</a>><br>
---<br>
 src/bin/lttng-sessiond/ust-app.c      | 13 ++++++++++---<br>
 src/bin/lttng-sessiond/ust-consumer.c |  7 +++++--<br>
 2 files changed, 15 insertions(+), 5 deletions(-)<br>
<br>
diff --git a/src/bin/lttng-sessiond/ust-app.c b/src/bin/lttng-sessiond/ust-app.c<br>
index c30792c..6f032da 100644<br>
--- a/src/bin/lttng-sessiond/ust-app.c<br>
+++ b/src/bin/lttng-sessiond/ust-app.c<br>
@@ -431,6 +431,9 @@ void delete_ust_app_channel(int sock, struct ust_app_channel *ua_chan,<br>
  * Must be called with the registry lock held.<br>
  *<br>
  * On success, return the len of metadata pushed or else a negative value.<br>
+ * Returning a -EPIPE return value means we could not send the metadata,<br>
+ * but it can be caused by recoverable errors (e.g. the application has<br>
+ * terminated concurrently).<br>
  */<br>
 ssize_t ust_app_push_metadata(struct ust_registry_session *registry,<br>
                struct consumer_socket *socket, int send_zero_data)<br>
@@ -454,9 +457,10 @@ ssize_t ust_app_push_metadata(struct ust_registry_session *registry,<br>
        /*<br>
         * On a push metadata error either the consumer is dead or the<br>
         * metadata channel has been destroyed because its endpoint<br>
-        * might have died (e.g: relayd). If so, the metadata closed<br>
-        * flag is set to 1 so we deny pushing metadata again which is<br>
-        * not valid anymore on the consumer side.<br>
+        * might have died (e.g: relayd), or because the application has<br>
+        * exited. If so, the metadata closed flag is set to 1 so we<br>
+        * deny pushing metadata again which is not valid anymore on the<br>
+        * consumer side.<br>
         */<br>
        if (registry->metadata_closed) {<br>
                return -EPIPE;<br>
@@ -547,6 +551,9 @@ error_push:<br>
  * of socket throughout this function.<br>
  *<br>
  * Return 0 on success else a negative error.<br>
+ * Returning a -EPIPE return value means we could not send the metadata,<br>
+ * but it can be caused by recoverable errors (e.g. the application has<br>
+ * terminated concurrently).<br>
  */<br>
 static int push_metadata(struct ust_registry_session *registry,<br>
                struct consumer_output *consumer)<br>
diff --git a/src/bin/lttng-sessiond/ust-consumer.c b/src/bin/lttng-sessiond/ust-consumer.c<br>
index 78e50df..ad076e3 100644<br>
--- a/src/bin/lttng-sessiond/ust-consumer.c<br>
+++ b/src/bin/lttng-sessiond/ust-consumer.c<br>
@@ -511,12 +511,15 @@ int ust_consumer_metadata_request(struct consumer_socket *socket)<br>
        pthread_mutex_lock(&ust_reg->lock);<br>
        ret_push = ust_app_push_metadata(ust_reg, socket, 1);<br>
        pthread_mutex_unlock(&ust_reg->lock);<br>
-       if (ret_push < 0) {<br>
+       if (ret_push == -EPIPE) {<br>
+               DBG("Application or relay closed while pushing metadata");<br>
+       } else if (ret_push < 0) {<br>
                ERR("Pushing metadata");<br>
                ret = -1;<br>
                goto end;<br>
+       } else {<br>
+               DBG("UST Consumer metadata pushed successfully");<br>
        }<br>
-       DBG("UST Consumer metadata pushed successfully");<br>
        ret = 0;<br>
<br>
 end:<br>
<span class="HOEnZb"><font color="#888888">--<br>
2.1.4<br>
<br>
</font></span></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature">Jérémie Galarneau<br>EfficiOS Inc.<br><a href="http://www.efficios.com" target="_blank">http://www.efficios.com</a></div>
</div>