mirror of
https://github.com/ocaml-tracing/ocaml-opentelemetry.git
synced 2026-03-08 03:47:59 -04:00
setup ambient context in lwt/eio client setups
This commit is contained in:
parent
942a56c879
commit
bf7eaa97bd
10 changed files with 21 additions and 11 deletions
|
|
@ -23,17 +23,11 @@ open struct
|
||||||
let tid = Thread.id @@ Thread.self () in
|
let tid = Thread.id @@ Thread.self () in
|
||||||
|
|
||||||
let ctx_ref =
|
let ctx_ref =
|
||||||
try Int_map.find tid (Atomic.get self.m)
|
Opentelemetry_util.Util_atomic.update_cas self.m @@ fun m ->
|
||||||
|
try Int_map.find tid m, m
|
||||||
with Not_found ->
|
with Not_found ->
|
||||||
let r = ref Context.empty in
|
let r = ref Context.empty in
|
||||||
while
|
r, Int_map.add tid r m
|
||||||
let m = Atomic.get self.m in
|
|
||||||
let m' = Int_map.add tid r m in
|
|
||||||
not (Atomic.compare_and_set self.m m m')
|
|
||||||
do
|
|
||||||
()
|
|
||||||
done;
|
|
||||||
r
|
|
||||||
in
|
in
|
||||||
|
|
||||||
let old_ctx = !ctx_ref in
|
let old_ctx = !ctx_ref in
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@
|
||||||
threads
|
threads
|
||||||
(re_export opentelemetry.ambient-context.core)
|
(re_export opentelemetry.ambient-context.core)
|
||||||
(re_export opentelemetry.atomic)
|
(re_export opentelemetry.atomic)
|
||||||
|
(re_export opentelemetry.util)
|
||||||
(select
|
(select
|
||||||
default_.ml
|
default_.ml
|
||||||
from
|
from
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@
|
||||||
(re_export opentelemetry)
|
(re_export opentelemetry)
|
||||||
(re_export opentelemetry-client)
|
(re_export opentelemetry-client)
|
||||||
(re_export opentelemetry-client.sync)
|
(re_export opentelemetry-client.sync)
|
||||||
|
opentelemetry.ambient-context.eio
|
||||||
(re_export eio)
|
(re_export eio)
|
||||||
(re_export eio.core)
|
(re_export eio.core)
|
||||||
(re_export eio.unix)
|
(re_export eio.unix)
|
||||||
|
|
|
||||||
|
|
@ -180,6 +180,8 @@ let create_exporter ?(config = Config.make ()) ~sw ~env () =
|
||||||
let create_backend = create_exporter
|
let create_backend = create_exporter
|
||||||
|
|
||||||
let setup_ ~sw ?config env : unit =
|
let setup_ ~sw ?config env : unit =
|
||||||
|
Opentelemetry_ambient_context.set_current_storage
|
||||||
|
Opentelemetry_ambient_context_eio.storage;
|
||||||
let exp = create_exporter ?config ~sw ~env () in
|
let exp = create_exporter ?config ~sw ~env () in
|
||||||
Main_exporter.set exp
|
Main_exporter.set exp
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -120,6 +120,7 @@ let create_exporter ?(config = Config.make ()) () =
|
||||||
let create_backend = create_exporter
|
let create_backend = create_exporter
|
||||||
|
|
||||||
let setup_ ?config () : unit =
|
let setup_ ?config () : unit =
|
||||||
|
Opentelemetry_client_lwt.Util_ambient_context.setup_ambient_context ();
|
||||||
let exp = create_exporter ?config () in
|
let exp = create_exporter ?config () in
|
||||||
Main_exporter.set exp;
|
Main_exporter.set exp;
|
||||||
()
|
()
|
||||||
|
|
|
||||||
|
|
@ -91,6 +91,7 @@ let create_exporter ?(config = Config.make ()) () =
|
||||||
let create_backend = create_exporter
|
let create_backend = create_exporter
|
||||||
|
|
||||||
let setup_ ?config () : Exporter.t =
|
let setup_ ?config () : Exporter.t =
|
||||||
|
Opentelemetry_client_lwt.Util_ambient_context.setup_ambient_context ();
|
||||||
let exp = create_exporter ?config () in
|
let exp = create_exporter ?config () in
|
||||||
Main_exporter.set exp;
|
Main_exporter.set exp;
|
||||||
exp
|
exp
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,8 @@
|
||||||
opentelemetry.emitter
|
opentelemetry.emitter
|
||||||
(re_export opentelemetry.core)
|
(re_export opentelemetry.core)
|
||||||
(re_export opentelemetry)
|
(re_export opentelemetry)
|
||||||
|
(re_export opentelemetry.ambient-context)
|
||||||
|
opentelemetry.ambient-context.lwt
|
||||||
(re_export opentelemetry-client)
|
(re_export opentelemetry-client)
|
||||||
(re_export lwt)
|
(re_export lwt)
|
||||||
threads
|
threads
|
||||||
|
|
|
||||||
4
src/client/lwt/util_ambient_context.ml
Normal file
4
src/client/lwt/util_ambient_context.ml
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
(** Setup Lwt as the ambient context *)
|
||||||
|
let setup_ambient_context () =
|
||||||
|
Opentelemetry_ambient_context.set_current_storage
|
||||||
|
Opentelemetry_ambient_context_lwt.storage
|
||||||
|
|
@ -2,8 +2,7 @@
|
||||||
(name opentelemetry_lwt)
|
(name opentelemetry_lwt)
|
||||||
(public_name opentelemetry-lwt)
|
(public_name opentelemetry-lwt)
|
||||||
(synopsis "Lwt frontend for opentelemetry")
|
(synopsis "Lwt frontend for opentelemetry")
|
||||||
(preprocess
|
|
||||||
(pps lwt_ppx))
|
|
||||||
(libraries
|
(libraries
|
||||||
(re_export lwt)
|
(re_export lwt)
|
||||||
|
opentelemetry.ambient-context.lwt
|
||||||
(re_export opentelemetry)))
|
(re_export opentelemetry)))
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,10 @@
|
||||||
include Opentelemetry
|
include Opentelemetry
|
||||||
|
|
||||||
|
(** Setup Lwt as the ambient context *)
|
||||||
|
let setup_ambient_context () =
|
||||||
|
Opentelemetry_ambient_context.set_current_storage
|
||||||
|
Opentelemetry_ambient_context_lwt.storage
|
||||||
|
|
||||||
module Main_exporter = struct
|
module Main_exporter = struct
|
||||||
include Main_exporter
|
include Main_exporter
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue