[PATCH] telemetry: correct json empty dictionaries

Jonathan Erb jonathan.erb at threater.com
Thu Jan 18 18:26:02 CET 2024


Fix to allow telemetry to handle empty dictionaries correctly.

This patch resolves an issue where empty dictionaries are reported
by telemetry as '[]' rather than '{}'. Initializing the output
buffer based on the container type resolves the issue.

Signed-off-by: Jonathan Erb <jonathan.erb at threater.com>
---
 .mailmap                  | 2 +-
 lib/telemetry/telemetry.c | 6 +++++-
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/.mailmap b/.mailmap
index ab0742a382..a6b66ab3ad 100644
--- a/.mailmap
+++ b/.mailmap
@@ -675,7 +675,7 @@ John Ousterhout <ouster at cs.stanford.edu>
 John Romein <romein at astron.nl>
 John W. Linville <linville at tuxdriver.com>
 Jonas Pfefferle <jpf at zurich.ibm.com> <pepperjo at japf.ch>
-Jonathan Erb <jonathan.erb at threatblockr.com> <jonathan.erb at banduracyber.com>
+Jonathan Erb <jonathan.erb at threater.com> <jonathan.erb at threatblockr.com> <jonathan.erb at banduracyber.com>
 Jonathan Tsai <jonathan1.tsai at intel.com>
 Jon DeVree <nuxi at vault24.org>
 Jon Loeliger <jdl at netgate.com>
diff --git a/lib/telemetry/telemetry.c b/lib/telemetry/telemetry.c
index 92982842a8..eef4ac7bb7 100644
--- a/lib/telemetry/telemetry.c
+++ b/lib/telemetry/telemetry.c
@@ -169,7 +169,11 @@ container_to_json(const struct rte_tel_data *d, char *out_buf, size_t buf_len)
 		d->type != TEL_ARRAY_INT && d->type != TEL_ARRAY_STRING)
 		return snprintf(out_buf, buf_len, "null");
 
-	used = rte_tel_json_empty_array(out_buf, buf_len, 0);
+	if (d->type == TEL_DICT)
+		used = rte_tel_json_empty_obj(out_buf, buf_len, 0);
+	else
+		used = rte_tel_json_empty_array(out_buf, buf_len, 0);
+
 	if (d->type == TEL_ARRAY_UINT)
 		for (i = 0; i < d->data_len; i++)
 			used = rte_tel_json_add_array_uint(out_buf,
-- 
2.34.1



More information about the dev mailing list