@@ -6,7 +6,7 @@ use observ_config::{Configurator, trace_config};
66use observ_core:: Module ;
77use observ_runtime:: handle;
88use observ_sender:: { Sender , elastic:: ElasticSender , file:: FileSender } ;
9- use observ_trace:: TraceCollector ;
9+ use observ_trace:: { TraceCollector , span :: SpanConstructor } ;
1010use tokio:: {
1111 sync:: { mpsc, watch} ,
1212 task:: JoinHandle ,
@@ -104,16 +104,17 @@ async fn run(
104104 info ! ( "Start configurator" ) ;
105105 configurator. start ( ) ?;
106106 info ! ( "Starting configurator" ) ;
107- let ( span_sender, span_receiver) = mpsc:: channel ( 1024 ) ;
108- let mut trace_sender = Sender :: new (
109- "Trace sender" ,
110- span_receiver,
111- ElasticSender :: new ( trace_config ( ) . load ( ) . sender . clone ( ) ) ?,
112- JsonEncoderBuilder :: new ( ) . build ( ) ,
113- ) ;
107+ let ( message_sender, message_receiver) = crossbeam_channel:: bounded ( 1024 ) ;
108+ let ( span_sender, span_receiver) = crossbeam_channel:: bounded ( 1024 ) ;
109+ let sender = ElasticSender :: new ( trace_config ( ) . load ( ) . sender . clone ( ) ) ?;
110+ let mut trace_sender =
111+ Sender :: new ( "Trace sender" , span_receiver, sender, JsonEncoderBuilder :: new ( ) . build ( ) ) ;
114112 trace_sender. start ( ) ?;
115113
116- let mut trace_collector = TraceCollector :: new ( span_sender) ?;
114+ let mut span_constructor = SpanConstructor :: new ( message_receiver, span_sender) ;
115+ span_constructor. start ( ) ?;
116+
117+ let mut trace_collector = TraceCollector :: new ( message_sender) ?;
117118 trace_collector. start ( ) ?;
118119
119120 let _ = state_tx. send ( State :: Running ) ;
@@ -128,6 +129,7 @@ async fn run(
128129 }
129130
130131 trace_collector. stop ( ) . await ?;
132+ span_constructor. stop ( ) . await ?;
131133 trace_sender. stop ( ) . await ?;
132134 configurator. stop ( ) . await ?;
133135
0 commit comments