Fix: skip metadata flushed check if write failed
authorDavid Goulet <dgoulet@efficios.com>
Mon, 3 Jun 2013 17:05:22 +0000 (13:05 -0400)
committerDavid Goulet <dgoulet@efficios.com>
Mon, 3 Jun 2013 17:05:22 +0000 (13:05 -0400)
On a metadata cache write failure, we now skip the metadata flushed
check or else an infinite loop could have been possible.

Acked-by: Julien Desfossez <julien.desfossez@efficios.com>
Acked-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: David Goulet <dgoulet@efficios.com>
src/common/ust-consumer/ust-consumer.c

index 6acaacd63c942d1092ad9cdc056713f28a704462..f7ffb0febf5b7bcdc338b30975ae7e3379724935 100644 (file)
@@ -751,6 +751,14 @@ int lttng_ustconsumer_recv_metadata(int sock, uint64_t key, uint64_t offset,
        if (ret < 0) {
                /* Unable to handle metadata. Notify session daemon. */
                ret_code = LTTCOMM_CONSUMERD_ERROR_METADATA;
+               /*
+                * Skip metadata flush on write error since the offset and len might
+                * not have been updated which could create an infinite loop below when
+                * waiting for the metadata cache to be flushed.
+                */
+               pthread_mutex_unlock(&channel->metadata_cache->lock);
+               pthread_mutex_unlock(&consumer_data.lock);
+               goto end_free;
        }
        pthread_mutex_unlock(&channel->metadata_cache->lock);
        pthread_mutex_unlock(&consumer_data.lock);
This page took 0.02702 seconds and 4 git commands to generate.