You're seeing the release note of an old version. Check out the latest release note.
v1.22.0
February 9, 2023
🌟 New features
-
CircuitBreakerClientintegration with Resilience4j's circuit breaker is now available. #1469 #4139- Note that
armeria-resilience4j2requires Java 17 or higher.
Resilience4jCircuitBreakerMapping mapping =
Resilience4jCircuitBreakerMapping.of();
WebClient client = WebClient
.builder()
.decorator(CircuitBreakerClient
.builder(CircuitBreakerRule.onException())
.handler(Resilience4JCircuitBreakerClientHandler.of(mapping)) // 👈👈👈
.newDecorator())
... - Note that
-
You can now use
AsyncServerInterceptorto asynchronously intercept gRPC service calls. #4647class AuthServerInterceptor implements AsyncServerInterceptor {
@Override
<I, O> CompletableFuture<Listener<I>> asyncInterceptCall(
ServerCall<I, O> call, Metadata headers, ServerCallHandler<I, O> next) {
return authorizer.authorize(headers).thenApply(result -> {
if (result) {
return next.startCall(call, headers);
} else {
throw new AuthenticationException("Invalid access");
}
});
}
}
GrpcService.builder()
.intercept(new AuthServerInterceptor()) // 👈👈👈
.addService(...)
... -
@Blockingannotation can now be used with gRPC services. #4389 #4585@Blocking // 👈👈👈 applies to all methods in the class
class MyGrpcServiceImpl extends MyGrpcServiceImplBase {
@Blocking // 👈👈👈 applies to a single method
public void blockingCall(...) {
...
}
} -
Armeria server with Spring integration can now be configured to bind to non-ip addresses. #4597 #4598
-
The authenticated remote user set by
RequestLogBuilder.authenticatedUser()is now logged in access logs. #4634 -
DocServicenow exposes JSON Schema via the/schemas.jsonendpoint. #4518
📈 Improvements
Server.reconfigure()now dynamically updates TLS configurations correctly. #4637- Thrift typedefs are
now correctly displayed in
DocService. #4628 DocServicefront-end assets are now compressed using gzip instead of Brotli. #4616- An exception is raised if TLS is set for a port-based virtual host. #4588
🛠️ Bug fixes
- A
NullPointerExceptionis not raised anymore when an abortedStreamMessageis collected. #4652 - A
ClosedSessionExceptionis not set toRequestLog.responseCause()anymore when an HTTP/1 connection is closed after response data has been fully sent. #4632 - gRPC HTTP/JSON transcoding now doesn't throw an exception when used with nested messages. #4631 #4641
431 Request Header Fields Too Largeis now returned instead of400 Bad Requestif the header size exceedsServerConfig.http1MaxHeaderSize(). #4609 #4655- Warnings on duplicate parameters in
DocServiceare no longer visible when annotations are added to Kotlin data classes. #4645 - gRPC HTTP/JSON transcoding now correctly interprets
google.protobuf.FieldMasktype as a string. #4633 #4640 - gRPC metadata is now exposed via
StatusRuntimeExceptioninRequestLog.responseCause(). #4635 #4636 - Square brackets "
[]" that are specified in path segments are correctly encoded. #4607 #4615 DecodingServiceandDecodingClientnow correctly limit the max length of decompressed streaming data. #4613- Client-side gRPC callback
ClientCall.Listener.onHeaders()is now invoked correctly. #4583 #4608 DocServicenow correctly displays multiple example requests for a single endpoint. #4576 #4605
🏚️ Deprecations
☢️ Breaking changes
- Armeria's gRPC services now try to throw a
StatusRuntimeExceptioninstead of aStatusException. #4658- Note that users are still recommended to perform error handling for both
StatusRuntimeExceptionandStatusExceptionfor gRPC services.
- Note that users are still recommended to perform error handling for both
- We are planning on stopping support for integration with Spring Boot 1. Please join the discussion at our Github issue if you have any opinions. #4651
⛓ Dependencies
- Brave 5.14.1 → 5.15.0
- Dropwizard-metrics 4.2.13 → 4.2.15
- GraphQL Kotlin 6.3.2 → 6.3.5
- gRPC Java 1.49.1 → 1.52.1
- Hibernate Validator 6.2.3.Final → 6.2.5.Final
- Jackson 2.14.1 → 2.14.2
- java-jwt 4.2.1 → 4.2.2
- Kafka client 3.3.1 → 3.4.0
- Kotlin 1.7.22 → 1.8.10
- Micrometer 1.10.2 → 1.10.3
- Netty 4.1.86.Final → 4.1.87.Final
- io_uring 0.0.16.Final → 0.0.17.Final
- Protobuf 3.21.1 → 3.21.7
- Resteasy 5.0.4.Final → 5.0.5.Final
- RxJava3 3.1.5 → 3.1.6
- Sangria 3.4.1 → 3.5.0
- Scala3 3.2.0 → 3.2.2
- ScalaPB 0.11.12 → 0.11.13
- ScalaPB JSON 0.12.0 → 0.12.1
- Spring 5.3.23 → 5.3.25
- Spring Boot 2.7.4 → 2.7.8
- Tomcat8 8.5.84 → 8.5.85
- Tomcat9 9.0.70 → 9.0.71
🙇 Thank you
This release was possible thanks to the following contributors who shared their brilliant ideas and awesome pull requests:















