Skip to content

Commit

Permalink
Add release note for 1.31.0 (#5970)
Browse files Browse the repository at this point in the history
![Screenshot 2024-11-14 at 09-31-27 1 31 0 release notes — Armeria
release
notes](https://github.com/user-attachments/assets/425c0918-bcf2-43ef-a50b-4ce6dbe102f7)

---------

Co-authored-by: Ikhun Um <[email protected]>
Co-authored-by: Trustin Lee <[email protected]>
  • Loading branch information
3 people authored Nov 14, 2024
1 parent abbd554 commit 33b0aec
Show file tree
Hide file tree
Showing 2 changed files with 139 additions and 1 deletion.
2 changes: 1 addition & 1 deletion dependencies.toml
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ micrometer-docs-generator = "1.0.2"
mockito = "4.11.0"
monix = "3.4.1"
munit = "1.0.2"
netty = "4.1.114.Final"
netty = "4.1.115.Final"
netty-incubator-transport-native-io_uring = "0.0.25.Final"
nexus-publish = "2.0.0"
node-gradle-plugin = "7.1.0"
Expand Down
138 changes: 138 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,138 @@
---
date: 2024-11-13
---

## 🌟 New features

- **Dynamic TLS Configuration**: You can now update TLS configurations dynamically using <type://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
TlsProvider tlsProvider = hostname -> TlsKeyPair.of(...);
```
- The <type://TlsProvider> can be used for both servers and clients.
```java
// client-side
ClientFactory
.builder()
.tlsProvider(tlsProvider);

// server-side
Server
.builder()
.tlsProvider(tlsProvider);
```
- **Access to Raw Request Path**: You can access the raw request path via <type://ServiceRequestContext#rawPath()>. #5931 #5932
- This can be useful when you need to get the original request path sent from the client, even if it's potentially insecure.
```java
ServiceRequestContext ctx = ...;
String rawPath = ctx.rawPath();
// rawPath may contain unencoded, invalid or insecure characters.
```
- **Additional Static Factory Methods for ResponseEntity**: More static factory methods are added for <type://ResponseEntity>. #5954
```java
ResponseEntity<Object> response = ResponseEntity.of(200);
ResponseEntity<String> response = ResponseEntity.of("Hello!");
```
- **Timeout Support for HttpRequest and HttpResponse**: 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
```
- **Nacos Integration for Server Registration and Endpoint Retrieval**: 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.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);
```

## 📈 Improvements

- <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
- The GraalVM native image metadata has been updated to reflect recent code changes. #5946
- 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

## Dependencies

- Brotli4j 1.16.0 1.17.0
- java-control-plane 1.0.45 1.0.46
- Eureka 2.0.3 2.0.4
- GraphQL Kotlin 7.1.4 8.2.1
- Java gRPC 1.65.1 1.68.1
- 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.115.Final
- prometheus 1.3.1 1.3.2
- 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

## 🙇 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 33b0aec

Please sign in to comment.