Merge branch 'main' of github.com:spring-cloud/spring-cloud-commons

This commit is contained in:
Ryan Baxter
2024-09-04 10:45:15 -04:00
6 changed files with 40 additions and 14 deletions

View File

@@ -10,6 +10,11 @@ updates:
target-branch: "4.0.x" # oldest OSS supported branch
schedule:
interval: "weekly"
- package-ecosystem: "github-actions"
directory: "/"
target-branch: "4.1.x"
schedule:
interval: "weekly"
- package-ecosystem: "github-actions"
directory: "/"
target-branch: "main"
@@ -37,6 +42,17 @@ updates:
update-types:
- version-update:semver-major
- version-update:semver-minor
- package-ecosystem: maven
directory: /
schedule:
interval: daily
target-branch: 4.1.x
ignore:
# only upgrade patch versions for maintenance branch
- dependency-name: "*"
update-types:
- version-update:semver-major
- version-update:semver-minor
- package-ecosystem: maven
directory: /
schedule:

View File

@@ -5,9 +5,9 @@ name: Build
on:
push:
branches: [ main, 4.1.x, 4.0.x, 3.1.x ]
branches: [ main, 4.1.x ]
pull_request:
branches: [ main, 4.1.x, 4.0.x, 3.1.x ]
branches: [ main, 4.1.x ]
jobs:
build:

View File

@@ -225,5 +225,11 @@
<artifactId>micrometer-observation-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.16.0</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2012-2020 the original author or authors.
* Copyright 2012-2024 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -29,11 +29,13 @@ import org.springframework.cloud.client.loadbalancer.DefaultResponse;
import org.springframework.cloud.client.loadbalancer.EmptyResponse;
import org.springframework.cloud.client.loadbalancer.Request;
import org.springframework.cloud.client.loadbalancer.Response;
import org.springframework.util.function.SingletonSupplier;
/**
* A random-based implementation of {@link ReactorServiceInstanceLoadBalancer}.
*
* @author Olga Maciaszek-Sharma
* @author Nan Chiu
* @since 2.2.7
*/
public class RandomLoadBalancer implements ReactorServiceInstanceLoadBalancer {
@@ -42,7 +44,7 @@ public class RandomLoadBalancer implements ReactorServiceInstanceLoadBalancer {
private final String serviceId;
private ObjectProvider<ServiceInstanceListSupplier> serviceInstanceListSupplierProvider;
private final SingletonSupplier<ServiceInstanceListSupplier> serviceInstanceListSingletonSupplier;
/**
* @param serviceInstanceListSupplierProvider a provider of
@@ -52,14 +54,14 @@ public class RandomLoadBalancer implements ReactorServiceInstanceLoadBalancer {
public RandomLoadBalancer(ObjectProvider<ServiceInstanceListSupplier> serviceInstanceListSupplierProvider,
String serviceId) {
this.serviceId = serviceId;
this.serviceInstanceListSupplierProvider = serviceInstanceListSupplierProvider;
this.serviceInstanceListSingletonSupplier = SingletonSupplier
.of(() -> serviceInstanceListSupplierProvider.getIfAvailable(NoopServiceInstanceListSupplier::new));
}
@SuppressWarnings("rawtypes")
@Override
public Mono<Response<ServiceInstance>> choose(Request request) {
ServiceInstanceListSupplier supplier = serviceInstanceListSupplierProvider
.getIfAvailable(NoopServiceInstanceListSupplier::new);
ServiceInstanceListSupplier supplier = serviceInstanceListSingletonSupplier.obtain();
return supplier.get(request)
.next()
.map(serviceInstances -> processInstanceResponse(supplier, serviceInstances));

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2012-2020 the original author or authors.
* Copyright 2012-2024 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -30,6 +30,7 @@ import org.springframework.cloud.client.loadbalancer.DefaultResponse;
import org.springframework.cloud.client.loadbalancer.EmptyResponse;
import org.springframework.cloud.client.loadbalancer.Request;
import org.springframework.cloud.client.loadbalancer.Response;
import org.springframework.util.function.SingletonSupplier;
/**
* A Round-Robin-based implementation of {@link ReactorServiceInstanceLoadBalancer}.
@@ -37,6 +38,7 @@ import org.springframework.cloud.client.loadbalancer.Response;
* @author Spencer Gibb
* @author Olga Maciaszek-Sharma
* @author Zhuozhi JI
* @author Nan Chiu
*/
public class RoundRobinLoadBalancer implements ReactorServiceInstanceLoadBalancer {
@@ -46,7 +48,7 @@ public class RoundRobinLoadBalancer implements ReactorServiceInstanceLoadBalance
final String serviceId;
ObjectProvider<ServiceInstanceListSupplier> serviceInstanceListSupplierProvider;
private final SingletonSupplier<ServiceInstanceListSupplier> serviceInstanceListSingletonSupplier;
/**
* @param serviceInstanceListSupplierProvider a provider of
@@ -67,7 +69,8 @@ public class RoundRobinLoadBalancer implements ReactorServiceInstanceLoadBalance
public RoundRobinLoadBalancer(ObjectProvider<ServiceInstanceListSupplier> serviceInstanceListSupplierProvider,
String serviceId, int seedPosition) {
this.serviceId = serviceId;
this.serviceInstanceListSupplierProvider = serviceInstanceListSupplierProvider;
this.serviceInstanceListSingletonSupplier = SingletonSupplier
.of(() -> serviceInstanceListSupplierProvider.getIfAvailable(NoopServiceInstanceListSupplier::new));
this.position = new AtomicInteger(seedPosition);
}
@@ -77,8 +80,7 @@ public class RoundRobinLoadBalancer implements ReactorServiceInstanceLoadBalance
// https://github.com/Netflix/ocelli/blob/master/ocelli-core/
// src/main/java/netflix/ocelli/loadbalancer/RoundRobinLoadBalancer.java
public Mono<Response<ServiceInstance>> choose(Request request) {
ServiceInstanceListSupplier supplier = serviceInstanceListSupplierProvider
.getIfAvailable(NoopServiceInstanceListSupplier::new);
ServiceInstanceListSupplier supplier = serviceInstanceListSingletonSupplier.obtain();
return supplier.get(request)
.next()
.map(serviceInstances -> processInstanceResponse(supplier, serviceInstances));

View File

@@ -15,8 +15,8 @@
<name>spring-cloud-test-support</name>
<description>Spring Cloud Test Support</description>
<properties>
<maven.version>3.9.5</maven.version>
<maven-resolver.version>1.9.16</maven-resolver.version>
<maven.version>3.9.9</maven.version>
<maven-resolver.version>1.9.22</maven-resolver.version>
</properties>
<dependencies>
<dependency>