Browse Source

Recheck for null service instance to avoid micrometer NPE.

pull/1197/head
Olga Maciaszek-Sharma 2 years ago
parent
commit
cfe1f40347
  1. 1
      docs/src/main/asciidoc/_configprops.adoc
  2. 3
      spring-cloud-loadbalancer/src/main/java/org/springframework/cloud/loadbalancer/blocking/client/BlockingLoadBalancerClient.java
  3. 6
      spring-cloud-loadbalancer/src/main/resources/META-INF/additional-spring-configuration-metadata.json

1
docs/src/main/asciidoc/_configprops.adoc

@ -53,6 +53,7 @@ @@ -53,6 +53,7 @@
|spring.cloud.loadbalancer.retry.retry-on-all-operations | `+++false+++` | Indicates retries should be attempted on operations other than `HttpMethod.GET`}.
|spring.cloud.loadbalancer.retry.retryable-status-codes | `+++{}+++` | A `Set` of status codes that should trigger a retry.
|spring.cloud.loadbalancer.service-discovery.timeout | | String representation of Duration of the timeout for calls to service discovery.
|spring.cloud.loadbalancer.stats.micrometer.enabled | `+++false+++` | Enables Spring Cloud LoadBalancer Micrometer stats.
|spring.cloud.loadbalancer.sticky-session.add-service-instance-cookie | `+++false+++` | Indicates whether a cookie with the newly selected instance should be added by LoadBalancer.
|spring.cloud.loadbalancer.sticky-session.instance-id-cookie-name | `+++sc-lb-instance-id+++` | The name of the cookie holding the preferred instance id.
|spring.cloud.loadbalancer.use-raw-status-code-in-response-data | `+++false+++` | Indicates that raw status codes should be used in {@link ResponseData}.

3
spring-cloud-loadbalancer/src/main/java/org/springframework/cloud/loadbalancer/blocking/client/BlockingLoadBalancerClient.java

@ -105,6 +105,9 @@ public class BlockingLoadBalancerClient implements LoadBalancerClient { @@ -105,6 +105,9 @@ public class BlockingLoadBalancerClient implements LoadBalancerClient {
@Override
public <T> T execute(String serviceId, ServiceInstance serviceInstance, LoadBalancerRequest<T> request)
throws IOException {
if (serviceInstance == null) {
throw new IllegalArgumentException("Service Instance cannot be null");
}
DefaultResponse defaultResponse = new DefaultResponse(serviceInstance);
Set<LoadBalancerLifecycle> supportedLifecycleProcessors = getSupportedLifecycleProcessors(serviceId);
Request lbRequest = request instanceof Request ? (Request) request : new DefaultRequest<>();

6
spring-cloud-loadbalancer/src/main/resources/META-INF/additional-spring-configuration-metadata.json

@ -33,6 +33,12 @@ @@ -33,6 +33,12 @@
"name": "spring.cloud.loadbalancer.enabled",
"description": "Enables Spring Cloud LoadBalancer.",
"type": "java.lang.Boolean"
},
{
"defaultValue": "false",
"name": "spring.cloud.loadbalancer.stats.micrometer.enabled",
"description": "Enables Spring Cloud LoadBalancer Micrometer stats.",
"type": "java.lang.Boolean"
}
]
}

Loading…
Cancel
Save