)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e36537929508c5201f9ca79f25ff275333aa7cde","unresolved":true,"context_lines":[{"line_number":10,"context_line":"the existing _metrics module provides counters and histograms for RPC"},{"line_number":11,"context_line":"operations, there is no way to correlate an RPC call on the client side"},{"line_number":12,"context_line":"with its processing on the server side, or to link RPC activity back to"},{"line_number":13,"context_line":"the HTTP request that triggered it."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"This change adds a _tracing module that integrates OpenTelemetry span"},{"line_number":16,"context_line":"creation into the RPC call path. On the client side, trace_send() wraps"},{"line_number":17,"context_line":"call() and cast() in rpc/client.py, creating PRODUCER spans and injecting"},{"line_number":18,"context_line":"the W3C traceparent header into the serialized message context. On the"},{"line_number":19,"context_line":"server side, trace_receive() wraps the dispatch block in rpc/server.py,"},{"line_number":20,"context_line":"extracting the traceparent from the incoming message context to create"},{"line_number":21,"context_line":"linked CONSUMER spans. The trace context propagates through the existing"},{"line_number":22,"context_line":"pack_context/unpack_context mechanism as a _context_traceparent field,"},{"line_number":23,"context_line":"requiring no changes to drivers or the message format."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"When a TracerProvider is already configured by the host process (e.g."},{"line_number":26,"context_line":"via oslo.middleware\u0027s WSGI tracing), the module reuses it so that RPC"},{"line_number":27,"context_line":"spans appear as children of the originating HTTP request trace. When no"},{"line_number":28,"context_line":"provider exists, it creates one using the configured OTLP gRPC endpoint."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"The feature is disabled by default and controlled by three configuration"},{"line_number":31,"context_line":"options under the oslo_messaging_tracing group: tracing_enabled,"},{"line_number":32,"context_line":"tracing_service_name, and otel_exporter_otlp_endpoint. The OpenTelemetry"},{"line_number":33,"context_line":"packages are declared as an optional dependency group (\"tracing\") and are"},{"line_number":34,"context_line":"not imported unless tracing is enabled, so there is zero overhead for"},{"line_number":35,"context_line":"deployments that do not use it."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Assisted-By: claude-code opus 4.6"},{"line_number":38,"context_line":"Change-Id: Iedc380e55bef1f416cbc3313390f05976176298d"},{"line_number":39,"context_line":"Signed-off-by: Juan Larriba \u003cjlarriba@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"c4e43c8e_70943ca5","line":36,"range":{"start_line":13,"start_character":35,"end_line":36,"end_character":1},"updated":"2026-06-05 16:40:47.000000000","message":"nit: Wrap \u003c\u003d 72 chars","commit_id":"3c166c6306f7bd83d8c0b8871a2d73506c26680a"},{"author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"change_message_id":"a0ad037a53cdd1f121b0a6f6be98edb96170c00c","unresolved":false,"context_lines":[{"line_number":10,"context_line":"the existing _metrics module provides counters and histograms for RPC"},{"line_number":11,"context_line":"operations, there is no way to correlate an RPC call on the client side"},{"line_number":12,"context_line":"with its processing on the server side, or to link RPC activity back to"},{"line_number":13,"context_line":"the HTTP request that triggered it."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"This change adds a _tracing module that integrates OpenTelemetry span"},{"line_number":16,"context_line":"creation into the RPC call path. On the client side, trace_send() wraps"},{"line_number":17,"context_line":"call() and cast() in rpc/client.py, creating PRODUCER spans and injecting"},{"line_number":18,"context_line":"the W3C traceparent header into the serialized message context. On the"},{"line_number":19,"context_line":"server side, trace_receive() wraps the dispatch block in rpc/server.py,"},{"line_number":20,"context_line":"extracting the traceparent from the incoming message context to create"},{"line_number":21,"context_line":"linked CONSUMER spans. The trace context propagates through the existing"},{"line_number":22,"context_line":"pack_context/unpack_context mechanism as a _context_traceparent field,"},{"line_number":23,"context_line":"requiring no changes to drivers or the message format."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"When a TracerProvider is already configured by the host process (e.g."},{"line_number":26,"context_line":"via oslo.middleware\u0027s WSGI tracing), the module reuses it so that RPC"},{"line_number":27,"context_line":"spans appear as children of the originating HTTP request trace. When no"},{"line_number":28,"context_line":"provider exists, it creates one using the configured OTLP gRPC endpoint."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"The feature is disabled by default and controlled by three configuration"},{"line_number":31,"context_line":"options under the oslo_messaging_tracing group: tracing_enabled,"},{"line_number":32,"context_line":"tracing_service_name, and otel_exporter_otlp_endpoint. The OpenTelemetry"},{"line_number":33,"context_line":"packages are declared as an optional dependency group (\"tracing\") and are"},{"line_number":34,"context_line":"not imported unless tracing is enabled, so there is zero overhead for"},{"line_number":35,"context_line":"deployments that do not use it."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Assisted-By: claude-code opus 4.6"},{"line_number":38,"context_line":"Change-Id: Iedc380e55bef1f416cbc3313390f05976176298d"},{"line_number":39,"context_line":"Signed-off-by: Juan Larriba \u003cjlarriba@redhat.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"da9f85be_fd5c13d0","line":36,"range":{"start_line":13,"start_character":35,"end_line":36,"end_character":1},"in_reply_to":"c4e43c8e_70943ca5","updated":"2026-06-10 10:48:48.000000000","message":"Done","commit_id":"3c166c6306f7bd83d8c0b8871a2d73506c26680a"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"e1832a87b063ee13cd4c2bf8c3bb2217fbf1600a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"f6ed2c35_563452a7","updated":"2026-07-07 14:37:23.000000000","message":"LGTM, previous comments seems all addressed","commit_id":"8fd10d5730e7d0d2d41711379ddeb00afc8a3873"},{"author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"change_message_id":"840e13a642c5f03046ee43275b7bd5e863725f3e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"f68d92da_edaf2b2f","updated":"2026-07-08 07:13:40.000000000","message":"Takashi-san, Stephen is on leave for a while, I addressed all his comments and Herv\u0027e gave a +2, what do you think about this?","commit_id":"8fd10d5730e7d0d2d41711379ddeb00afc8a3873"}],"oslo_messaging/_tracing/__init__.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e36537929508c5201f9ca79f25ff275333aa7cde","unresolved":true,"context_lines":[{"line_number":1,"context_line":"__all__ \u003d ["},{"line_number":2,"context_line":"    \u0027trace_send\u0027,"},{"line_number":3,"context_line":"    \u0027trace_receive\u0027,"},{"line_number":4,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":6,"id":"a8c61519_414426ec","line":1,"updated":"2026-06-05 16:40:47.000000000","message":"You want a license header here","commit_id":"3c166c6306f7bd83d8c0b8871a2d73506c26680a"},{"author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"change_message_id":"a0ad037a53cdd1f121b0a6f6be98edb96170c00c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"__all__ \u003d ["},{"line_number":2,"context_line":"    \u0027trace_send\u0027,"},{"line_number":3,"context_line":"    \u0027trace_receive\u0027,"},{"line_number":4,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":6,"id":"c6fcbd02_6e25dabd","line":1,"in_reply_to":"16b98fc9_b58bb75c","updated":"2026-06-10 10:48:48.000000000","message":"Because hacking only parse files that have actual code. Im fixing it.","commit_id":"3c166c6306f7bd83d8c0b8871a2d73506c26680a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5b1df56dde3cae5d9c7d8db947a484eafcce92d4","unresolved":true,"context_lines":[{"line_number":1,"context_line":"__all__ \u003d ["},{"line_number":2,"context_line":"    \u0027trace_send\u0027,"},{"line_number":3,"context_line":"    \u0027trace_receive\u0027,"},{"line_number":4,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":6,"id":"16b98fc9_b58bb75c","line":1,"in_reply_to":"a8c61519_414426ec","updated":"2026-06-05 16:41:26.000000000","message":"(I\u0027m very surprised hacking didn\u0027t pick up on this, tbh)","commit_id":"3c166c6306f7bd83d8c0b8871a2d73506c26680a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e36537929508c5201f9ca79f25ff275333aa7cde","unresolved":true,"context_lines":[{"line_number":3,"context_line":"    \u0027trace_receive\u0027,"},{"line_number":4,"context_line":"]"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"from .client import *"}],"source_content_type":"text/x-python","patch_set":6,"id":"172e8560_19d1e41f","line":6,"updated":"2026-06-05 16:40:47.000000000","message":"Can you be explicit in what you\u0027re importing here\n\n\n\n```suggestion\nfrom .client import trace_send\nfrom .client import trace_receive\n```","commit_id":"3c166c6306f7bd83d8c0b8871a2d73506c26680a"},{"author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"change_message_id":"a0ad037a53cdd1f121b0a6f6be98edb96170c00c","unresolved":false,"context_lines":[{"line_number":3,"context_line":"    \u0027trace_receive\u0027,"},{"line_number":4,"context_line":"]"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"from .client import *"}],"source_content_type":"text/x-python","patch_set":6,"id":"df1c58ab_8f77d09f","line":6,"in_reply_to":"172e8560_19d1e41f","updated":"2026-06-10 10:48:48.000000000","message":"Done","commit_id":"3c166c6306f7bd83d8c0b8871a2d73506c26680a"}],"oslo_messaging/_tracing/client.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e36537929508c5201f9ca79f25ff275333aa7cde","unresolved":true,"context_lines":[{"line_number":59,"context_line":"    endpoint \u003d conf.oslo_messaging_tracing.otel_exporter_otlp_endpoint"},{"line_number":60,"context_line":"    insecure \u003d conf.oslo_messaging_tracing.insecure"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    if protocol \u003d\u003d \u0027http/protobuf\u0027:"},{"line_number":63,"context_line":"        try:"},{"line_number":64,"context_line":"            import opentelemetry.exporter.otlp.proto.http \\"},{"line_number":65,"context_line":"                as otel_http"}],"source_content_type":"text/x-python","patch_set":6,"id":"375a4c6f_b2a926b7","line":62,"updated":"2026-06-05 16:40:47.000000000","message":"nit: Could we use a match here to make this exhaustive?\n\n\n```suggestion\n    match protocol:\n        case \u0027http/protobuf\u0027:\n            ....\n        case \u0027grpc\u0027:\n            ....\n        case _:\n            # we can\u0027t get here\n            raise RuntimeError(f\u0027invalid protocol: {protocol}\u0027)\n```","commit_id":"3c166c6306f7bd83d8c0b8871a2d73506c26680a"},{"author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"change_message_id":"a0ad037a53cdd1f121b0a6f6be98edb96170c00c","unresolved":false,"context_lines":[{"line_number":59,"context_line":"    endpoint \u003d conf.oslo_messaging_tracing.otel_exporter_otlp_endpoint"},{"line_number":60,"context_line":"    insecure \u003d conf.oslo_messaging_tracing.insecure"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"    if protocol \u003d\u003d \u0027http/protobuf\u0027:"},{"line_number":63,"context_line":"        try:"},{"line_number":64,"context_line":"            import opentelemetry.exporter.otlp.proto.http \\"},{"line_number":65,"context_line":"                as otel_http"}],"source_content_type":"text/x-python","patch_set":6,"id":"b9786229_69ce9761","line":62,"in_reply_to":"375a4c6f_b2a926b7","updated":"2026-06-10 10:48:48.000000000","message":"Done","commit_id":"3c166c6306f7bd83d8c0b8871a2d73506c26680a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e36537929508c5201f9ca79f25ff275333aa7cde","unresolved":true,"context_lines":[{"line_number":98,"context_line":"    try:"},{"line_number":99,"context_line":"        from opentelemetry import trace as otel_trace"},{"line_number":100,"context_line":"    except ImportError:"},{"line_number":101,"context_line":"        LOG.warning(\"opentelemetry packages not installed; \""},{"line_number":102,"context_line":"                    \"install oslo.messaging[tracing-http] or \""},{"line_number":103,"context_line":"                    \"oslo.messaging[tracing-grpc] to enable \""},{"line_number":104,"context_line":"                    \"tracing\")"}],"source_content_type":"text/x-python","patch_set":6,"id":"a3c9d195_b76f4ae4","line":101,"updated":"2026-06-05 16:40:47.000000000","message":"How critical is this? LOG.warning is typically seen by operators. Do we want this to be LOG.info or should it be an exception? I\u0027d personally lean to the latter as the operator has asked for tracing to be enabled by we\u0027re missing libraries. If so, maybe we want to just drop the `try - except` and let it hard fail?","commit_id":"3c166c6306f7bd83d8c0b8871a2d73506c26680a"},{"author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"change_message_id":"a0ad037a53cdd1f121b0a6f6be98edb96170c00c","unresolved":false,"context_lines":[{"line_number":98,"context_line":"    try:"},{"line_number":99,"context_line":"        from opentelemetry import trace as otel_trace"},{"line_number":100,"context_line":"    except ImportError:"},{"line_number":101,"context_line":"        LOG.warning(\"opentelemetry packages not installed; \""},{"line_number":102,"context_line":"                    \"install oslo.messaging[tracing-http] or \""},{"line_number":103,"context_line":"                    \"oslo.messaging[tracing-grpc] to enable \""},{"line_number":104,"context_line":"                    \"tracing\")"}],"source_content_type":"text/x-python","patch_set":6,"id":"20b236f1_98bc7d60","line":101,"in_reply_to":"a3c9d195_b76f4ae4","updated":"2026-06-10 10:48:48.000000000","message":"Yeah, I agree. In the tracing in oslo.middleware is done exactly as you said, but I missed it here. Fixing it.","commit_id":"3c166c6306f7bd83d8c0b8871a2d73506c26680a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e36537929508c5201f9ca79f25ff275333aa7cde","unresolved":true,"context_lines":[{"line_number":107,"context_line":"    provider \u003d otel_trace.get_tracer_provider()"},{"line_number":108,"context_line":"    provider_type \u003d type(provider).__name__"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    if provider_type \u003d\u003d \"ProxyTracerProvider\":"},{"line_number":111,"context_line":"        try:"},{"line_number":112,"context_line":"            from opentelemetry.sdk import resources as otel_resources"},{"line_number":113,"context_line":"            from opentelemetry.sdk import trace as otel_sdk_trace"}],"source_content_type":"text/x-python","patch_set":6,"id":"10c4d9d1_1c473155","line":110,"updated":"2026-06-05 16:40:47.000000000","message":"Any reason we can\u0027t use `isinstance` here? I\u0027m also not sure what this is doing. Can you add a context comment?","commit_id":"3c166c6306f7bd83d8c0b8871a2d73506c26680a"},{"author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"change_message_id":"a0ad037a53cdd1f121b0a6f6be98edb96170c00c","unresolved":false,"context_lines":[{"line_number":107,"context_line":"    provider \u003d otel_trace.get_tracer_provider()"},{"line_number":108,"context_line":"    provider_type \u003d type(provider).__name__"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    if provider_type \u003d\u003d \"ProxyTracerProvider\":"},{"line_number":111,"context_line":"        try:"},{"line_number":112,"context_line":"            from opentelemetry.sdk import resources as otel_resources"},{"line_number":113,"context_line":"            from opentelemetry.sdk import trace as otel_sdk_trace"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a7e616e_9a6092be","line":110,"in_reply_to":"10c4d9d1_1c473155","updated":"2026-06-10 10:48:48.000000000","message":"Done","commit_id":"3c166c6306f7bd83d8c0b8871a2d73506c26680a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e36537929508c5201f9ca79f25ff275333aa7cde","unresolved":true,"context_lines":[{"line_number":113,"context_line":"            from opentelemetry.sdk import trace as otel_sdk_trace"},{"line_number":114,"context_line":"            from opentelemetry.sdk.trace import export as otel_export"},{"line_number":115,"context_line":"        except ImportError:"},{"line_number":116,"context_line":"            LOG.warning("},{"line_number":117,"context_line":"                \"opentelemetry SDK packages not installed; \""},{"line_number":118,"context_line":"                \"install oslo.messaging[tracing-http] or \""},{"line_number":119,"context_line":"                \"oslo.messaging[tracing-grpc] to enable \""}],"source_content_type":"text/x-python","patch_set":6,"id":"1bc818b4_9803d0e7","line":116,"updated":"2026-06-05 16:40:47.000000000","message":"Same comment as above RE: warnings","commit_id":"3c166c6306f7bd83d8c0b8871a2d73506c26680a"},{"author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"change_message_id":"a0ad037a53cdd1f121b0a6f6be98edb96170c00c","unresolved":false,"context_lines":[{"line_number":113,"context_line":"            from opentelemetry.sdk import trace as otel_sdk_trace"},{"line_number":114,"context_line":"            from opentelemetry.sdk.trace import export as otel_export"},{"line_number":115,"context_line":"        except ImportError:"},{"line_number":116,"context_line":"            LOG.warning("},{"line_number":117,"context_line":"                \"opentelemetry SDK packages not installed; \""},{"line_number":118,"context_line":"                \"install oslo.messaging[tracing-http] or \""},{"line_number":119,"context_line":"                \"oslo.messaging[tracing-grpc] to enable \""}],"source_content_type":"text/x-python","patch_set":6,"id":"5ac69b42_a2bc6928","line":116,"in_reply_to":"1bc818b4_9803d0e7","updated":"2026-06-10 10:48:48.000000000","message":"Done","commit_id":"3c166c6306f7bd83d8c0b8871a2d73506c26680a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e36537929508c5201f9ca79f25ff275333aa7cde","unresolved":true,"context_lines":[{"line_number":140,"context_line":"    if not conf.oslo_messaging_tracing.tracing_enabled:"},{"line_number":141,"context_line":"        yield"},{"line_number":142,"context_line":"        return"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"    tracer \u003d _get_tracer(conf)"},{"line_number":145,"context_line":"    if tracer is None:"},{"line_number":146,"context_line":"        yield"},{"line_number":147,"context_line":"        return"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    from opentelemetry import propagate as otel_propagate"},{"line_number":150,"context_line":"    from opentelemetry import trace as otel_trace"},{"line_number":151,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"6f4a2beb_ab051731","line":148,"range":{"start_line":143,"start_character":1,"end_line":148,"end_character":1},"updated":"2026-06-05 16:40:47.000000000","message":"Assuming we drop the try-except above, this should become\n\n\n\n```suggestion\n\n    tracer \u003d _get_tracer(conf)\n\n```","commit_id":"3c166c6306f7bd83d8c0b8871a2d73506c26680a"},{"author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"change_message_id":"a0ad037a53cdd1f121b0a6f6be98edb96170c00c","unresolved":false,"context_lines":[{"line_number":140,"context_line":"    if not conf.oslo_messaging_tracing.tracing_enabled:"},{"line_number":141,"context_line":"        yield"},{"line_number":142,"context_line":"        return"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"    tracer \u003d _get_tracer(conf)"},{"line_number":145,"context_line":"    if tracer is None:"},{"line_number":146,"context_line":"        yield"},{"line_number":147,"context_line":"        return"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    from opentelemetry import propagate as otel_propagate"},{"line_number":150,"context_line":"    from opentelemetry import trace as otel_trace"},{"line_number":151,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"e251e5cf_dceb0a76","line":148,"range":{"start_line":143,"start_character":1,"end_line":148,"end_character":1},"in_reply_to":"6f4a2beb_ab051731","updated":"2026-06-10 10:48:48.000000000","message":"Done","commit_id":"3c166c6306f7bd83d8c0b8871a2d73506c26680a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e36537929508c5201f9ca79f25ff275333aa7cde","unresolved":true,"context_lines":[{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    from opentelemetry import propagate as otel_propagate"},{"line_number":150,"context_line":"    from opentelemetry import trace as otel_trace"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"    span_name \u003d f\"{target.topic}.{method}\""},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    with tracer.start_as_current_span("},{"line_number":155,"context_line":"            span_name,"},{"line_number":156,"context_line":"            kind\u003dotel_trace.SpanKind.PRODUCER) as span:"},{"line_number":157,"context_line":"        span.set_attribute(\"messaging.system\", \"rabbitmq\")"},{"line_number":158,"context_line":"        span.set_attribute(\"messaging.operation\", call_type)"},{"line_number":159,"context_line":"        span.set_attribute("}],"source_content_type":"text/x-python","patch_set":6,"id":"f5cd63f5_39a24847","line":156,"range":{"start_line":151,"start_character":1,"end_line":156,"end_character":55},"updated":"2026-06-05 16:40:47.000000000","message":"nit:\n\n```suggestion\n\n    with tracer.start_as_current_span(\n        f\"{target.topic}.{method}\", kind\u003dotel_trace.SpanKind.PRODUCER\n    ) as span:\n```\n\nAlso, dumb question but why do we have a parent context to consider below but not here? I assume the parent is the","commit_id":"3c166c6306f7bd83d8c0b8871a2d73506c26680a"},{"author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"change_message_id":"a0ad037a53cdd1f121b0a6f6be98edb96170c00c","unresolved":false,"context_lines":[{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    from opentelemetry import propagate as otel_propagate"},{"line_number":150,"context_line":"    from opentelemetry import trace as otel_trace"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"    span_name \u003d f\"{target.topic}.{method}\""},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    with tracer.start_as_current_span("},{"line_number":155,"context_line":"            span_name,"},{"line_number":156,"context_line":"            kind\u003dotel_trace.SpanKind.PRODUCER) as span:"},{"line_number":157,"context_line":"        span.set_attribute(\"messaging.system\", \"rabbitmq\")"},{"line_number":158,"context_line":"        span.set_attribute(\"messaging.operation\", call_type)"},{"line_number":159,"context_line":"        span.set_attribute("}],"source_content_type":"text/x-python","patch_set":6,"id":"85a29ffe_b8d45be2","line":156,"range":{"start_line":151,"start_character":1,"end_line":156,"end_character":55},"in_reply_to":"f5cd63f5_39a24847","updated":"2026-06-10 10:48:48.000000000","message":"Here we do not need to pass a parent context because the current span context is already active. The default behavior of start_as_current_span when no explicit context is passed is to make the new span a child of whatever span is active in the current thread.\n\nIn trace_receive we are in a different process with no active span, so we need to explicitly extract the parent context from the message headers and pass it in the parameter to link it to the producer.","commit_id":"3c166c6306f7bd83d8c0b8871a2d73506c26680a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e36537929508c5201f9ca79f25ff275333aa7cde","unresolved":true,"context_lines":[{"line_number":156,"context_line":"            kind\u003dotel_trace.SpanKind.PRODUCER) as span:"},{"line_number":157,"context_line":"        span.set_attribute(\"messaging.system\", \"rabbitmq\")"},{"line_number":158,"context_line":"        span.set_attribute(\"messaging.operation\", call_type)"},{"line_number":159,"context_line":"        span.set_attribute("},{"line_number":160,"context_line":"            \"messaging.destination.name\", target.topic)"},{"line_number":161,"context_line":"        span.set_attribute(\"rpc.method\", method)"},{"line_number":162,"context_line":"        if target.namespace:"},{"line_number":163,"context_line":"            span.set_attribute(\"rpc.service\","},{"line_number":164,"context_line":"                               target.namespace)"},{"line_number":165,"context_line":"        if msg_ctxt.get(\"request_id\"):"},{"line_number":166,"context_line":"            span.set_attribute(\"openstack.request_id\","},{"line_number":167,"context_line":"                               msg_ctxt[\"request_id\"])"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"        otel_propagate.inject(msg_ctxt)"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"        try:"},{"line_number":172,"context_line":"            yield"},{"line_number":173,"context_line":"        except Exception as ex:"},{"line_number":174,"context_line":"            span.set_status("},{"line_number":175,"context_line":"                otel_trace.StatusCode.ERROR, str(ex))"},{"line_number":176,"context_line":"            span.record_exception(ex)"},{"line_number":177,"context_line":"            raise"},{"line_number":178,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"93481907_eb6338f3","line":175,"range":{"start_line":159,"start_character":0,"end_line":175,"end_character":53},"updated":"2026-06-05 16:40:47.000000000","message":"```suggestion\n        span.set_attribute(\"messaging.destination.name\", target.topic)\n        span.set_attribute(\"rpc.method\", method)\n        if target.namespace:\n            span.set_attribute(\"rpc.service\", target.namespace)\n        if msg_ctxt.get(\"request_id\"):\n            span.set_attribute(\"openstack.request_id\", msg_ctxt[\"request_id\"])\n\n        otel_propagate.inject(msg_ctxt)\n\n        try:\n            yield\n        except Exception as ex:\n            span.set_status(otel_trace.StatusCode.ERROR, str(ex))\n```","commit_id":"3c166c6306f7bd83d8c0b8871a2d73506c26680a"},{"author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"change_message_id":"a0ad037a53cdd1f121b0a6f6be98edb96170c00c","unresolved":false,"context_lines":[{"line_number":156,"context_line":"            kind\u003dotel_trace.SpanKind.PRODUCER) as span:"},{"line_number":157,"context_line":"        span.set_attribute(\"messaging.system\", \"rabbitmq\")"},{"line_number":158,"context_line":"        span.set_attribute(\"messaging.operation\", call_type)"},{"line_number":159,"context_line":"        span.set_attribute("},{"line_number":160,"context_line":"            \"messaging.destination.name\", target.topic)"},{"line_number":161,"context_line":"        span.set_attribute(\"rpc.method\", method)"},{"line_number":162,"context_line":"        if target.namespace:"},{"line_number":163,"context_line":"            span.set_attribute(\"rpc.service\","},{"line_number":164,"context_line":"                               target.namespace)"},{"line_number":165,"context_line":"        if msg_ctxt.get(\"request_id\"):"},{"line_number":166,"context_line":"            span.set_attribute(\"openstack.request_id\","},{"line_number":167,"context_line":"                               msg_ctxt[\"request_id\"])"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"        otel_propagate.inject(msg_ctxt)"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"        try:"},{"line_number":172,"context_line":"            yield"},{"line_number":173,"context_line":"        except Exception as ex:"},{"line_number":174,"context_line":"            span.set_status("},{"line_number":175,"context_line":"                otel_trace.StatusCode.ERROR, str(ex))"},{"line_number":176,"context_line":"            span.record_exception(ex)"},{"line_number":177,"context_line":"            raise"},{"line_number":178,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"e5fbbe65_b217df6b","line":175,"range":{"start_line":159,"start_character":0,"end_line":175,"end_character":53},"in_reply_to":"93481907_eb6338f3","updated":"2026-06-10 10:48:48.000000000","message":"Done","commit_id":"3c166c6306f7bd83d8c0b8871a2d73506c26680a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e36537929508c5201f9ca79f25ff275333aa7cde","unresolved":true,"context_lines":[{"line_number":183,"context_line":"        yield"},{"line_number":184,"context_line":"        return"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    tracer \u003d _get_tracer(conf)"},{"line_number":187,"context_line":"    if tracer is None:"},{"line_number":188,"context_line":"        yield"},{"line_number":189,"context_line":"        return"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"    from opentelemetry import propagate as otel_propagate"},{"line_number":192,"context_line":"    from opentelemetry import trace as otel_trace"}],"source_content_type":"text/x-python","patch_set":6,"id":"cac7c4bc_1613bb73","line":189,"range":{"start_line":186,"start_character":0,"end_line":189,"end_character":14},"updated":"2026-06-05 16:40:47.000000000","message":"as above\n\n```suggestion\n    tracer \u003d _get_tracer(conf)\n```","commit_id":"3c166c6306f7bd83d8c0b8871a2d73506c26680a"},{"author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"change_message_id":"a0ad037a53cdd1f121b0a6f6be98edb96170c00c","unresolved":false,"context_lines":[{"line_number":183,"context_line":"        yield"},{"line_number":184,"context_line":"        return"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    tracer \u003d _get_tracer(conf)"},{"line_number":187,"context_line":"    if tracer is None:"},{"line_number":188,"context_line":"        yield"},{"line_number":189,"context_line":"        return"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"    from opentelemetry import propagate as otel_propagate"},{"line_number":192,"context_line":"    from opentelemetry import trace as otel_trace"}],"source_content_type":"text/x-python","patch_set":6,"id":"7e58d9ab_7c663ab1","line":189,"range":{"start_line":186,"start_character":0,"end_line":189,"end_character":14},"in_reply_to":"cac7c4bc_1613bb73","updated":"2026-06-10 10:48:48.000000000","message":"Done","commit_id":"3c166c6306f7bd83d8c0b8871a2d73506c26680a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e36537929508c5201f9ca79f25ff275333aa7cde","unresolved":true,"context_lines":[{"line_number":195,"context_line":"    method \u003d message.message.get(\u0027method\u0027, \u0027unknown\u0027)"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"    parent_ctx \u003d otel_propagate.extract(ctxt)"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"    span_name \u003d f\"{method} receive\""},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"    with tracer.start_as_current_span("},{"line_number":202,"context_line":"            span_name, context\u003dparent_ctx,"},{"line_number":203,"context_line":"            kind\u003dotel_trace.SpanKind.CONSUMER) as span:"},{"line_number":204,"context_line":"        span.set_attribute(\"messaging.system\", \"rabbitmq\")"},{"line_number":205,"context_line":"        span.set_attribute(\"messaging.operation\", \"receive\")"},{"line_number":206,"context_line":"        span.set_attribute(\"rpc.method\", method)"}],"source_content_type":"text/x-python","patch_set":6,"id":"137d5e3f_d43c594c","line":203,"range":{"start_line":198,"start_character":1,"end_line":203,"end_character":55},"updated":"2026-06-05 16:40:47.000000000","message":"nit:\n\n```suggestion\n\n    with tracer.start_as_current_span(\n        f\"{method} receive\",\n        context\u003dparent_ctx,\n        kind\u003dotel_trace.SpanKind.CONSUMER\n    ) as span:\n```","commit_id":"3c166c6306f7bd83d8c0b8871a2d73506c26680a"},{"author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"change_message_id":"a0ad037a53cdd1f121b0a6f6be98edb96170c00c","unresolved":false,"context_lines":[{"line_number":195,"context_line":"    method \u003d message.message.get(\u0027method\u0027, \u0027unknown\u0027)"},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"    parent_ctx \u003d otel_propagate.extract(ctxt)"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"    span_name \u003d f\"{method} receive\""},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"    with tracer.start_as_current_span("},{"line_number":202,"context_line":"            span_name, context\u003dparent_ctx,"},{"line_number":203,"context_line":"            kind\u003dotel_trace.SpanKind.CONSUMER) as span:"},{"line_number":204,"context_line":"        span.set_attribute(\"messaging.system\", \"rabbitmq\")"},{"line_number":205,"context_line":"        span.set_attribute(\"messaging.operation\", \"receive\")"},{"line_number":206,"context_line":"        span.set_attribute(\"rpc.method\", method)"}],"source_content_type":"text/x-python","patch_set":6,"id":"aaa3ef57_ccdb51d0","line":203,"range":{"start_line":198,"start_character":1,"end_line":203,"end_character":55},"in_reply_to":"137d5e3f_d43c594c","updated":"2026-06-10 10:48:48.000000000","message":"Done","commit_id":"3c166c6306f7bd83d8c0b8871a2d73506c26680a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e36537929508c5201f9ca79f25ff275333aa7cde","unresolved":true,"context_lines":[{"line_number":204,"context_line":"        span.set_attribute(\"messaging.system\", \"rabbitmq\")"},{"line_number":205,"context_line":"        span.set_attribute(\"messaging.operation\", \"receive\")"},{"line_number":206,"context_line":"        span.set_attribute(\"rpc.method\", method)"},{"line_number":207,"context_line":"        if message.msg_id:"},{"line_number":208,"context_line":"            span.set_attribute("},{"line_number":209,"context_line":"                \"messaging.message.id\", message.msg_id)"},{"line_number":210,"context_line":"        if ctxt.get(\"request_id\"):"},{"line_number":211,"context_line":"            span.set_attribute(\"openstack.request_id\","},{"line_number":212,"context_line":"                               ctxt[\"request_id\"])"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"        try:"},{"line_number":215,"context_line":"            yield"}],"source_content_type":"text/x-python","patch_set":6,"id":"de9b328b_4ec935ee","line":212,"range":{"start_line":207,"start_character":0,"end_line":212,"end_character":50},"updated":"2026-06-05 16:40:47.000000000","message":"nit:\n\n```suggestion\n        if message.msg_id:\n            span.set_attribute(\"messaging.message.id\", message.msg_id)\n        if ctxt.get(\"request_id\"):\n            span.set_attribute(\"openstack.request_id\", ctxt[\"request_id\"])\n```","commit_id":"3c166c6306f7bd83d8c0b8871a2d73506c26680a"},{"author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"change_message_id":"a0ad037a53cdd1f121b0a6f6be98edb96170c00c","unresolved":false,"context_lines":[{"line_number":204,"context_line":"        span.set_attribute(\"messaging.system\", \"rabbitmq\")"},{"line_number":205,"context_line":"        span.set_attribute(\"messaging.operation\", \"receive\")"},{"line_number":206,"context_line":"        span.set_attribute(\"rpc.method\", method)"},{"line_number":207,"context_line":"        if message.msg_id:"},{"line_number":208,"context_line":"            span.set_attribute("},{"line_number":209,"context_line":"                \"messaging.message.id\", message.msg_id)"},{"line_number":210,"context_line":"        if ctxt.get(\"request_id\"):"},{"line_number":211,"context_line":"            span.set_attribute(\"openstack.request_id\","},{"line_number":212,"context_line":"                               ctxt[\"request_id\"])"},{"line_number":213,"context_line":""},{"line_number":214,"context_line":"        try:"},{"line_number":215,"context_line":"            yield"}],"source_content_type":"text/x-python","patch_set":6,"id":"5ceddd97_e11d1cd3","line":212,"range":{"start_line":207,"start_character":0,"end_line":212,"end_character":50},"in_reply_to":"de9b328b_4ec935ee","updated":"2026-06-10 10:48:48.000000000","message":"Done","commit_id":"3c166c6306f7bd83d8c0b8871a2d73506c26680a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e36537929508c5201f9ca79f25ff275333aa7cde","unresolved":true,"context_lines":[{"line_number":213,"context_line":""},{"line_number":214,"context_line":"        try:"},{"line_number":215,"context_line":"            yield"},{"line_number":216,"context_line":"        except Exception as ex:"},{"line_number":217,"context_line":"            span.set_status("},{"line_number":218,"context_line":"                otel_trace.StatusCode.ERROR, str(ex))"},{"line_number":219,"context_line":"            span.record_exception(ex)"},{"line_number":220,"context_line":"            raise"}],"source_content_type":"text/x-python","patch_set":6,"id":"abd84815_ce3ff8cb","line":218,"range":{"start_line":216,"start_character":31,"end_line":218,"end_character":53},"updated":"2026-06-05 16:40:47.000000000","message":"nit:\n\n```suggestion\n        except Exception as ex:\n            span.set_status(otel_trace.StatusCode.ERROR, str(ex))\n```","commit_id":"3c166c6306f7bd83d8c0b8871a2d73506c26680a"},{"author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"change_message_id":"a0ad037a53cdd1f121b0a6f6be98edb96170c00c","unresolved":false,"context_lines":[{"line_number":213,"context_line":""},{"line_number":214,"context_line":"        try:"},{"line_number":215,"context_line":"            yield"},{"line_number":216,"context_line":"        except Exception as ex:"},{"line_number":217,"context_line":"            span.set_status("},{"line_number":218,"context_line":"                otel_trace.StatusCode.ERROR, str(ex))"},{"line_number":219,"context_line":"            span.record_exception(ex)"},{"line_number":220,"context_line":"            raise"}],"source_content_type":"text/x-python","patch_set":6,"id":"5ee1d69c_0cb486ff","line":218,"range":{"start_line":216,"start_character":31,"end_line":218,"end_character":53},"in_reply_to":"abd84815_ce3ff8cb","updated":"2026-06-10 10:48:48.000000000","message":"Done","commit_id":"3c166c6306f7bd83d8c0b8871a2d73506c26680a"}],"oslo_messaging/rpc/client.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e36537929508c5201f9ca79f25ff275333aa7cde","unresolved":true,"context_lines":[{"line_number":147,"context_line":"        msg \u003d self._make_message(ctxt, method, kwargs)"},{"line_number":148,"context_line":"        msg_ctxt \u003d self.serializer.serialize_context(ctxt)"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"        self._check_version_cap(msg.get(\u0027version\u0027))"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"        with tracing.trace_send(self.conf, target\u003dself.target,"},{"line_number":153,"context_line":"                                method\u003dmethod, call_type\u003d\"cast\","},{"line_number":154,"context_line":"                                msg_ctxt\u003dmsg_ctxt):"},{"line_number":155,"context_line":"            with metrics.measure_metrics(self.conf, target\u003dself.target,"},{"line_number":156,"context_line":"                                         method\u003dmethod, call_type\u003d\"cast\"):"},{"line_number":157,"context_line":"                try:"},{"line_number":158,"context_line":"                    self.transport._send("},{"line_number":159,"context_line":"                        self.target, msg_ctxt, msg,"}],"source_content_type":"text/x-python","patch_set":6,"id":"33268433_a024d77d","line":156,"range":{"start_line":150,"start_character":51,"end_line":156,"end_character":74},"updated":"2026-06-05 16:40:47.000000000","message":"This is possible since Python 3.10.\n\n```suggestion\n        self._check_version_cap(msg.get(\u0027version\u0027))\n\n        with tracing.trace_send(\n            self.conf, target\u003dself.target,\n            method\u003dmethod, call_type\u003d\"cast\",\n            msg_ctxt\u003dmsg_ctxt\n        ), metrics.measure_metrics(\n            self.conf, target\u003dself.target,\n            method\u003dmethod, call_type\u003d\"cast\"\n        ):\n```","commit_id":"3c166c6306f7bd83d8c0b8871a2d73506c26680a"},{"author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"change_message_id":"a0ad037a53cdd1f121b0a6f6be98edb96170c00c","unresolved":false,"context_lines":[{"line_number":147,"context_line":"        msg \u003d self._make_message(ctxt, method, kwargs)"},{"line_number":148,"context_line":"        msg_ctxt \u003d self.serializer.serialize_context(ctxt)"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"        self._check_version_cap(msg.get(\u0027version\u0027))"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"        with tracing.trace_send(self.conf, target\u003dself.target,"},{"line_number":153,"context_line":"                                method\u003dmethod, call_type\u003d\"cast\","},{"line_number":154,"context_line":"                                msg_ctxt\u003dmsg_ctxt):"},{"line_number":155,"context_line":"            with metrics.measure_metrics(self.conf, target\u003dself.target,"},{"line_number":156,"context_line":"                                         method\u003dmethod, call_type\u003d\"cast\"):"},{"line_number":157,"context_line":"                try:"},{"line_number":158,"context_line":"                    self.transport._send("},{"line_number":159,"context_line":"                        self.target, msg_ctxt, msg,"}],"source_content_type":"text/x-python","patch_set":6,"id":"409d22c0_01145535","line":156,"range":{"start_line":150,"start_character":51,"end_line":156,"end_character":74},"in_reply_to":"33268433_a024d77d","updated":"2026-06-10 10:48:48.000000000","message":"Done","commit_id":"3c166c6306f7bd83d8c0b8871a2d73506c26680a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e36537929508c5201f9ca79f25ff275333aa7cde","unresolved":true,"context_lines":[{"line_number":179,"context_line":""},{"line_number":180,"context_line":"        self._check_version_cap(msg.get(\u0027version\u0027))"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"        with tracing.trace_send(self.conf, target\u003dself.target,"},{"line_number":183,"context_line":"                                method\u003dmethod, call_type\u003d\"call\","},{"line_number":184,"context_line":"                                msg_ctxt\u003dmsg_ctxt):"},{"line_number":185,"context_line":"            with metrics.measure_metrics(self.conf, target\u003dself.target,"},{"line_number":186,"context_line":"                                         method\u003dmethod, call_type\u003d\"call\"):"},{"line_number":187,"context_line":"                try:"},{"line_number":188,"context_line":"                    result \u003d self.transport._send("},{"line_number":189,"context_line":"                        self.target, msg_ctxt, msg, wait_for_reply\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":6,"id":"62faca40_218dfda0","line":186,"range":{"start_line":182,"start_character":0,"end_line":186,"end_character":74},"updated":"2026-06-05 16:40:47.000000000","message":"As above","commit_id":"3c166c6306f7bd83d8c0b8871a2d73506c26680a"},{"author":{"_account_id":32968,"name":"Juan Larriba","email":"jlarriba@redhat.com","username":"jlarriba"},"change_message_id":"a0ad037a53cdd1f121b0a6f6be98edb96170c00c","unresolved":false,"context_lines":[{"line_number":179,"context_line":""},{"line_number":180,"context_line":"        self._check_version_cap(msg.get(\u0027version\u0027))"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"        with tracing.trace_send(self.conf, target\u003dself.target,"},{"line_number":183,"context_line":"                                method\u003dmethod, call_type\u003d\"call\","},{"line_number":184,"context_line":"                                msg_ctxt\u003dmsg_ctxt):"},{"line_number":185,"context_line":"            with metrics.measure_metrics(self.conf, target\u003dself.target,"},{"line_number":186,"context_line":"                                         method\u003dmethod, call_type\u003d\"call\"):"},{"line_number":187,"context_line":"                try:"},{"line_number":188,"context_line":"                    result \u003d self.transport._send("},{"line_number":189,"context_line":"                        self.target, msg_ctxt, msg, wait_for_reply\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":6,"id":"38d3629e_c10d4f23","line":186,"range":{"start_line":182,"start_character":0,"end_line":186,"end_character":74},"in_reply_to":"62faca40_218dfda0","updated":"2026-06-10 10:48:48.000000000","message":"Done","commit_id":"3c166c6306f7bd83d8c0b8871a2d73506c26680a"},{"author":{"_account_id":20676,"name":"daniel.pawlik","display_name":"Daniel Pawlik","email":"dpawlik@redhat.com","username":"daniel.pawlik"},"change_message_id":"7e77df7b3b31d48ece390ab40bcdbcf0c878d7de","unresolved":true,"context_lines":[{"line_number":193,"context_line":"                except driver_base.TransportDriverError as ex:"},{"line_number":194,"context_line":"                    raise ClientSendError(self.target, ex)"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"                return self.serializer.deserialize_entity(ctxt, result)"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"    @abc.abstractmethod"},{"line_number":199,"context_line":"    def prepare(self, exchange\u003d_marker, topic\u003d_marker, namespace\u003d_marker,"}],"source_content_type":"text/x-python","patch_set":6,"id":"c1d3b707_9bb19172","line":196,"updated":"2026-05-19 07:14:24.000000000","message":"Maybe the return should be in try?","commit_id":"3c166c6306f7bd83d8c0b8871a2d73506c26680a"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"e36537929508c5201f9ca79f25ff275333aa7cde","unresolved":false,"context_lines":[{"line_number":193,"context_line":"                except driver_base.TransportDriverError as ex:"},{"line_number":194,"context_line":"                    raise ClientSendError(self.target, ex)"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"                return self.serializer.deserialize_entity(ctxt, result)"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"    @abc.abstractmethod"},{"line_number":199,"context_line":"    def prepare(self, exchange\u003d_marker, topic\u003d_marker, namespace\u003d_marker,"}],"source_content_type":"text/x-python","patch_set":6,"id":"a7d7ce2b_19b209db","line":196,"in_reply_to":"c1d3b707_9bb19172","updated":"2026-06-05 16:40:47.000000000","message":"No, `self.transport._send` can raise `TransportDriverError`: `self.serializer.deserialize_entity` cannot","commit_id":"3c166c6306f7bd83d8c0b8871a2d73506c26680a"}],"oslo_messaging/rpc/server.py":[{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"df4aa9e533e60cf133e5e6bd64310c42ee80096b","unresolved":true,"context_lines":[{"line_number":170,"context_line":"            LOG.exception(\"Can not acknowledge message. Skip processing\")"},{"line_number":171,"context_line":"            return"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"        with tracing.trace_receive(self.conf, message):"},{"line_number":174,"context_line":"            failure \u003d None"},{"line_number":175,"context_line":"            try:"},{"line_number":176,"context_line":"                res \u003d self.dispatcher.dispatch(message)"}],"source_content_type":"text/x-python","patch_set":7,"id":"5ec89f82_57334f12","line":173,"updated":"2026-07-08 12:53:32.000000000","message":"I think there is still a correctness issue here.\n\nmessage.acknowledge() is called before entering trace_receive(). If trace_receive() (or tracer initialization performed by it) raises for any reason, the message has already been acknowledged, but it will never be dispatched and no reply will be sent.\n\nObservability should be best-effort and should not be able to affect RPC delivery semantics. Could the tracing context either be entered before acknowledging the message, or alternatively be guaranteed never to propagate exceptions back into the RPC path?","commit_id":"8fd10d5730e7d0d2d41711379ddeb00afc8a3873"}]}
