spring-cloud-openfeign icon indicating copy to clipboard operation
spring-cloud-openfeign copied to clipboard

B3 span and parentId headers not propagated with spring-cloud-openfeign and brave

Open fer1979 opened this issue 4 months ago • 3 comments

With sprint boot 3.1.5 in two microservices, one using FeignClient to request to the other microservice , I have this properties configuration in both microservices:

management:
  tracing:
    propagation:      
      produce: b3
      consume: b3
    brave:
      span-joining-supported: true

logging:
  pattern:
    level: "%5p [${spring.application.name:},%X{traceId:-},%X{spanId:-},%X{parentId:-}]"

I have next library in both poms:

<dependency>
		    <groupId>io.micrometer</groupId>
		    <artifactId>micrometer-tracing-bridge-brave</artifactId>
                 <version>1.1.6</version>
  </dependency>

I have this FeignConfiguration lets called in microservice A to get the context propagated to the microservice B:

@Configuration
public class FeignConfiguration {
    
    @Bean
    public Capability capability(final MeterRegistry registry) {
      return new MicrometerCapability(registry);
    }    
}

I have this in order to log PARENT_ID in both microservices and is working fine:

@Configuration
public class BraveTracerConfig {
	
	@Bean
	CorrelationScopeCustomizer parentIdCorrelationScopeCustomizer() {
	    return builder -> builder.add(SingleCorrelationField.create(BaggageFields.PARENT_ID));
	}

}

The problem is when microservice A calls microservice B, traceId is propagated but I dont see in microservice B in the logs the spanId or parentId from the feign client logs in microservice A.

First of all, I read about Spring Boot 3.x does not allow joining of spans. But with the brave configuration is supposed I can get it according to this https://github.com/spring-projects/spring-boot/pull/35165, right?

Thanks!

fer1979 avatar Apr 02 '24 19:04 fer1979