Fix: accept empty metadata on append
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mon, 24 Feb 2014 18:23:54 +0000 (13:23 -0500)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Tue, 25 Feb 2014 12:49:51 +0000 (07:49 -0500)
"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 <mathieu.desnoyers@efficios.com>
formats/ctf/ctf.c
formats/lttng-live/lttng-live-comm.c

index 19ecfdc2ba87cd6143af0c5685a68c297ea67acf..4c64c930da1a4e1e60ccc32642d26286e32d3e97 100644 (file)
@@ -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;
        }
 
index 568a4a1e806d64db8ad6191d4f0fcce25670ea21..76dc6bbb14bc2ea6a045cd2ddb8072365fb9416c 100644 (file)
@@ -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;
This page took 0.026463 seconds and 4 git commands to generate.