0

Recently, I started with spring cloud sleuth to trace the request in the application, and I wrote sample project to test this feature, but when the application is run, the log shows that there are different trace ids for every new http request.

and here is may code: Config.java

package com.cloud;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;

@Configuration
@ComponentScan()
@EnableAutoConfiguration()
@EnableWebMvc
public class Config {
}

Controller.java

package com.cloud;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.sleuth.Span;
import org.springframework.cloud.sleuth.SpanAccessor;
import org.springframework.context.annotation.Bean;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

@RestController
public class Controller {

@Autowired
SpanAccessor spanAccessor;
@Autowired
RestTemplate restTemplate;
int port = 8080;
private static final Logger LOGGER = LoggerFactory.getLogger(Controller.class);

@RequestMapping("/")
public String hi() throws InterruptedException {
    LOGGER.debug("you called hi");
    debug();
    String s = this.restTemplate
            .getForObject("http://localhost:" + this.port + "/cloud/hi2", String.class);
    return "hi/" + s;
}

@RequestMapping("/hi2")
public String hi2() throws InterruptedException {
    LOGGER.debug("you called hi2");
    debug();
    return "welcome";
}

public void debug(){
    Span span = spanAccessor.getCurrentSpan();
    LOGGER.info("span id is "+span.getSpanId()+" and trace id is "+span.getTraceId());
}

@Bean
public RestTemplate restTemplate(){
    return new RestTemplate();
}
}

and here is log:

you called hi: span id is 6716502497271349964 and trace id is 6716502497271349964
you called hi2: span id is -4542377791493777157  and trace id is -4542377791493777157
Ibrahim
  • 77
  • 3
  • 10

1 Answers1

1

i copy/paste your code and it works, but i should mention some diferences:

first and most important, i run it with a main witch of course have and springboot anotation:

@SpringBootApplication(scanBasePackages="com.cloud")

second, i delete your Config class, becaouse it doesnt do anything.

thirt, mi spring version its 1.5.1.RELEASE and the spring cloud version its Dalston.BUILD-SNAPSHOT

this are the logs:

2017-03-07 10:48:29.716 INFO [traceId,2488a4c8d3f7238a,2488a4c8d3f7238a,false] 4179 --- [nio-8080-exec-1] com.cloud.Controller : span id is 2632535164654658442 and trace id is 2632535164654658442 2017-03-07 10:48:45.162 INFO [traceId,2488a4c8d3f7238a,f5e476485b30fd85,false] 4179 --- [nio-8080-exec-2] com.cloud.Controller : span id is -728327186587517563 and trace id is 2632535164654658442

nekperu15739
  • 3,311
  • 2
  • 26
  • 25
  • Yes, this works only if I used @Springbootapplication annotation, I moved to use spring boot with the application worked on and all things are good – Ibrahim Mar 08 '17 at 18:59