src.ctf.lttng-live: Add setter for stream iterator state for uniform logging
authorFrancis Deslauriers <francis.deslauriers@efficios.com>
Mon, 8 Nov 2021 22:25:39 +0000 (17:25 -0500)
committerFrancis Deslauriers <francis.deslauriers@efficios.com>
Thu, 11 Nov 2021 22:47:54 +0000 (17:47 -0500)
Debugging LTTng live issues is tricky and having clean and uniform
logging statement for each state transition is useful to understand the
current state a lttng-live source.

Signed-off-by: Francis Deslauriers <francis.deslauriers@efficios.com>
Change-Id: Ifc334bbb2afe78f9ea57fe24b0ad3860b59b0640
Reviewed-on: https://review.lttng.org/c/babeltrace/+/6676
Tested-by: jenkins <jenkins@lttng.org>
Reviewed-by: Philippe Proulx <eeppeliteloop@gmail.com>
src/plugins/ctf/lttng-live/data-stream.c
src/plugins/ctf/lttng-live/lttng-live.c
src/plugins/ctf/lttng-live/lttng-live.h
src/plugins/ctf/lttng-live/viewer-connection.c

index aba9c807659d718abdf7e7be4aecb9374e65e63f..618af36d643910715ff5ad77ed461e556cb39701 100644 (file)
@@ -51,7 +51,8 @@ enum ctf_msg_iter_medium_status medop_request_bytes(
 
        len_left = stream->base_offset + stream->len - stream->offset;
        if (!len_left) {
-               stream->state = LTTNG_LIVE_STREAM_ACTIVE_NO_DATA;
+               lttng_live_stream_iterator_set_state(stream,
+                               LTTNG_LIVE_STREAM_ACTIVE_NO_DATA);
                status = CTF_MSG_ITER_MEDIUM_STATUS_AGAIN;
                goto end;
        }
index 91e312f2f3536f6014312cacad424f5f7c84a92a..1b4deb9469ab15a3342ecf4bc318a4a9a2d8ad31 100644 (file)
@@ -86,6 +86,21 @@ const char *lttng_live_stream_state_string(enum lttng_live_stream_state state)
        }
 }
 
+void lttng_live_stream_iterator_set_state(struct lttng_live_stream_iterator *stream_iter,
+               enum lttng_live_stream_state new_state)
+{
+       bt_self_component *self_comp = stream_iter->self_comp;
+       bt_logging_level log_level = stream_iter->log_level;
+
+       BT_COMP_LOGD("Setting live stream iterator state: viewer-stream-id=%" PRIu64
+               ", old-state=%s, new-state=%s",
+               stream_iter->viewer_stream_id,
+               lttng_live_stream_state_string(stream_iter->state),
+               lttng_live_stream_state_string(new_state));
+
+       stream_iter->state = new_state;
+}
+
 #define LTTNG_LIVE_LOGD_STREAM_ITER(live_stream_iter) \
        do { \
                BT_COMP_LOGD("Live stream iterator state=%s, last-inact-ts=%" PRId64  \
@@ -687,7 +702,9 @@ enum lttng_live_iterator_status lttng_live_iterator_next_handle_one_quiescent_st
         */
        if (lttng_live_stream->current_inactivity_ts ==
                        lttng_live_stream->last_inactivity_ts) {
-               lttng_live_stream->state = LTTNG_LIVE_STREAM_QUIESCENT_NO_DATA;
+               lttng_live_stream_iterator_set_state(lttng_live_stream,
+                       LTTNG_LIVE_STREAM_QUIESCENT_NO_DATA);
+
                ret = LTTNG_LIVE_ITERATOR_STATUS_CONTINUE;
                goto end;
        }
index 1f0d3f7da8f56543ca5006d5e2c5786c088ae467..82f39a0fabb4baf115135a60a2f21f040c9b6f3a 100644 (file)
@@ -328,4 +328,9 @@ enum ctf_msg_iter_medium_status lttng_live_get_stream_bytes(
 
 bool lttng_live_graph_is_canceled(struct lttng_live_msg_iter *msg_iter);
 
+BT_HIDDEN
+void lttng_live_stream_iterator_set_state(
+               struct lttng_live_stream_iterator *stream_iter,
+               enum lttng_live_stream_state new_state);
+
 #endif /* BABELTRACE_PLUGIN_CTF_LTTNG_LIVE_H */
index c3b5ca1b27278a17f5749f9e70a8266592027c3f..c4b29ed23e0cdc95d7af1e06f6c7a96e2ea23846 100644 (file)
@@ -1545,7 +1545,7 @@ enum lttng_live_iterator_status lttng_live_get_next_index(
                } else {
                        stream->ctf_stream_class_id = ctf_stream_class_id;
                }
-               stream->state = LTTNG_LIVE_STREAM_QUIESCENT;
+               lttng_live_stream_iterator_set_state(stream, LTTNG_LIVE_STREAM_QUIESCENT);
                status = LTTNG_LIVE_ITERATOR_STATUS_OK;
                break;
        }
@@ -1562,7 +1562,7 @@ enum lttng_live_iterator_status lttng_live_get_next_index(
                        stream->ctf_stream_class_id = ctf_stream_class_id;
                }
 
-               stream->state = LTTNG_LIVE_STREAM_ACTIVE_DATA;
+               lttng_live_stream_iterator_set_state(stream, LTTNG_LIVE_STREAM_ACTIVE_DATA);
 
                if (flags & LTTNG_VIEWER_FLAG_NEW_METADATA) {
                        BT_COMP_LOGD("Marking trace as needing new metadata: "
@@ -1582,25 +1582,25 @@ enum lttng_live_iterator_status lttng_live_get_next_index(
        }
        case LTTNG_VIEWER_INDEX_RETRY:
                memset(index, 0, sizeof(struct packet_index));
-               stream->state = LTTNG_LIVE_STREAM_ACTIVE_NO_DATA;
+               lttng_live_stream_iterator_set_state(stream, LTTNG_LIVE_STREAM_ACTIVE_NO_DATA);
                status = LTTNG_LIVE_ITERATOR_STATUS_AGAIN;
                goto end;
        case LTTNG_VIEWER_INDEX_HUP:
                memset(index, 0, sizeof(struct packet_index));
                index->offset = EOF;
-               stream->state = LTTNG_LIVE_STREAM_EOF;
+               lttng_live_stream_iterator_set_state(stream, LTTNG_LIVE_STREAM_EOF);
                stream->has_stream_hung_up = true;
                status = LTTNG_LIVE_ITERATOR_STATUS_END;
                break;
        case LTTNG_VIEWER_INDEX_ERR:
                memset(index, 0, sizeof(struct packet_index));
-               stream->state = LTTNG_LIVE_STREAM_ACTIVE_NO_DATA;
+               lttng_live_stream_iterator_set_state(stream, LTTNG_LIVE_STREAM_ACTIVE_NO_DATA);
                status = LTTNG_LIVE_ITERATOR_STATUS_ERROR;
                goto end;
        default:
                BT_COMP_LOGD("Received get_next_index response: unknown value");
                memset(index, 0, sizeof(struct packet_index));
-               stream->state = LTTNG_LIVE_STREAM_ACTIVE_NO_DATA;
+               lttng_live_stream_iterator_set_state(stream, LTTNG_LIVE_STREAM_ACTIVE_NO_DATA);
                status = LTTNG_LIVE_ITERATOR_STATUS_ERROR;
                goto end;
        }
This page took 0.027941 seconds and 4 git commands to generate.