if check metrics on localhost:9098 it looks like this
HELP test_metric test_metric summary
TYPE test_metric summary
HELP counter_total counter counter
TYPE counter_total counter
counter_total{WorkflowType="Domain",TaskList="WorkflowType",Domain="TaskList",} 50.0
HELP counter_created counter counter
TYPE counter_created gauge
counter_created{WorkflowType="Domain",TaskList="WorkflowType",Domain="TaskList",} 1.678364275361E9
scope.tagged() put tags in immutableMap and immutable map returns keyset in order ("WorkflowType", "TaskList", "Domain")
but values() order is ["Domain","WorkflowType","TaskList"]
PrometheusReporter set incorrect tags when tags map returns keyset and values not in same order as it stored in map e.g.
if check metrics on localhost:9098 it looks like this
HELP test_metric test_metric summary TYPE test_metric summary HELP counter_total counter counter TYPE counter_total counter counter_total{WorkflowType="Domain",TaskList="WorkflowType",Domain="TaskList",} 50.0 HELP counter_created counter counter TYPE counter_created gauge counter_created{WorkflowType="Domain",TaskList="WorkflowType",Domain="TaskList",} 1.678364275361E9
tags for counter are incorrect. It looks like the problem is here https://github.com/uber-java/tally/blob/4a7bba5e3add45f5a1b7afd95d1c07bd33acd685/prometheus/src/main/java/com/uber/m3/tally/experimental/prometheus/PrometheusReporter.java#L144
scope.tagged() put tags in immutableMap and immutable map returns keyset in order ("WorkflowType", "TaskList", "Domain") but values() order is ["Domain","WorkflowType","TaskList"]
Could you please have a look? Thanks in advance.
versions: com.uber.m3:tally-core:0.13.0 com.uber.m3:tally-prometheus:0.13.0 io.prometheus:simpleclient:0.16.0 io.prometheus:simpleclient_httpserver:0.16.0