From: Mathieu Desnoyers Date: Mon, 24 Feb 2014 18:23:54 +0000 (-0500) Subject: Fix: accept empty metadata on append X-Git-Tag: v1.2.0-rc2~12 X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=commitdiff_plain;h=251fc08ca342edbca24b30492f0d02394ec11414 Fix: accept empty metadata on append "Append" should accept receiving metadata packets that contain exactly 0 byte of metadata payload. This kind of flush can happen on trace teardown. Signed-off-by: Mathieu Desnoyers --- diff --git a/formats/ctf/ctf.c b/formats/ctf/ctf.c index 19ecfdc2..4c64c930 100644 --- a/formats/ctf/ctf.c +++ b/formats/ctf/ctf.c @@ -1238,8 +1238,6 @@ int ctf_trace_metadata_read(struct ctf_trace *td, FILE *metadata_fp, if (packet_metadata(td, fp)) { ret = ctf_trace_metadata_stream_read(td, &fp, &buf); if (ret) { - /* Warn about empty metadata */ - fprintf(stderr, "[warning] Empty metadata.\n"); goto end; } td->metadata_string = buf; @@ -2096,6 +2094,9 @@ int ctf_open_trace_read(struct ctf_trace *td, ret = ctf_trace_metadata_read(td, metadata_fp, scanner, 0); ctf_scanner_free(scanner); if (ret) { + if (ret == -ENOENT) { + fprintf(stderr, "[warning] Empty metadata.\n"); + } fprintf(stderr, "[warning] Unable to open trace metadata for path \"%s\".\n", path); goto error_metadata; } @@ -2313,6 +2314,9 @@ int ctf_open_mmap_trace_read(struct ctf_trace *td, } ret = ctf_trace_metadata_read(td, metadata_fp, td->scanner, 0); if (ret) { + if (ret == -ENOENT) { + fprintf(stderr, "[warning] Empty metadata.\n"); + } goto error; } diff --git a/formats/lttng-live/lttng-live-comm.c b/formats/lttng-live/lttng-live-comm.c index 568a4a1e..76dc6bbb 100644 --- a/formats/lttng-live/lttng-live-comm.c +++ b/formats/lttng-live/lttng-live-comm.c @@ -589,10 +589,12 @@ int append_metadata(struct lttng_live_ctx *ctx, ret = ctf_append_trace_metadata( viewer_stream->ctf_trace->handle->td, metadata->ctf_trace->metadata_fp); - if (ret != 0) { + /* We accept empty metadata packets */ + if (ret != 0 && ret != -ENOENT) { fprintf(stderr, "[error] Appending metadata\n"); goto error; } + ret = 0; error: return ret;