Commit Graph

110 Commits

Author SHA1 Message Date
Olga Maciaszek-Sharma
36d5350661 Merge remote-tracking branch 'origin/2.2.x'
# Conflicts:
#	spring-cloud-loadbalancer/src/main/java/org/springframework/cloud/loadbalancer/core/HealthCheckServiceInstanceListSupplier.java
2021-02-17 15:44:21 +01:00
Роман Чигвинцев
95a22796eb Fix bug of service instance refetching when repeating health check is activated (#904)
Fixes gh-899

(cherry picked from commit 3d257b43003a02b64c4f7fd97680e7981d0b52f4)
2021-02-17 15:35:39 +01:00
johnny850807
361a8c2bae Add getSupportedLifecycleProcessors method in BlockingLoadBalancerClient
# Conflicts:
#	spring-cloud-loadbalancer/src/main/java/org/springframework/cloud/loadbalancer/blocking/client/BlockingLoadBalancerClient.java
2021-02-10 11:30:13 +01:00
Olga Maciaszek-Sharma
005f6d5487 Merge remote-tracking branch 'origin/2.2.x'
# Conflicts:
#	spring-cloud-loadbalancer/src/main/java/org/springframework/cloud/loadbalancer/config/LoadBalancerCacheAutoConfiguration.java
2021-01-26 17:44:13 +01:00
Olga Maciaszek-Sharma
5839758365 Add CaffeineCacheManager class conditions to LoadBalancerCacheAutoConfiguration. (#891) 2021-01-26 17:37:44 +01:00
Olga Maciaszek-Sharma
a5903d03e0 Merge remote-tracking branch 'origin/2.2.x'
# Conflicts:
#	spring-cloud-loadbalancer/src/main/java/org/springframework/cloud/loadbalancer/cache/DefaultLoadBalancerCacheManager.java
2021-01-26 17:34:39 +01:00
Olga Maciaszek-Sharma
3493612ab4 Use daemon threads with DefaultLoadBalancerCacheManager. (#890) 2021-01-26 17:29:54 +01:00
Olga Maciaszek-Sharma
c6bfc2d827 Merge remote-tracking branch 'origin/master' 2020-12-18 17:58:35 +01:00
Olga Maciaszek-Sharma
8125db910a Add missing LB properties to configuration-metadata. 2020-12-18 17:58:20 +01:00
Olga Maciaszek-Sharma
a40258394a Lb micrometer stats (#871)
* Add stats lifecycle bean. Add onStartRequest method to LoadBalancerLifecycle. Add loadbalancer.Request field to CompletionContext.

* Add TimedRequestContext interface. Make RetryableRequestContext extend RequestDataContext. Improve generating metrics. Add utility class for working with tags. Ensure tags are not null.

* Add separate meters depending on CompletionContext.Status.

* Modify registered metrics. Add adapter for BlockingLoadBalancerClient requests. Add autoconfiguration.

* Make new config conditional on MeterRegistry class.

* Rename lifecycle bean. Do not log request if 0 timestamp.

* Fix onStartRequest call arguments for BlockingLoadBalancerClient.

* Fix onStartRequest and onComplete calls for RetryLoadBalancerInterceptor.

* Only register timed request once. Add tests.

* Adjust tags logic. Add more tests.

* Add more tests.

* Refactor. Add javadocs.

* Refactor.

* Refactor.

* Retrieve client response data if possible in BlockingLoadBalancerClient.

* Refactor.

* Fix docs after review.

* Make previousServiceInstanceMutable.

* Change argument order for CompletionContext constructors. Remove duplicated start time setting.
2020-12-18 17:46:53 +01:00
Marcin Grzejszczak
1f0f750707 Moves classes from spring-cloud-security to spring-cloud-commons 2020-12-18 17:21:10 +01:00
Olga Maciaszek-Sharma
188fab7b32 Fix after merge. 2020-12-11 17:41:29 +01:00
Olga Maciaszek-Sharma
c04e4a2aed Merge remote-tracking branch 'origin/2.2.x' 2020-12-11 17:34:41 +01:00
Olga Maciaszek-Sharma
65201f8f61 Add RandomLoadBalancer, along with tests and docs. (#868)
# Conflicts:
#	spring-cloud-loadbalancer/src/main/java/org/springframework/cloud/loadbalancer/core/RoundRobinLoadBalancer.java
2020-12-11 17:33:42 +01:00
Olga Maciaszek-Sharma
ddd370c57d Add function-based health check. Add restTemplate-based health-check beans to default config (#866)
* Switch to a function-based HealthCheckServiceInstanceListSupplier.

* Handle exception for restTemplate based function. Add default blocking health-check configuration.

* Add docs.
2020-12-11 17:20:57 +01:00
Olga Maciaszek-Sharma
c6bd75eb5d Move LoadBalancerProperties to the parent package. 2020-12-10 16:43:30 +01:00
Olga Maciaszek-Sharma
8969d5d1e1 Remove deprecations. 2020-12-10 12:31:45 +01:00
Olga Maciaszek-Sharma
dce413ae66 Do not pass response body to LB lifecycle beans. (#864)
* Do not pass response body to LB lifecycle beans.

* Fix argument name.
2020-12-09 13:37:58 +01:00
Olga Maciaszek-Sharma
0f98419c47 Request based sticky session (#860)
* Implement first draft for sticky-session load-balancing.

* Make setting instance cookie opt-in.

* Add tests.

* Make adding request cookie opt-in.

* Add docs and javadocs.

* Add default configuration with blocking discovery client.

* Fix docs after review.
2020-12-07 13:08:06 +01:00
Olga Maciaszek-Sharma
c3223934f8 Merge remote-tracking branch 'origin/2.2.x' 2020-12-04 19:00:39 +01:00
Olga Maciaszek-Sharma
c1128e5065 Fix @since info. 2020-12-04 18:59:34 +01:00
Olga Maciaszek-Sharma
2a1a50848f Merge remote-tracking branch 'origin/2.2.x'
# Conflicts:
#	docs/src/main/asciidoc/spring-cloud-commons.adoc
#	spring-cloud-loadbalancer/src/main/java/org/springframework/cloud/loadbalancer/annotation/LoadBalancerClientConfiguration.java
#	spring-cloud-loadbalancer/src/main/java/org/springframework/cloud/loadbalancer/core/RoundRobinLoadBalancer.java
#	spring-cloud-loadbalancer/src/test/java/org/springframework/cloud/loadbalancer/core/LoadBalancerTests.java
2020-12-04 18:57:33 +01:00
Olga Maciaszek-Sharma
843cb79649 Support same service instance preference (#862)
* Draft initial implementation.

* Rename default configuration property. Check previously chosen instance for equality.

* Verify previous service instance for null. Add tests.

* Add docs.

* Add javadocs.

* Fix javadocs after review.
2020-12-04 18:18:10 +01:00
Olga Maciaszek-Sharma
c65dfbca6b Merge remote-tracking branch 'origin/2.2.x'
# Conflicts:
#	docs/src/main/asciidoc/_configprops.adoc
#	spring-cloud-commons/src/main/java/org/springframework/cloud/client/loadbalancer/reactive/LoadBalancerProperties.java
#	spring-cloud-loadbalancer/src/main/java/org/springframework/cloud/loadbalancer/core/HealthCheckServiceInstanceListSupplier.java
#	spring-cloud-loadbalancer/src/test/java/org/springframework/cloud/loadbalancer/core/HealthCheckServiceInstanceListSupplierTests.java
2020-12-01 11:31:55 +01:00
Olga Maciaszek-Sharma
cbedae2e82 Allow refetching instances for healthcheck (#855)
* Allow refetching instances by HealthCheckServiceInstanceListSupplier.

* Add docs and javadocs.

* Fix docs after review.
2020-12-01 11:14:14 +01:00
Olga Maciaszek-Sharma
f5a5bef06f Merge remote-tracking branch 'origin/2.2.x'
# Conflicts:
#	docs/pom.xml
#	pom.xml
#	spring-cloud-commons-dependencies/pom.xml
#	spring-cloud-commons/pom.xml
#	spring-cloud-context-integration-tests/pom.xml
#	spring-cloud-context-webflux-integration-tests/pom.xml
#	spring-cloud-context/pom.xml
#	spring-cloud-loadbalancer/pom.xml
#	spring-cloud-loadbalancer/src/main/java/org/springframework/cloud/loadbalancer/annotation/LoadBalancerClientConfiguration.java
#	spring-cloud-loadbalancer/src/test/java/org/springframework/cloud/loadbalancer/annotation/LoadBalancerClientConfigurationTests.java
#	spring-cloud-starter-loadbalancer/pom.xml
#	spring-cloud-starter/pom.xml
#	spring-cloud-test-support/pom.xml
2020-11-16 13:19:56 +01:00
Olga Maciaszek-Sharma
17e9a2af38 Remove LB caching from default health-check config, since HealthCheckServiceInstanceListSupplier has a separate caching mechanism. Fixes gh-849. 2020-11-16 13:11:35 +01:00
Olga Maciaszek-Sharma
7f23cb852f Add Reactive retries for SC LoadBalancer (#847)
* Implement retry logic.

* Fix retrying on next instance when RetryExhausted in same instance.

* Fix retrying on next instance when RetryExhausted in same instance.

* Fix retrying on next instance when RetryExhausted in same instance.

* Move duplicated methods to utility class. Fix checkstyle.

* Fix test.

* Add more tests.

* Fix test.

* Add autoConfiguration.

* Refactor and add javadocs.

* Add javadocs.

* Use RetryAwareServiceInstanceListSupplier with reactive retries.

* Update properties.

* Fix the docs.

* Rename utility class.

* Verify interactions in order.
2020-11-12 11:49:33 +01:00
Olga Maciaszek-Sharma
4b3a399f7b Merge remote-tracking branch 'origin/2.2.x'
# Conflicts:
#	spring-cloud-commons/src/main/java/org/springframework/cloud/client/DefaultServiceInstance.java
#	spring-cloud-commons/src/main/java/org/springframework/cloud/client/discovery/simple/SimpleDiscoveryClient.java
#	spring-cloud-commons/src/main/java/org/springframework/cloud/client/discovery/simple/SimpleDiscoveryClientAutoConfiguration.java
#	spring-cloud-commons/src/main/java/org/springframework/cloud/client/discovery/simple/reactive/SimpleReactiveDiscoveryClientAutoConfiguration.java
#	spring-cloud-commons/src/test/java/org/springframework/cloud/client/discovery/simple/SimpleDiscoveryClientTests.java
#	spring-cloud-commons/src/test/java/org/springframework/cloud/client/discovery/simple/reactive/SimpleReactiveDiscoveryClientTests.java
#	spring-cloud-commons/src/test/java/org/springframework/cloud/client/loadbalancer/reactive/LoadBalancerExchangeFilterFunctionTests.java
#	spring-cloud-commons/src/test/java/org/springframework/cloud/client/loadbalancer/reactive/ReactorLoadBalancerExchangeFilterFunctionTests.java
#	spring-cloud-loadbalancer/src/test/java/org/springframework/cloud/loadbalancer/blocking/client/BlockingLoadBalancerClientTests.java
2020-10-12 15:33:22 +02:00
alchemy24
72762d76ed Deprecates SimpleServiceInstance in favor of DefaultServiceInstance (#835)
* Initial Commit

* Added URI to DefaultServiceInstance

* Added default constructor

* Fixed PR Comments
2020-10-12 13:41:39 +02:00
Olga Maciaszek-Sharma
25c17082ee Avoid retrying on same instance (#834)
* cherry-pick switching to properties

* Pass information on previous ServiceInstance to RequestContext.

# Conflicts:
#	spring-cloud-loadbalancer/src/main/java/org/springframework/cloud/loadbalancer/blocking/retry/BlockingLoadBalancedRetryPolicy.java

* Add a RoundRobinLoadBalancer implementation that avoids same service instance while retrying.

* Wrap instances in ArrayList. Add tests.

* Enable AvoidPreviousInstanceRoundRobinLoadBalancer by default if SpringRetry on classpath.

* Fix failing tests. Add javadocs and author tags.

* Fix properties.

* Add documentation.

* Fix docs after review.

* Fix docs after review.

* Handle avoiding previous instance with ServiceInstanceListSupplier in place of LoadBalancer.

* Fix property name.

* Change spelling.
2020-09-29 19:36:54 +02:00
Olga Maciaszek-Sharma
1badef953f Merge remote-tracking branch 'origin/2.2.x'
# Conflicts:
#	docs/src/main/asciidoc/spring-cloud-commons.adoc
#	spring-cloud-commons/src/main/java/org/springframework/cloud/client/loadbalancer/InterceptorRetryPolicy.java
#	spring-cloud-commons/src/main/java/org/springframework/cloud/client/loadbalancer/LoadBalancerAutoConfiguration.java
#	spring-cloud-commons/src/main/java/org/springframework/cloud/client/loadbalancer/RetryLoadBalancerInterceptor.java
#	spring-cloud-commons/src/test/java/org/springframework/cloud/client/loadbalancer/AbstractLoadBalancerAutoConfigurationTests.java
#	spring-cloud-commons/src/test/java/org/springframework/cloud/client/loadbalancer/InterceptorRetryPolicyTest.java
#	spring-cloud-loadbalancer/src/main/java/org/springframework/cloud/loadbalancer/config/BlockingLoadBalancerClientAutoConfiguration.java
#	spring-cloud-loadbalancer/src/test/java/org/springframework/cloud/loadbalancer/config/BlockingLoadBalancerClientAutoConfigurationTests.java
2020-09-24 18:02:35 +02:00
Olga Maciaszek-Sharma
5401628aed Add retry support for blocking LoadBalancer (#832)
* Add LoadBalancerProperties and BlockingLoadBalancedRetryPolicy. Add spring-retry dependency in LoadBalancer.

* Add BlockingLoadBalancedRetryFactory

* Move retry properties to LoadBalancerRetryProperties.

* Refactor and remove deprecations, fix checkstyle.

* Add BlockingLoadBalancedRetryPolicy to autoconfiguration. Set default retryableStatusCode prop. Fix javadoc.

* Allow using @Order on LoadBalancedRetryFactory beans.

* Add tests. Reformat tests. Add explanatory comments.

* Add documentation.

* Fix javadoc.

* Fix docs after review.

* Change field name.
2020-09-24 17:31:38 +02:00
Olga Maciaszek-Sharma
00668991a4 Reformat. 2020-09-17 09:44:37 -04:00
Olga Maciaszek-Sharma
7beca68a39 Merge remote-tracking branch 'origin/2.2.x'
# Conflicts:
#	docs/pom.xml
#	pom.xml
#	spring-cloud-commons-dependencies/pom.xml
#	spring-cloud-commons/pom.xml
#	spring-cloud-context-integration-tests/pom.xml
#	spring-cloud-context-webflux-integration-tests/pom.xml
#	spring-cloud-context/pom.xml
#	spring-cloud-context/src/test/java/org/springframework/cloud/bootstrap/encrypt/EnvironmentDecryptApplicationInitializerTests.java
#	spring-cloud-loadbalancer/pom.xml
#	spring-cloud-starter-loadbalancer/pom.xml
#	spring-cloud-starter/pom.xml
#	spring-cloud-test-support/pom.xml
2020-08-11 13:25:00 +02:00
Olga Maciaszek-Sharma
018aae3632 Subscribe on flux earlier. Fixes gh-802. 2020-08-11 13:05:07 +02:00
Spencer Gibb
a183bc709f Use new boot ConfigData framework (#703)
Bootstrap is now opt-in using `spring.config.use-legacy-processing`. Otherwise, bootstrap is left as is.

If bootstrap is disabled, the `ContextRefresher` uses new `ConfigData` framework from boot.

See #608 for original motivation.
2020-08-06 12:54:25 -04:00
spencergibb
828912100f Disables failing test.
See gh-802
2020-07-31 15:35:14 -04:00
Olga Maciaszek-Sharma
46bf5a01ac Lb complete lifecycle (#783)
* Add LoadBalancerLifecycle. Trigger lifecycle callbacks. Set hints from properties.

* Trigger LB lifecycle callbacks from BlockingLoadBalancerClient and RetryLoadBalancerInterceptor.

* Register LifecycleProcessors with @LoadBalancerClients

* Register LifecycleProcessors with @LoadBalancerClients configuration.

* Handle null lifecycle beans map returned from factory. Adjust tests to code changes.

* Handle null lifecycle beans map returned from factory in RetryLoadBalancerInterceptor. Ensure ReactiveLoadBalancer.Factory bean is present while instantiating RetryLoadBalancerInterceptor. Add more tests.

* Remove generics from supports(...) method signature.

* Allow setting hint per service via properties.

* Add some toString() methods. Add more info on deprecated callbacks in javadocs and comments.

* Add javadocs.

* Format javadocs. Add docs.

* Update hint docs.

* Fix docs.

* Fix docs.

* Extract filtering supported lifecycle processors to a separate class; Execute onComplete() calls for DISCARD status in RetryLoadBalancerInterceptor. Remove duplicated `onComplete` calls for FAILED and SUCCESS status in RetryLoadBalancerInterceptor. Add test for no duplicated lifecycle calls in RetryLoadBalancerInterceptorTest.

* Small refactoring: remove deprecated methods use, add final keywords, remove unnecessary keywords.

* Add javadoc.
2020-07-21 18:38:52 +02:00
Olga Maciaszek-Sharma
43ea5b17fc Remove deprecated Request and Response classes. (#779) 2020-07-04 19:15:30 +02:00
Olga Maciaszek-Sharma
b430529ccc Switch initialDelay to Duration. (#768) 2020-05-27 20:18:30 +02:00
Olga Maciaszek-Sharma
cfeb38a369 Merge remote-tracking branch 'origin/2.2.x'
# Conflicts:
#	docs/src/main/asciidoc/_configprops.adoc
2020-05-27 20:17:48 +02:00
Olga Maciaszek-Sharma
da23fe4f07 Handle exceptions and timeouts new (#767)
* Handle timeouts and exceptions while retrieving instances.

* Update docs.
2020-05-27 20:11:47 +02:00
Olga Maciaszek-Sharma
b37ef447dc Desynchronise HealthCheck and Cache. 2020-05-27 17:01:11 +02:00
Olga Maciaszek-Sharma
87e5d7a62b Fix execution thread for blocking and adjusts timing
* Fix execution thread for blocking DiscoveryClientServiceInstanceListSupplier.

* Desynchronise HealthCheck and Cache. Add info about using HealthCheck without Cache to docs.

See gh-760
2020-05-27 10:13:55 -04:00
Olga Maciaszek-Sharma
587f5f568a Gh 760 health check with cache new (#765)
* Cache first element of service instance list flux.

* Invoke destroy() and afterPropertiesSet() in non-bean ServiceInstanceListSupplier delegates.

* Fix return updated instances.

* Fix return updated instances.

(cherry picked from commit 88b2f0e869)
2020-05-26 16:38:04 +02:00
Olga Maciaszek-Sharma
88b2f0e869 Gh 760 health check with cache new (#765)
* Cache first element of service instance list flux.

* Invoke destroy() and afterPropertiesSet() in non-bean ServiceInstanceListSupplier delegates.

* Fix return updated instances.

* Fix return updated instances.
2020-05-26 16:35:09 +02:00
Spencer Gibb
83bb54bafd Renames ServiceInstanceListSuppliers to ServiceInstanceListSupplierBuilder (#761)
Puts static builder() method on ServiceInstanceListSupplier.

Deprecates ServiceInstanceListSupplier.fixed(Environment) and replaces with fixed(serviceId).
2020-05-21 17:06:35 -04:00
Spencer Gibb
a10fbb9b07 Renames ServiceInstanceListSuppliers to ServiceInstanceListSupplierBuilder (#761)
Puts static builder() method on ServiceInstanceListSupplier.

Deprecates ServiceInstanceListSupplier.fixed(Environment) and replaces with fixed(serviceId).
2020-05-21 14:08:09 -04:00
Andrew Fitzgerald
de0a14b7a5 Removes deprecated ServiceInstanceSupplier
Fixes gh-753
2020-05-19 17:35:07 -04:00