#include <ctype.h>
#define LOG_EXPORTER_LONG_FIELD_TRUNCATE_LEN 1000
+#define STATS_SUB_METRIC_MAX_LENGTH 256
struct stats_metrics {
pool_t pool;
array_append_zero(&fields);
sub_metric = stats_metric_alloc(pool, metric->name, metric->set,
array_idx(&fields, 0));
- sub_metric->sub_name = p_strdup(pool, str_sanitize_utf8(name, 32));
+ size_t max_len = STATS_SUB_METRIC_MAX_LENGTH - metric->sub_name_used_size;
+ sub_metric->sub_name = p_strdup(pool, str_sanitize_utf8(name, max_len));
+ sub_metric->sub_name_used_size =
+ metric->sub_name_used_size + strlen(sub_metric->sub_name);
array_append(&metric->sub_metrics, &sub_metric, 1);
return sub_metric;
}
if (!stats_metric_group_by_get_value(field, &metric->group_by[0], &value))
return;
+ if (metric->sub_name_used_size >= STATS_SUB_METRIC_MAX_LENGTH)
+ return;
if (!array_is_created(&metric->sub_metrics))
p_array_init(&metric->sub_metrics, pool, 8);
sub_metric = stats_metric_get_sub_metric(metric, field, &value, pool);
This is a display name and does not guarantee uniqueness.
*/
const char *sub_name;
+ size_t sub_name_used_size;
/* Timing for how long the event existed */
struct stats_dist *duration_stats;