projects
/
lttng-tools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Always choose large event header for UST channels
[lttng-tools.git]
/
src
/
bin
/
lttng-relayd
/
stream.c
diff --git
a/src/bin/lttng-relayd/stream.c
b/src/bin/lttng-relayd/stream.c
index 8825d094ce57b389662667bfd5d567ca0ed77cfd..e9c7ad172bc0d2f0e44ff3925ae929bd0b8e1398 100644
(file)
--- a/
src/bin/lttng-relayd/stream.c
+++ b/
src/bin/lttng-relayd/stream.c
@@
-17,7
+17,6
@@
* Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
* Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
-#define _GNU_SOURCE
#define _LGPL_SOURCE
#include <common/common.h>
#include <common/utils.h>
#define _LGPL_SOURCE
#include <common/common.h>
#include <common/utils.h>
@@
-149,7
+148,7
@@
struct relay_stream *stream_create(struct ctf_trace *trace,
DBG("Tracefile %s/%s created", stream->path_name, stream->channel_name);
}
DBG("Tracefile %s/%s created", stream->path_name, stream->channel_name);
}
- if (!strncmp(stream->channel_name, DEFAULT_METADATA_NAME, NAME_MAX)) {
+ if (!strncmp(stream->channel_name, DEFAULT_METADATA_NAME,
LTTNG_
NAME_MAX)) {
stream->is_metadata = 1;
}
stream->is_metadata = 1;
}
@@
-307,9
+306,9
@@
static void stream_release(struct urcu_ref *ref)
stream_fd_put(stream->stream_fd);
stream->stream_fd = NULL;
}
stream_fd_put(stream->stream_fd);
stream->stream_fd = NULL;
}
- if (stream->index_f
d
) {
-
stream_fd_put(stream->index_fd
);
- stream->index_f
d
= NULL;
+ if (stream->index_f
ile
) {
+
lttng_index_file_put(stream->index_file
);
+ stream->index_f
ile
= NULL;
}
if (stream->trace) {
ctf_trace_put(stream->trace);
}
if (stream->trace) {
ctf_trace_put(stream->trace);
@@
-346,7
+345,15
@@
void stream_put(struct relay_stream *stream)
void try_stream_close(struct relay_stream *stream)
{
void try_stream_close(struct relay_stream *stream)
{
+ bool session_aborted;
+ struct relay_session *session = stream->trace->session;
+
DBG("Trying to close stream %" PRIu64, stream->stream_handle);
DBG("Trying to close stream %" PRIu64, stream->stream_handle);
+
+ pthread_mutex_lock(&session->lock);
+ session_aborted = session->aborted;
+ pthread_mutex_unlock(&session->lock);
+
pthread_mutex_lock(&stream->lock);
/*
* Can be called concurently by connection close and reception of last
pthread_mutex_lock(&stream->lock);
/*
* Can be called concurently by connection close and reception of last
@@
-388,7
+395,8
@@
void try_stream_close(struct relay_stream *stream)
}
if (stream->last_net_seq_num != -1ULL &&
}
if (stream->last_net_seq_num != -1ULL &&
- ((int64_t) (stream->prev_seq - stream->last_net_seq_num)) < 0) {
+ ((int64_t) (stream->prev_seq - stream->last_net_seq_num)) < 0
+ && !session_aborted) {
/*
* Don't close since we still have data pending. This
* handles cases where an explicit close command has
/*
* Don't close since we still have data pending. This
* handles cases where an explicit close command has
@@
-447,6
+455,10
@@
void print_relay_streams(void)
struct lttng_ht_iter iter;
struct relay_stream *stream;
struct lttng_ht_iter iter;
struct relay_stream *stream;
+ if (!relay_streams_ht) {
+ return;
+ }
+
rcu_read_lock();
cds_lfht_for_each_entry(relay_streams_ht->ht, &iter.iter, stream,
node.node) {
rcu_read_lock();
cds_lfht_for_each_entry(relay_streams_ht->ht, &iter.iter, stream,
node.node) {
This page took
0.025654 seconds
and
4
git commands to generate.