Skip to content

Commit

Permalink
Revert usage of feature flag.
Browse files Browse the repository at this point in the history
  • Loading branch information
JaroslawDembek authored and OlgaMaciaszek committed Oct 15, 2024
1 parent 0573988 commit 81ec543
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 31 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@

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;
Expand All @@ -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);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -44,16 +44,15 @@ private 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();
if (clientResponse instanceof ResponseData responseData) {
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));
Expand All @@ -74,8 +73,8 @@ private static int statusValue(ResponseData responseData) {
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;
Expand All @@ -84,15 +83,14 @@ private static String getPath(RequestData requestData, boolean useUriTemplateAtt
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),
Expand All @@ -104,16 +102,15 @@ private static String getHost(RequestData requestData) {
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) {
RequestData requestData = ((RequestDataContext) completionContext.getLoadBalancerRequest().getContext())
.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)));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -92,7 +89,7 @@ public void onComplete(CompletionContext<Object, ServiceInstance, Object> comple
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;
Expand All @@ -105,16 +102,15 @@ public void onComplete(CompletionContext<Object, ServiceInstance, Object> comple
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(),
TimeUnit.NANOSECONDS);
return;
}
Timer.builder("loadbalancer.requests.success")
.tags(buildSuccessRequestTags(completionContext, useUriTemplateAttribute))
.tags(buildSuccessRequestTags(completionContext))
.register(meterRegistry)
.record(requestFinishedTimestamp
- ((TimedRequestContext) loadBalancerRequestContext).getRequestStartTime(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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() {
Expand Down Expand Up @@ -99,10 +95,10 @@ void shouldRecordSuccessfulTimedRequestWithUriTemplate() {
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);
Expand Down

0 comments on commit 81ec543

Please sign in to comment.