From 52f84a64ea8e3821a0fba50359193a1bf892a253 Mon Sep 17 00:00:00 2001 From: Jeffery Utter Date: Mon, 12 Feb 2024 16:27:19 -0600 Subject: [PATCH] Allow looking up parent when parent is a named process (#261) --- .../src/opentelemetry_process_propagator.erl | 7 ++++++- .../opentelemetry_process_propagator_test.exs | 18 ++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/propagators/opentelemetry_process_propagator/src/opentelemetry_process_propagator.erl b/propagators/opentelemetry_process_propagator/src/opentelemetry_process_propagator.erl index 4c50d1f..ce579a1 100644 --- a/propagators/opentelemetry_process_propagator/src/opentelemetry_process_propagator.erl +++ b/propagators/opentelemetry_process_propagator/src/opentelemetry_process_propagator.erl @@ -39,7 +39,12 @@ fetch_ctx(Pid) -> otel_ctx(Dictionary) end. --spec pdict(pid()) -> [{term(), term()}] | undefined. +-spec pdict(pid() | atom()) -> [{term(), term()}] | undefined. +pdict(Name) when is_atom(Name) -> + case whereis(Name) of + undefined -> undefined; + Pid -> pdict(Pid) + end; pdict(Pid) -> case process_info(Pid, dictionary) of {dictionary, Dict} -> diff --git a/propagators/opentelemetry_process_propagator/test/opentelemetry_process_propagator_test.exs b/propagators/opentelemetry_process_propagator/test/opentelemetry_process_propagator_test.exs index 9d74e77..d2b927c 100644 --- a/propagators/opentelemetry_process_propagator/test/opentelemetry_process_propagator_test.exs +++ b/propagators/opentelemetry_process_propagator/test/opentelemetry_process_propagator_test.exs @@ -55,6 +55,24 @@ defmodule OpentelemetryProcessPropagatorTest do assert_receive ^ctx end + + test "fetches the parent ctx when parent is named" do + Process.register(self(), TestParent) + + span_ctx = Tracer.start_span("test") + Tracer.set_current_span(span_ctx) + + ctx = Ctx.get_current() + + pid = self() + + :proc_lib.spawn(fn -> + p_ctx = fetch_parent_ctx() + send(pid, p_ctx) + end) + + assert_receive ^ctx + end end describe "fetch_parent_ctx/1" do