Change the utils_expand_path function to use utils_partial_realpath
[lttng-tools.git] / src / common / consumer-timer.c
index e2be05e7e731b8355235e3d040365545c5828bbc..b97cb28443a99232550de4d543b2607896452ead 100644 (file)
@@ -21,7 +21,7 @@
 #include <inttypes.h>
 #include <signal.h>
 
-#include <lttng/ust-ctl.h>
+#include <bin/lttng-consumerd/health-consumerd.h>
 #include <common/common.h>
 #include <common/kernel-ctl/kernel-ctl.h>
 #include <common/kernel-consumer/kernel-consumer.h>
@@ -100,7 +100,7 @@ static void metadata_switch_timer(struct lttng_consumer_local_data *ctx,
                 * they are held while consumer_timer_switch_stop() is
                 * called.
                 */
-               ret = lttng_ustconsumer_request_metadata(ctx, channel, 1);
+               ret = lttng_ustconsumer_request_metadata(ctx, channel, 1, 1);
                if (ret < 0) {
                        channel->switch_timer_error = 1;
                }
@@ -186,15 +186,20 @@ static int check_ust_stream(struct lttng_consumer_stream *stream)
         * safely send the empty index.
         */
        pthread_mutex_lock(&stream->lock);
-       ret = ustctl_get_current_timestamp(stream->ustream, &ts);
+       ret = cds_lfht_is_node_deleted(&stream->node.node);
+       if (ret) {
+               goto error_unlock;
+       }
+
+       ret = lttng_ustconsumer_get_current_timestamp(stream, &ts);
        if (ret < 0) {
                ERR("Failed to get the current timestamp");
                goto error_unlock;
        }
-       ustctl_flush_buffer(stream->ustream, 1);
-       ret = ustctl_snapshot(stream->ustream);
+       lttng_ustconsumer_flush_buffer(stream, 1);
+       ret = lttng_ustconsumer_take_snapshot(stream);
        if (ret < 0) {
-               if (errno != EAGAIN) {
+               if (ret != -EAGAIN) {
                        ERR("Taking UST snapshot");
                        ret = -1;
                        goto error_unlock;
@@ -392,7 +397,7 @@ void consumer_timer_live_start(struct lttng_consumer_channel *channel,
        assert(channel);
        assert(channel->key);
 
-       if (live_timer_interval == 0) {
+       if (live_timer_interval <= 0) {
                return;
        }
 
@@ -465,12 +470,20 @@ void *consumer_timer_thread(void *data)
        siginfo_t info;
        struct lttng_consumer_local_data *ctx = data;
 
+       health_register(health_consumerd, HEALTH_CONSUMERD_TYPE_METADATA_TIMER);
+
+       health_code_update();
+
        /* Only self thread will receive signal mask. */
        setmask(&mask);
        CMM_STORE_SHARED(timer_signal.tid, pthread_self());
 
        while (1) {
+               health_code_update();
+
+               health_poll_entry();
                signr = sigwaitinfo(&mask, &info);
+               health_poll_exit();
                if (signr == -1) {
                        if (errno != EINTR) {
                                PERROR("sigwaitinfo");
@@ -490,5 +503,9 @@ void *consumer_timer_thread(void *data)
                }
        }
 
+       /* Currently never reached */
+       health_unregister(health_consumerd);
+
+       /* Never return */
        return NULL;
 }
This page took 0.024003 seconds and 4 git commands to generate.