Revert usage of feature flag.

This commit is contained in:
JaroslawDembek
2024-01-31 07:40:48 +01:00
committed by Olga Maciaszek-Sharma
parent 057398859a
commit 81ec5432ea
4 changed files with 18 additions and 31 deletions

View File

@@ -18,7 +18,6 @@ package org.springframework.cloud.loadbalancer.config;
import io.micrometer.core.instrument.MeterRegistry;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
@@ -39,9 +38,8 @@ public class LoadBalancerStatsAutoConfiguration {
@Bean
@ConditionalOnBean(MeterRegistry.class)
public MicrometerStatsLoadBalancerLifecycle micrometerStatsLifecycle(MeterRegistry meterRegistry,
@Value("${spring.cloud.loadbalancer.stats.micrometer.use-uri-template-attribute: false}") boolean useUriTemplateAttribute) {
return new MicrometerStatsLoadBalancerLifecycle(meterRegistry, useUriTemplateAttribute);
public MicrometerStatsLoadBalancerLifecycle micrometerStatsLifecycle(MeterRegistry meterRegistry) {
return new MicrometerStatsLoadBalancerLifecycle(meterRegistry);
}
}

View File

@@ -44,8 +44,7 @@ final class LoadBalancerTags {
throw new UnsupportedOperationException("Cannot instantiate utility class");
}
static Iterable<Tag> buildSuccessRequestTags(CompletionContext<Object, ServiceInstance, Object> completionContext,
boolean useUriTemplateAttribute) {
static Iterable<Tag> buildSuccessRequestTags(CompletionContext<Object, ServiceInstance, Object> completionContext) {
ServiceInstance serviceInstance = completionContext.getLoadBalancerResponse().getServer();
Tags tags = Tags.of(buildServiceInstanceTags(serviceInstance));
Object clientResponse = completionContext.getClientResponse();
@@ -53,7 +52,7 @@ final class LoadBalancerTags {
RequestData requestData = responseData.getRequestData();
if (requestData != null) {
tags = tags.and(valueOrUnknown("method", requestData.getHttpMethod()),
valueOrUnknown("uri", getPath(requestData, useUriTemplateAttribute)));
valueOrUnknown("uri", getPath(requestData)));
}
else {
tags = tags.and(Tag.of("method", UNKNOWN), Tag.of("uri", UNKNOWN));
@@ -74,8 +73,8 @@ final class LoadBalancerTags {
return responseData.getHttpStatus() != null ? responseData.getHttpStatus().value() : 200;
}
private static String getPath(RequestData requestData, boolean useUriTemplateAttribute) {
if (useUriTemplateAttribute && requestData.getAttributes() != null) {
private static String getPath(RequestData requestData) {
if (requestData.getAttributes() != null) {
var uriTemplate = (String) requestData.getAttributes().get(URI_TEMPLATE_ATTRIBUTE);
if (uriTemplate != null) {
return uriTemplate;
@@ -84,15 +83,14 @@ final class LoadBalancerTags {
return requestData.getUrl() != null ? requestData.getUrl().getPath() : UNKNOWN;
}
static Iterable<Tag> buildDiscardedRequestTags(CompletionContext<Object, ServiceInstance, Object> completionContext,
boolean useUriTemplateAttribute) {
static Iterable<Tag> buildDiscardedRequestTags(
CompletionContext<Object, ServiceInstance, Object> completionContext) {
if (completionContext.getLoadBalancerRequest().getContext() instanceof RequestDataContext) {
RequestData requestData = ((RequestDataContext) completionContext.getLoadBalancerRequest().getContext())
.getClientRequest();
if (requestData != null) {
return Tags.of(valueOrUnknown("method", requestData.getHttpMethod()),
valueOrUnknown("uri", getPath(requestData, useUriTemplateAttribute)),
valueOrUnknown("serviceId", getHost(requestData)));
valueOrUnknown("uri", getPath(requestData)), valueOrUnknown("serviceId", getHost(requestData)));
}
}
return Tags.of(valueOrUnknown("method", UNKNOWN), valueOrUnknown("uri", UNKNOWN),
@@ -104,8 +102,7 @@ final class LoadBalancerTags {
return requestData.getUrl() != null ? requestData.getUrl().getHost() : UNKNOWN;
}
static Iterable<Tag> buildFailedRequestTags(CompletionContext<Object, ServiceInstance, Object> completionContext,
boolean useUriTemplateAttribute) {
static Iterable<Tag> buildFailedRequestTags(CompletionContext<Object, ServiceInstance, Object> completionContext) {
ServiceInstance serviceInstance = completionContext.getLoadBalancerResponse().getServer();
Tags tags = Tags.of(buildServiceInstanceTags(serviceInstance)).and(exception(completionContext.getThrowable()));
if (completionContext.getLoadBalancerRequest().getContext() instanceof RequestDataContext) {
@@ -113,7 +110,7 @@ final class LoadBalancerTags {
.getClientRequest();
if (requestData != null) {
return tags.and(Tags.of(valueOrUnknown("method", requestData.getHttpMethod()),
valueOrUnknown("uri", getPath(requestData, useUriTemplateAttribute))));
valueOrUnknown("uri", getPath(requestData))));
}
}
return tags.and(Tags.of(valueOrUnknown("method", UNKNOWN), valueOrUnknown("uri", UNKNOWN)));

View File

@@ -49,13 +49,10 @@ public class MicrometerStatsLoadBalancerLifecycle implements LoadBalancerLifecyc
private final MeterRegistry meterRegistry;
private final boolean useUriTemplateAttribute;
private final ConcurrentHashMap<ServiceInstance, AtomicLong> activeRequestsPerInstance = new ConcurrentHashMap<>();
public MicrometerStatsLoadBalancerLifecycle(MeterRegistry meterRegistry, boolean useUriTemplateAttribute) {
public MicrometerStatsLoadBalancerLifecycle(MeterRegistry meterRegistry) {
this.meterRegistry = meterRegistry;
this.useUriTemplateAttribute = useUriTemplateAttribute;
}
@Override
@@ -92,7 +89,7 @@ public class MicrometerStatsLoadBalancerLifecycle implements LoadBalancerLifecyc
long requestFinishedTimestamp = System.nanoTime();
if (CompletionContext.Status.DISCARD.equals(completionContext.status())) {
Counter.builder("loadbalancer.requests.discard")
.tags(buildDiscardedRequestTags(completionContext, useUriTemplateAttribute))
.tags(buildDiscardedRequestTags(completionContext))
.register(meterRegistry)
.increment();
return;
@@ -105,8 +102,7 @@ public class MicrometerStatsLoadBalancerLifecycle implements LoadBalancerLifecyc
Object loadBalancerRequestContext = completionContext.getLoadBalancerRequest().getContext();
if (requestHasBeenTimed(loadBalancerRequestContext)) {
if (CompletionContext.Status.FAILED.equals(completionContext.status())) {
Timer.builder("loadbalancer.requests.failed")
.tags(buildFailedRequestTags(completionContext, useUriTemplateAttribute))
Timer.builder("loadbalancer.requests.failed").tags(buildFailedRequestTags(completionContext))
.register(meterRegistry)
.record(requestFinishedTimestamp
- ((TimedRequestContext) loadBalancerRequestContext).getRequestStartTime(),
@@ -114,7 +110,7 @@ public class MicrometerStatsLoadBalancerLifecycle implements LoadBalancerLifecyc
return;
}
Timer.builder("loadbalancer.requests.success")
.tags(buildSuccessRequestTags(completionContext, useUriTemplateAttribute))
.tags(buildSuccessRequestTags(completionContext))
.register(meterRegistry)
.record(requestFinishedTimestamp
- ((TimedRequestContext) loadBalancerRequestContext).getRequestStartTime(),

View File

@@ -56,11 +56,7 @@ class MicrometerStatsLoadBalancerLifecycleTests {
MeterRegistry meterRegistry = new SimpleMeterRegistry();
MicrometerStatsLoadBalancerLifecycle statsLifecycle = new MicrometerStatsLoadBalancerLifecycle(meterRegistry,
false);
MicrometerStatsLoadBalancerLifecycle statsLifecycleWithUriTemplateAttributeUse = new MicrometerStatsLoadBalancerLifecycle(
meterRegistry, true);
MicrometerStatsLoadBalancerLifecycle statsLifecycle = new MicrometerStatsLoadBalancerLifecycle(meterRegistry);
@Test
void shouldRecordSuccessfulTimedRequest() {
@@ -99,10 +95,10 @@ class MicrometerStatsLoadBalancerLifecycleTests {
new DefaultServiceInstance("test-1", "test", "test.org", 8080, false, new HashMap<>()));
ResponseData responseData = new ResponseData(HttpStatus.OK, new HttpHeaders(),
new MultiValueMapAdapter<>(new HashMap<>()), requestData);
statsLifecycleWithUriTemplateAttributeUse.onStartRequest(lbRequest, lbResponse);
statsLifecycle.onStartRequest(lbRequest, lbResponse);
assertThat(meterRegistry.get("loadbalancer.requests.active").gauge().value()).isEqualTo(1);
statsLifecycleWithUriTemplateAttributeUse.onComplete(
statsLifecycle.onComplete(
new CompletionContext<>(CompletionContext.Status.SUCCESS, lbRequest, lbResponse, responseData));
assertThat(meterRegistry.getMeters()).hasSize(2);