Remove observation context from ClientRequest
Prior to this commit, gh-31609 added the current observation context as a request attribute for `WebClient` calls. While it was not confirmed as the main cause, this feature was linked to several reports of memory leaks. This would indeed attach more memory to the request object graph at runtime - although it shouldn't prevent its collection by the GC. This commit removes this feature and instead developers should get the current observation from the reactor context if they wish to interact with it. Closes gh-32198
This commit is contained in:
@@ -148,23 +148,6 @@ class WebClientObservationTests {
|
||||
verifyAndGetRequest();
|
||||
}
|
||||
|
||||
@Test
|
||||
void setsCurrentObservationContextAsRequestAttribute() {
|
||||
ExchangeFilterFunction assertionFilter = (request, chain) -> {
|
||||
Optional<ClientRequestObservationContext> observationContext = ClientRequestObservationContext.findCurrent(request);
|
||||
assertThat(observationContext).isPresent();
|
||||
return chain.exchange(request).contextWrite(context -> {
|
||||
Observation currentObservation = context.get(ObservationThreadLocalAccessor.KEY);
|
||||
assertThat(currentObservation.getContext()).isEqualTo(observationContext.get());
|
||||
return context;
|
||||
});
|
||||
};
|
||||
this.builder.filter(assertionFilter).build().get().uri("/resource/{id}", 42)
|
||||
.retrieve().bodyToMono(Void.class)
|
||||
.block(Duration.ofSeconds(10));
|
||||
verifyAndGetRequest();
|
||||
}
|
||||
|
||||
@Test
|
||||
void recordsObservationWithResponseDetailsWhenFilterFunctionErrors() {
|
||||
ExchangeFilterFunction errorFunction = (req, next) -> next.exchange(req).then(Mono.error(new IllegalStateException()));
|
||||
|
||||
Reference in New Issue
Block a user