diff --git a/plugins/filter_kubernetes/kube_property.c b/plugins/filter_kubernetes/kube_property.c index 21117afeeeb..48f0e4dbc64 100644 --- a/plugins/filter_kubernetes/kube_property.c +++ b/plugins/filter_kubernetes/kube_property.c @@ -84,12 +84,18 @@ static int prop_set_parser(struct flb_kube *ctx, struct flb_kube_meta *meta, stream == FLB_KUBE_PROP_STREAM_STDOUT) && (is_container_specific == FLB_TRUE || props->stdout_parser == FLB_KUBE_PROP_UNDEF)) { + if (props->stdout_parser) { + flb_sds_destroy(props->stdout_parser); + } props->stdout_parser = flb_sds_create(tmp); } if ((stream == FLB_KUBE_PROP_NO_STREAM || stream == FLB_KUBE_PROP_STREAM_STDERR) && (is_container_specific == FLB_TRUE || props->stderr_parser == FLB_KUBE_PROP_UNDEF)) { + if (props->stderr_parser) { + flb_sds_destroy(props->stderr_parser); + } props->stderr_parser = flb_sds_create(tmp); } diff --git a/tests/runtime/data/kubernetes/log/annotations-parser/annotations-parser-order_multiple-1_container-1.log b/tests/runtime/data/kubernetes/log/annotations-parser/annotations-parser-order_multiple-1_container-1.log new file mode 100644 index 00000000000..db4b14a877d --- /dev/null +++ b/tests/runtime/data/kubernetes/log/annotations-parser/annotations-parser-order_multiple-1_container-1.log @@ -0,0 +1,2 @@ +{"log":"[2019-04-05T14:54:23.584269761] Container 1 is logging on stdout\n","stream":"stdout","time":"2019-04-01T17:58:33.598656444Z"} +{"log":"[2019-04-05T14:54:23.584269761] Container 1 is logging on stderr\n","stream":"stderr","time":"2019-04-01T17:58:33.698656444Z"} diff --git a/tests/runtime/data/kubernetes/meta/annotations-parser-order_multiple-1.meta b/tests/runtime/data/kubernetes/meta/annotations-parser-order_multiple-1.meta new file mode 100644 index 00000000000..ec19f1758d7 --- /dev/null +++ b/tests/runtime/data/kubernetes/meta/annotations-parser-order_multiple-1.meta @@ -0,0 +1,12 @@ +{ + "metadata": { + "annotations": { + "fluentbit.io/parser": "default-parser", + "fluentbit.io/parser-container-1": "container-1-parser", + "fluentbit.io/parser_stdout-container-2": "container-2-stdout-parser", + "fluentbit.io/parser_stderr-container-2": "container-2-stderr-parser", + "fluentbit.io/parser_stdout-container-3": "container-3-stdout-parser", + "fluentbit.io/parser_stderr-container-4": "container-4-stderr-parser" + } + } +} diff --git a/tests/runtime/data/kubernetes/out/annotations-parser/annotations-parser-order_multiple-1_container-1_stdout.out b/tests/runtime/data/kubernetes/out/annotations-parser/annotations-parser-order_multiple-1_container-1_stdout.out new file mode 100644 index 00000000000..c5ee73a87d2 --- /dev/null +++ b/tests/runtime/data/kubernetes/out/annotations-parser/annotations-parser-order_multiple-1_container-1_stdout.out @@ -0,0 +1 @@ +[1554476063.584270,{"stream":"stdout","container_1_parser":"Container 1 is logging on stdout","kubernetes":{"pod_name":"multiple-1","namespace_name":"annotations-parser-order","annotations":{"fluentbit.io/parser":"default-parser","fluentbit.io/parser-container-1":"container-1-parser","fluentbit.io/parser_stdout-container-2":"container-2-stdout-parser","fluentbit.io/parser_stderr-container-2":"container-2-stderr-parser","fluentbit.io/parser_stdout-container-3":"container-3-stdout-parser","fluentbit.io/parser_stderr-container-4":"container-4-stderr-parser"},"container_name":"container-1"}}] diff --git a/tests/runtime/filter_kubernetes.c b/tests/runtime/filter_kubernetes.c index 27a5c1d1888..9519b2b8f1c 100644 --- a/tests/runtime/filter_kubernetes.c +++ b/tests/runtime/filter_kubernetes.c @@ -631,6 +631,12 @@ static void flb_test_annotations_parser_multiple_1_container_1_stdout() flb_test_annotations_parser("annotations-parser_multiple-1_container-1", "stdout", 1); } +static void flb_test_annotations_parser_order_multiple_1_container_1_stdout() +{ + flb_test_annotations_parser("annotations-parser-order_multiple-1_container-1", + "stdout", 1); +} + static void flb_test_annotations_parser_multiple_1_container_1_stderr() { flb_test_annotations_parser("annotations-parser_multiple-1_container-1", "stderr", 1); @@ -1045,6 +1051,7 @@ TEST_LIST = { {"kube_annotations_parser_stderr_text_stdout", flb_test_annotations_parser_stderr_text_stdout}, {"kube_annotations_parser_stderr_text_stderr", flb_test_annotations_parser_stderr_text_stderr}, {"kube_annotations_parser_multiple_1_container_1_stdout", flb_test_annotations_parser_multiple_1_container_1_stdout}, + {"kube_annotations_parser_order_multiple_1_container_1_stdout", flb_test_annotations_parser_order_multiple_1_container_1_stdout}, {"kube_annotations_parser_multiple_1_container_1_stderr", flb_test_annotations_parser_multiple_1_container_1_stderr}, {"kube_annotations_parser_multiple_1_container_2_stdout", flb_test_annotations_parser_multiple_1_container_2_stdout}, {"kube_annotations_parser_multiple_1_container_2_stderr", flb_test_annotations_parser_multiple_1_container_2_stderr},