@@ -284,15 +284,20 @@ impl<C> PipelineBuilder<C> {
284284 /// .install_simple();
285285 /// ```
286286 pub fn with_trace_config ( self , config : sdk:: trace:: Config ) -> Self {
287- let merged_resource = match self . config {
288- Some ( base_config) => base_config. resource . merge ( & config. resource ) ,
289- None => ( * config. resource ) . clone ( ) ,
287+ let config = match config. resource {
288+ Some ( ref resource) => {
289+ let merged_resource = match self . config {
290+ Some ( base_config) => base_config. resource . map ( |r| r. merge ( & resource) ) . unwrap_or ( resource. as_ref ( ) . clone ( ) ) ,
291+ None => resource. as_ref ( ) . clone ( ) ,
292+ } ;
293+
294+ Some ( config. with_resource ( merged_resource) )
295+ } ,
296+ None => Some ( config)
290297 } ;
291298
292- let config = config. with_resource ( merged_resource) ;
293-
294299 PipelineBuilder {
295- config : Some ( config) ,
300+ config : config,
296301 ..self
297302 }
298303 }
@@ -313,9 +318,10 @@ impl<C> PipelineBuilder<C> {
313318 /// ```
314319 pub fn with_service_name < T : Into < Cow < ' static , str > > > ( self , name : T ) -> Self {
315320 let config = self . config . unwrap_or_default ( ) ;
316- let merged_resource = config . resource . merge ( & sdk:: Resource :: new ( vec ! [
321+ let new_resource = sdk:: Resource :: new ( vec ! [
317322 semcov:: resource:: SERVICE_NAME . string( name) ,
318- ] ) ) ;
323+ ] ) ;
324+ let merged_resource = config. resource . as_ref ( ) . map ( |r| r. merge ( & new_resource) ) . unwrap_or ( new_resource) ;
319325 let config = config. with_resource ( merged_resource) ;
320326
321327 PipelineBuilder {
@@ -359,7 +365,7 @@ where
359365 let config = self . config . take ( ) ;
360366 let exporter = self . init_exporter ( ) ;
361367 let mut builder =
362- sdk:: trace:: TracerProvider :: builder ( ) . with_default_batch_exporter ( exporter, runtime) ;
368+ sdk:: trace:: TracerProvider :: builder ( ) . with_batch_exporter ( exporter, runtime) ;
363369 if let Some ( config) = config {
364370 builder = builder. with_config ( config) ;
365371 }
@@ -441,7 +447,7 @@ impl<C> Exporter<C> {
441447 }
442448
443449 fn create_envelopes ( & self , span : SpanData ) -> Vec < Envelope > {
444- let mut result = Vec :: with_capacity ( 1 + span. message_events . len ( ) ) ;
450+ let mut result = Vec :: with_capacity ( 1 + span. events . len ( ) ) ;
445451
446452 let ( data, tags, name) = match span. span_kind {
447453 SpanKind :: Server | SpanKind :: Consumer => {
@@ -472,7 +478,7 @@ impl<C> Exporter<C> {
472478 data : Some ( data) ,
473479 } ) ;
474480
475- for event in span. message_events . iter ( ) {
481+ for event in span. events . iter ( ) {
476482 let ( data, name) = match event. name . as_ref ( ) {
477483 "exception" => (
478484 Data :: Exception ( event. into ( ) ) ,
@@ -565,7 +571,7 @@ impl From<&SpanData> for RequestData {
565571 success : span. status_code != StatusCode :: Error ,
566572 source : None ,
567573 url : None ,
568- properties : attrs_to_properties ( & span. attributes , span. resource . as_ref ( ) ) ,
574+ properties : attrs_to_properties ( & span. attributes , span. resource . clone ( ) ) ,
569575 } ;
570576
571577 if let Some ( method) = span. attributes . get ( & semcov:: trace:: HTTP_METHOD ) {
@@ -631,7 +637,7 @@ impl From<&SpanData> for RemoteDependencyData {
631637 data : None ,
632638 target : None ,
633639 type_ : None ,
634- properties : attrs_to_properties ( & span. attributes , span. resource . as_ref ( ) ) ,
640+ properties : attrs_to_properties ( & span. attributes , span. resource . clone ( ) ) ,
635641 } ;
636642
637643 if let Some ( status_code) = span. attributes . get ( & semcov:: trace:: HTTP_STATUS_CODE ) {
0 commit comments