projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix end condition on rotate with live reading
[lttng-tools.git]
/
src
/
bin
/
lttng-relayd
/
live.c
diff --git
a/src/bin/lttng-relayd/live.c
b/src/bin/lttng-relayd/live.c
index a2fd09e32812fc322ac9299fa16f558ad39637ad..851be9f8e3165c85eb4bcf69bfbeb3d29508dade 100644
(file)
--- a/
src/bin/lttng-relayd/live.c
+++ b/
src/bin/lttng-relayd/live.c
@@
-698,6
+698,7
@@
int init_viewer_stream(struct relay_stream *stream, int seek_last)
LTTNG_VIEWER_NAME_MAX);
viewer_stream->tracefile_count = stream->tracefile_count;
viewer_stream->metadata_flag = stream->metadata_flag;
LTTNG_VIEWER_NAME_MAX);
viewer_stream->tracefile_count = stream->tracefile_count;
viewer_stream->metadata_flag = stream->metadata_flag;
+ viewer_stream->tracefile_count_last = -1ULL;
if (seek_last) {
viewer_stream->tracefile_count_current =
stream->tracefile_count_current;
if (seek_last) {
viewer_stream->tracefile_count_current =
stream->tracefile_count_current;
@@
-764,7
+765,7
@@
error:
/*
* Rotate a stream to the next tracefile.
*
/*
* Rotate a stream to the next tracefile.
*
- * Returns 0 on success, a negative value on error.
+ * Returns 0 on success,
1 on EOF,
a negative value on error.
*/
static
int rotate_viewer_stream(struct relay_viewer_stream *viewer_stream,
*/
static
int rotate_viewer_stream(struct relay_viewer_stream *viewer_stream,
@@
-777,6
+778,15
@@
int rotate_viewer_stream(struct relay_viewer_stream *viewer_stream,
tracefile_id = (viewer_stream->tracefile_count_current + 1) %
viewer_stream->tracefile_count;
tracefile_id = (viewer_stream->tracefile_count_current + 1) %
viewer_stream->tracefile_count;
+ /*
+ * Detect the last tracefile to open.
+ */
+ if (viewer_stream->tracefile_count_last != -1ULL &&
+ viewer_stream->tracefile_count_last ==
+ viewer_stream->tracefile_count_current) {
+ ret = 1;
+ goto end;
+ }
if (stream) {
pthread_mutex_lock(&stream->viewer_stream_rotation_lock);
if (stream) {
pthread_mutex_lock(&stream->viewer_stream_rotation_lock);
@@
-832,6
+842,7
@@
int rotate_viewer_stream(struct relay_viewer_stream *viewer_stream,
ret = 0;
ret = 0;
+end:
error:
return ret;
}
error:
return ret;
}
@@
-1130,6
+1141,9
@@
int viewer_get_next_index(struct relay_command *cmd,
ret = rotate_viewer_stream(vstream, rstream);
if (ret < 0) {
goto end_unlock;
ret = rotate_viewer_stream(vstream, rstream);
if (ret < 0) {
goto end_unlock;
+ } else if (ret == 1) {
+ viewer_index.status = htobe32(VIEWER_INDEX_HUP);
+ goto send_reply;
}
}
pthread_mutex_lock(&rstream->viewer_stream_rotation_lock);
}
}
pthread_mutex_lock(&rstream->viewer_stream_rotation_lock);
@@
-1180,6
+1194,9
@@
int viewer_get_next_index(struct relay_command *cmd,
ret = rotate_viewer_stream(vstream, rstream);
if (ret < 0) {
goto end_unlock;
ret = rotate_viewer_stream(vstream, rstream);
if (ret < 0) {
goto end_unlock;
+ } else if (ret == 1) {
+ viewer_index.status = htobe32(VIEWER_INDEX_HUP);
+ goto send_reply;
}
goto send_reply;
}
}
goto send_reply;
}
@@
-1196,6
+1213,9
@@
int viewer_get_next_index(struct relay_command *cmd,
ret = rotate_viewer_stream(vstream, rstream);
if (ret < 0) {
goto end_unlock;
ret = rotate_viewer_stream(vstream, rstream);
if (ret < 0) {
goto end_unlock;
+ } else if (ret == 1) {
+ viewer_index.status = htobe32(VIEWER_INDEX_HUP);
+ goto send_reply;
}
} else {
PERROR("Relay reading index file %d",
}
} else {
PERROR("Relay reading index file %d",
This page took
0.026865 seconds
and
5
git commands to generate.