Go to file
Brian Clozel d451d6adcc Ensure that client responses are observed when filters fail
Prior to this commit, an error thrown by a `ExchangeFilterFunction`
configured on a `WebClient` instance would be recorded as such by the
client observation, but the response details would be missing from the
observation.
All filter functions and the exchange function (performing the HTTP
call) would be merged into a single `ExchangeFunction`; this instance
was instrumented and osberved. As a result, the instrumentation would
only get the error signal returned by the filter function and would not
see the HTTP response even if it was received. This means that the
recorded observation would not have the relevant information for the
HTTP status.

This commit ensures that between the configured `ExchangeFilterFunction`
and the `ExchangeFunction`, an instrumentation `ExchangeFilterFunction`
is inserted. This allows to set the client response to the observation
context, even if a later error signal is thrown by a filter function.

Note that with this change, an error signal sent by a filter function
will be still recorded in the observation.

See gh-30059
2023-03-30 20:04:48 +02:00
.github Restore top-level read permission for backport bot 2022-12-09 12:02:56 +00:00
buildSrc Polishing 2023-03-24 16:05:40 +01:00
ci Update Java version for compatibility tests in CI 2023-03-23 15:47:06 +01:00
framework-bom Guard against new Spring modules in ApiDiff task 2022-07-28 10:51:53 +02:00
framework-docs Polishing 2023-03-28 13:26:29 +02:00
framework-platform Upgrade to Reactor 2022.0.5 and Netty 4.1.90 2023-03-17 17:36:51 +01:00
gradle Allow JDK 20 builds to pass by using legacy locale data 2023-03-24 16:08:38 +01:00
integration-tests Update copyright headers 2023-01-19 16:20:03 +01:00
spring-aop Use JdkDynamicAopProxy class loader instead of JDK bootstrap/platform loader 2023-03-29 13:46:29 +02:00
spring-aspects Update copyright headers 2023-03-13 21:53:40 +01:00
spring-beans Refine DisposableBeanAdapter method discovery for native 2023-03-30 15:28:50 +02:00
spring-context Polish 2023-03-30 14:49:11 +02:00
spring-context-indexer Ensure all packages declare package-info.java with null-safety annotations 2023-03-10 17:33:52 +01:00
spring-context-support Avoid lock contention in CaffeineCacheManager 2023-03-08 16:23:32 +01:00
spring-core Fix incomplete assertions 2023-03-28 10:56:41 +02:00
spring-core-test Update copyright headers 2023-03-13 21:53:40 +01:00
spring-expression Polish contribution 2023-03-27 19:31:35 +02:00
spring-instrument Ensure all packages declare package-info.java with null-safety annotations 2023-03-10 17:33:52 +01:00
spring-jcl Apply "instanceof pattern matching" in spring-jcl module 2023-03-06 14:56:53 +01:00
spring-jdbc Ensure all packages declare package-info.java with null-safety annotations 2023-03-10 17:33:52 +01:00
spring-jms Consistently declare Object::equals argument as @Nullable 2023-03-13 21:43:21 +01:00
spring-messaging Fix incomplete assertions 2023-03-28 10:56:41 +02:00
spring-orm Disable affected tests on Java 18+/19+ 2023-03-24 16:05:40 +01:00
spring-oxm Apply "instanceof pattern matching" in remainder of spring-oxm module 2023-03-06 17:07:49 +01:00
spring-r2dbc Update copyright headers 2023-03-13 21:53:40 +01:00
spring-test Cache ServerHttpRequest::getMethod in AbstractServerHttpRequest 2023-03-21 11:29:32 +01:00
spring-tx Polishing 2023-03-12 18:38:50 +01:00
spring-web Propagate HttpStreamResetException itself if cause is null 2023-03-30 19:22:30 +02:00
spring-webflux Ensure that client responses are observed when filters fail 2023-03-30 20:04:48 +02:00
spring-webmvc Use MethodInvocationInfo class loader in case of JDK platform loader as well 2023-03-29 13:46:18 +02:00
spring-websocket Fix example in Javadoc for @EnableWebSocket 2023-03-24 17:54:33 +01:00
src Polishing 2023-03-12 18:38:50 +01:00
.editorconfig Add EditorConfig 2017-06-12 08:07:54 +02:00
.gitattributes Ensure line endings for binary files are not modified in Git 2019-10-18 11:56:18 +02:00
.gitignore Fix .gitignore pattern for Maven "target" folders 2023-02-28 16:36:32 +01:00
.mailmap Add Simon to mailmap 2023-01-11 15:26:31 +01:00
.sdkmanrc Updated Java 17 version in sdkmanrc 2023-01-19 10:03:18 +01:00
CODE_OF_CONDUCT.adoc URL Cleanup 2019-03-21 15:08:55 -05:00
CONTRIBUTING.md Create framework-docs module 2022-11-02 10:59:12 +01:00
LICENSE.txt Add LICENSE.txt file 2019-08-20 22:01:12 +02:00
README.md Update build badge and link 2023-03-01 15:51:07 +01:00
SECURITY.md Mention JAR signing key in SECURITY.md 2023-03-17 22:32:33 +01:00
build.gradle Upgrade to Reactor 2022.0.5 and Netty 4.1.90 2023-03-17 17:36:51 +01:00
gradle.properties Next development version (v6.0.8-SNAPSHOT) 2023-03-20 09:53:24 +00:00
gradlew Upgrade Gradle wrapper 2022-11-25 23:12:08 +01:00
gradlew.bat Upgrade Gradle wrapper 2022-11-25 23:12:08 +01:00
import-into-eclipse.md Remove Groovy from "Eclipse/STS Project Import Guide" 2022-01-21 11:27:09 +01:00
import-into-idea.md Fix links in Javadoc and reference docs 2022-09-14 17:00:11 +02:00
settings.gradle Update Gradle Enterprise plugin 2023-02-15 14:43:31 +01:00
update_copyright_headers.sh Use correct Kotlin file extension in update_copyright_headers.sh 2023-02-19 13:41:36 +01:00

README.md

Spring Framework Build Status Revved up by Gradle Enterprise

This is the home of the Spring Framework: the foundation for all Spring projects. Collectively the Spring Framework and the family of Spring projects are often referred to simply as "Spring".

Spring provides everything required beyond the Java programming language for creating enterprise applications for a wide range of scenarios and architectures. Please read the Overview section as reference for a more complete introduction.

Code of Conduct

This project is governed by the Spring Code of Conduct. By participating, you are expected to uphold this code of conduct. Please report unacceptable behavior to spring-code-of-conduct@pivotal.io.

Access to Binaries

For access to artifacts or a distribution zip, see the Spring Framework Artifacts wiki page.

Documentation

The Spring Framework maintains reference documentation (published and source), GitHub wiki pages, and an API reference. There are also guides and tutorials across Spring projects.

Micro-Benchmarks

See the Micro-Benchmarks wiki page.

Build from Source

See the Build from Source wiki page and the CONTRIBUTING.md file.

Continuous Integration Builds

Information regarding CI builds can be found in the Spring Framework Concourse pipeline documentation.

Stay in Touch

Follow @SpringCentral, @SpringFramework, and its team members on Twitter. In-depth articles can be found at The Spring Blog, and releases are announced via our news feed.

License

The Spring Framework is released under version 2.0 of the Apache License.