Skip to content

Commit

Permalink
add release note
Browse files Browse the repository at this point in the history
jrhee17 committed Nov 7, 2024

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
1 parent e03fb51 commit 2a2bdd1
Showing 1 changed file with 168 additions and 0 deletions.
168 changes: 168 additions & 0 deletions site/src/pages/release-notes/1.31.0.mdx
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'
]} />

0 comments on commit 2a2bdd1

Please sign in to comment.