projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix: Delete stream on write error in consumer
[lttng-tools.git]
/
src
/
common
/
consumer.c
diff --git
a/src/common/consumer.c
b/src/common/consumer.c
index 295e7be5dab1b533143e4ce2fa6a5be16ddb1c5d..53c618067f8d6546b91ccc8f77854d7d2b36ed72 100644
(file)
--- a/
src/common/consumer.c
+++ b/
src/common/consumer.c
@@
-923,6
+923,8
@@
void lttng_consumer_should_exit(struct lttng_consumer_local_data *ctx)
if (ret < 0) {
PERROR("write consumer quit");
}
if (ret < 0) {
PERROR("write consumer quit");
}
+
+ DBG("Consumer flag that it should quit");
}
void lttng_consumer_sync_trace_file(struct lttng_consumer_stream *stream,
}
void lttng_consumer_sync_trace_file(struct lttng_consumer_stream *stream,
@@
-1084,6
+1086,8
@@
void lttng_consumer_destroy(struct lttng_consumer_local_data *ctx)
{
int ret;
{
int ret;
+ DBG("Consumer destroying it. Closing everything.");
+
ret = close(ctx->consumer_error_socket);
if (ret) {
PERROR("close");
ret = close(ctx->consumer_error_socket);
if (ret) {
PERROR("close");
@@
-1916,8
+1920,9
@@
restart:
len = ctx->on_buffer_ready(stream, ctx);
/* It's ok to have an unavailable sub-buffer */
if (len < 0 && len != -EAGAIN && len != -ENODATA) {
len = ctx->on_buffer_ready(stream, ctx);
/* It's ok to have an unavailable sub-buffer */
if (len < 0 && len != -EAGAIN && len != -ENODATA) {
- rcu_read_unlock();
- goto end;
+ /* Clean up stream from consumer and free it. */
+ lttng_poll_del(&events, stream->wait_fd);
+ consumer_del_metadata_stream(stream, metadata_ht);
} else if (len > 0) {
stream->data_read = 1;
}
} else if (len > 0) {
stream->data_read = 1;
}
@@
-2084,7
+2089,8
@@
void *consumer_thread_data_poll(void *data)
len = ctx->on_buffer_ready(local_stream[i], ctx);
/* it's ok to have an unavailable sub-buffer */
if (len < 0 && len != -EAGAIN && len != -ENODATA) {
len = ctx->on_buffer_ready(local_stream[i], ctx);
/* it's ok to have an unavailable sub-buffer */
if (len < 0 && len != -EAGAIN && len != -ENODATA) {
- goto end;
+ /* Clean the stream and free it. */
+ consumer_del_stream(local_stream[i], data_ht);
} else if (len > 0) {
local_stream[i]->data_read = 1;
}
} else if (len > 0) {
local_stream[i]->data_read = 1;
}
@@
-2107,7
+2113,8
@@
void *consumer_thread_data_poll(void *data)
len = ctx->on_buffer_ready(local_stream[i], ctx);
/* it's ok to have an unavailable sub-buffer */
if (len < 0 && len != -EAGAIN && len != -ENODATA) {
len = ctx->on_buffer_ready(local_stream[i], ctx);
/* it's ok to have an unavailable sub-buffer */
if (len < 0 && len != -EAGAIN && len != -ENODATA) {
- goto end;
+ /* Clean the stream and free it. */
+ consumer_del_stream(local_stream[i], data_ht);
} else if (len > 0) {
local_stream[i]->data_read = 1;
}
} else if (len > 0) {
local_stream[i]->data_read = 1;
}
This page took
0.024691 seconds
and
4
git commands to generate.