forked from line/armeria
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Loading status checks…
add release note
Showing
1 changed file
with
168 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,168 @@ | ||
--- | ||
date: 2024-11-13 | ||
--- | ||
|
||
## 🌟 New features | ||
|
||
- You can now set TLS configurations dynamically using `TlsProvider` #5033 #5228 | ||
- You can create a <type://TlsProvider> which specifies <type://TlsKeyPair> dynamically. | ||
```java | ||
// return a TlsKeyPair for host patterns | ||
TlsProvider tlsProvider = TlsProvider | ||
.builder() | ||
.keyPair("*.a.com", TlsKeyPair.of(...)) | ||
.keyPair("*.b.com", TlsKeyPair.of(...)) | ||
.build(); | ||
|
||
// return a TlsKeyPair dynamically | ||
TlsKeyPair tlsKeyPair = hostname -> TlsKeyPair.of(...); | ||
``` | ||
- The <type://TlsProvider> can be used for both server and clients. | ||
```java | ||
// client-side | ||
ClientFactory | ||
.builder() | ||
.tlsProvider(tlsProvider); | ||
|
||
// server-side | ||
Server | ||
.builder() | ||
.tlsProvider(tlsProvider); | ||
``` | ||
- You can customize how in-flight requests are terminated during server shutdown by specifying a <type://GracefulShutdown>. #5941 | ||
```java | ||
GracefulShutdown gracefulShutdown = | ||
GracefulShutdown.builder() | ||
.shutdownErrorFunction((ctx, req) -> { | ||
logger.info("Not gracefully terminated!"); | ||
return new MyException(); | ||
}) | ||
.build(); | ||
|
||
Server | ||
.builder() | ||
.gracefulShutdown(gracefulShutdown); | ||
``` | ||
- You can access the raw request path via <type://ServiceRequestContext#rawPath()>. #5931 #5932 | ||
```java | ||
ServiceRequestContext ctx = ...; | ||
String rawPath = ctx.rawPath(); | ||
``` | ||
- More static factory methods are added for <type://ResponseEntity>. #5954 | ||
```java | ||
ResponseEntity response = ResponseEntity.of(200); | ||
ResponseEntity response = ResponseEntity.of("Hello!"); | ||
``` | ||
- You can specify <type://HttpRequest#timeout(Duration)> or <type://HttpResponse#timeout(Duration)> to set a timeout | ||
for an <type://HttpRequest> or <type://HttpResponse>. #5744 #5761 | ||
```java | ||
HttpRequest | ||
.streaming(HttpMethod.GET, "/") | ||
.timeout(Duration.ofSeconds(1)) // timeout if there is a delay exceeding 1 second between each data chunk | ||
``` | ||
- You can now register your server to or retrieve <typeplural://Endpoint> from | ||
a [Nacos](https://nacos.io/) registry server. #5365 #5409 | ||
- Use <type://NacosUpdatingListener> to register the <typeplural://Server> to [Nacos](https://nacos.io/): | ||
```java | ||
Server server = | ||
Server.builder() | ||
...; | ||
server.addListener( | ||
NacosUpdatingListener.builder(nacosUri, "my-service") | ||
... | ||
.build()); | ||
``` | ||
- Use <type://NacosEndpointGroup> for clients: | ||
```java | ||
EndpointGroup group = NacosEndpointGroup.of(nacosUri, "my-service"); | ||
WebClient client = WebClient.of(SessionProtocol.HTTP, group); | ||
``` | ||
- An experimental `micrometer-context` module has been added. You can propagate <type://RequestContext> via [Project Reactor](https://projectreactor.io/)'s `Context`. #5145 #5577 | ||
```java | ||
ContextRegistry | ||
.getInstance() | ||
.registerThreadLocalAccessor(new RequestContextThreadLocalAccessor()); | ||
Hooks.enableAutomaticContextPropagation(); | ||
``` | ||
|
||
## 📈 Improvements | ||
|
||
- The GraalVM native image metadata has been updated to reflect recent code changes. #5946 | ||
- <type://XdsEndpointGroup> now supports `disable_active_health_check` #5879 | ||
|
||
## 🛠️ Bug fixes | ||
|
||
- DNS resolver now correctly adds search domains for hostnames with trailing dots. #5963 | ||
- CORS headers for failed requests are now correctly set even when a custom <type://ServerErrorHandler> is configured. #5493 #5939 | ||
- Fixed a bug where <type://AsyncServerInterceptor> is incompatible with the OpenTelemetry gRPC agent. #5937 #5938 | ||
- Spring Actuator correctly collects metrics when using Spring WebFlux integration. #5882 #5884 | ||
|
||
## ☢️ Breaking changes | ||
|
||
- ABI compatibility of <type://ResponseEntity#of(ResponseHeaders)> has been broken. #5954 | ||
|
||
## 🏚️ Deprecations | ||
|
||
- <type://ServerBuilder#gracefulShutdownTimeout(Duration,Duration)> has been deprecated in favor of <type://ServerBuilder#gracefulShutdown(GracefulShutdown)>. | ||
|
||
## ⛓ Dependencies | ||
|
||
- Brotli4j 1.16.0 → 1.17.0 | ||
- java-control-plane 1.0.45 → 1.0.46 | ||
- Eureka 2.0.3 → 2.0.4 | ||
- fastutil 8.5.14 → 8.5.15 | ||
- GraphQL Kotlin 7.1.4 → 8.2.1 | ||
- Java gRPC 1.65.1 → 1.68.1 | ||
- Guava 33.2.1-jre → 33.3.1-jre | ||
- Jackson 2.17.2 → 2.18.1 | ||
- Jetty | ||
- 11.0.22 → 11.0.24 | ||
- 12.0.12 → 12.0.14 | ||
- Kotlin 3.8.0 → 3.8.1 | ||
- Kotlin coroutines 1.8.1 → 1.9.0 | ||
- Fabric8 Kubernetes Client 6.13.1 → 6.13.4 | ||
- Micrometer 1.13.2 → 1.13.6 | ||
- Micrometer Tracing 1.3.2 → 1.3.5 | ||
- Netty 4.1.112.Final → 4.1.114.Fin | ||
- prometheus 1.3.1 → 1.3.2al | ||
- Protobuf 3.25.1 → 3.25.5 | ||
- protobuf-jackson 2.5.0 → 2.6.0 | ||
- Reactor 3.6.8 → 3.6.11 | ||
- RXJava 3.1.8 → 3.1.9 | ||
- Sangria 4.1.1 → 4.2.2 | ||
- Scala | ||
- 2.12.19 → 2.12.20 | ||
- 2.13.14 → 2.13.15 | ||
- 3.4.2 → 3.6.1 | ||
- Spring 6.1.11 → 6.1.14 | ||
- Spring Boot 3.3.2 → 3.3.5 | ||
- Tomcat | ||
- 9.0.91 → 9.0.96 | ||
- 10.1.26 → 10.1.31 | ||
|
||
## 🗑 Maybe ignore | ||
|
||
- !PENDING! Can upgrade websocket request with multiple connection value #5957 #5958 | ||
|
||
## 🙇 Thank you | ||
|
||
<ThankYou usernames={[ | ||
'Bue-von-hon', | ||
'JiwonKKang', | ||
'KarboniteKream', | ||
'KonaEspresso94', | ||
'Mina-1316', | ||
'be-hase', | ||
'blue-hope', | ||
'chickenchickenlove', | ||
'friscoMad', | ||
'ikhoon', | ||
'jrhee17', | ||
'kabigon-sung', | ||
'minwoox', | ||
'my4-dev', | ||
'roderick675', | ||
'sjy982', | ||
'trustin', | ||
'yzfeng2020' | ||
]} /> |