Skip to content

Commit b7d90df

Browse files
committed
Temporarily substitute ObservationFilterChainDecorator with a patched version until spring-projects/spring-security#17134 will be merged
1 parent 69ff342 commit b7d90df

File tree

3 files changed

+636
-2
lines changed

3 files changed

+636
-2
lines changed

aaa/src/main/java/name/nkonev/aaa/AaaApplication.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@
33
import org.springframework.boot.SpringApplication;
44
import org.springframework.boot.autoconfigure.SpringBootApplication;
55
import org.springframework.scheduling.annotation.EnableAsync;
6+
import org.springframework.security.web.ObservationFilterChainDecorator;
7+
8+
import java.net.URL;
9+
import java.net.URLClassLoader;
610

711
@EnableAsync
812
@SpringBootApplication(
@@ -11,6 +15,9 @@
1115
public class AaaApplication {
1216

1317
public static void main(String[] args) throws Exception {
18+
Class<?> cl = Class.forName("org.springframework.security.web.ObservationFilterChainDecorator", true, AaaApplication.class.getClassLoader());
19+
System.out.println(cl);
20+
1421
SpringApplication.run(AaaApplication.class, args);
1522
}
1623
}

aaa/src/main/java/name/nkonev/aaa/controllers/AaaErrorController.java

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package name.nkonev.aaa.controllers;
22

33
import com.fasterxml.jackson.databind.ObjectMapper;
4+
import io.micrometer.tracing.Tracer;
45
import name.nkonev.aaa.config.properties.AaaProperties;
56
import name.nkonev.aaa.dto.AaaError;
67
import jakarta.servlet.ServletException;
@@ -24,7 +25,6 @@
2425
import java.util.*;
2526
import java.util.stream.Collectors;
2627

27-
import static name.nkonev.aaa.controllers.TracerHeaderWriteFilter.EXTERNAL_TRACE_ID_HEADER;
2828
import static name.nkonev.aaa.utils.ServletUtils.getAcceptHeaderValues;
2929

3030
/**
@@ -42,6 +42,9 @@ public class AaaErrorController extends AbstractErrorController {
4242
@Autowired
4343
private AaaProperties aaaProperties;
4444

45+
@Autowired
46+
private Tracer tracer;
47+
4548
private static final Logger LOGGER = LoggerFactory.getLogger(AaaErrorController.class);
4649

4750
public AaaErrorController(ErrorAttributes errorAttributes, List<ErrorViewResolver> errorViewResolvers) {
@@ -120,6 +123,16 @@ private Map<String, Object> getCustomErrorAttributes(HttpServletRequest request)
120123
}
121124

122125
private String getTraceId(HttpServletResponse response) {
123-
return response.getHeader(EXTERNAL_TRACE_ID_HEADER);
126+
var currentSpan = this.tracer.currentSpan();
127+
if (currentSpan == null) {
128+
return null;
129+
} else {
130+
var context = currentSpan.context();
131+
if (context != null) {
132+
var traceId = context.traceId();
133+
return traceId;
134+
}
135+
return null;
136+
}
124137
}
125138
}

0 commit comments

Comments
 (0)