1.2.0 release notes
22nd October 2020
🌟 New features
You can now bind a
GrpcService
to a custom route path. #3072 #3083 This is useful if you want to serve an unframed gRPC service with RESTful routes.ServerBuilder sb = ... sb.service(GrpcService.builder() // Bind 'getProfile()' method to '/v1/api/users/profile' .addService("/v1/api/users/profile", userService, UserServiceGrpc.getProfile()) // Bind 'getFriends()' method to '/v1/api/users/friends' .addService("/v1/api/users/friends", userService, UserServiceGrpc.getFriends()) .build());
You can now use
DecodingService
for decoding a compressed request. #1521 #3087You can now use
HttpResponse.ofRedirect()
for easily sending a redirect response. #914 #3059// The status is HttpStatus.TEMPORARY_REDIRECT. HttpResponse.ofRedirect("/new-location"); HttpResponse.ofRedirect("/new-location/%s", someVar); // Redirect with the specified redirection status. HttpResponse.ofRedirect(HttpStatus.MOVED_PERMANENTLY, "/new-location");
You can now choose a path when a Thrift/gRPC service has more than one path in the
DocService
. #2167 #3024You can now cancel a service's request or client's response with
CancellationException
or anyThrowable
usingRequestContext.cancel()
orRequestContext.cancel(Throwable)
. #3046 #3080ClientRequestContext cctx = ...; // Cancel a client's response with ResponseCancellationException cctx.cancel(); cctx.cancel(new RuntimeException("A custom error message")); ServiceRequestContext sctx = ...; // Cancel a service's request with RequestCancellationException sctx.cancel(); sctx.cancel(new RuntimeException("A custom error message"));
📈 Improvements
- Do not launch two servers if both
armeria-spring-boot2-autoconfigure
andarmeria-spring-boot2-webflux-autoconfigure
are in the class path. #3056 #3102 - You no longer see a previously selected input when the input box of
Go to
menu is clicked. #3095
🛠️ Bug fixes
- You now get proper 404 Not Found status when
routeDecorator()
is used and the endpoint of the request doesn't exist. #3120 - You no longer see duplicated MDC keys anymore when
armeria-logback
is applied. #3044 #3105 - You can now get the normal response even though the request is not fully sent. #3115
- You can now use milliseconds as an interval unit in
EurekaEndpointGroup
. #3108 - You no longer see
UNKNOWN
error code while sending stream messages with Reactive gRPC stub. #3090 #3099 TTEXT_NAMED_ENUM
now correctly serializes enums when used inside maps. #3091BraveClient
andBraveService
do not override the default(Client|Server)(Request|Response)Parser
anymore. #3023 #3111- Armeria client now sets the default path(
/
) properly if a path is empty. #3098 - You no longer see an outdated JS bundle in the browser
when the
DocService
page is rebuilt. #3094
🏚️ Deprecations
- The following methods have been deprecated in favor of their
millis
-accepting versions: #3108registryFetchIntervalSeconds()
leaseDurationSeconds()
renewalIntervalSeconds()
- The following methods have been deprecated in favor of their
*Cancelling
and*Cancelled
versions: #3080whenResponseTimingOut()
whenResponseTimedOut()
whenRequestTimingOut()
whenRequestTimedOut()
⛓ Dependencies
- Brave 5.12.6 → 5.12.7
- Caffeine 2.8.5 → 2.8.6
- Dropwizard 1.3.24 → 1.3.25
- Dropwizard Metrics 4.1.12.1 → 4.1.13
- Eureka 1.9.26 → 1.10.7
- gRPC-Java 1.32.1 → 1.33.0
- Guava 29.0 → 30.0
- java-jwt 3.10.3 → 3.11.0
- Jetty 9.4.31 → 9.4.32
- Micrometer 1.3.12 → 1.3.14
- Netty 4.1.52 → 4.1.53
- RxJava2 2.2.19 → 2.2.20
- RxJava3 3.0.6 → 3.0.7
- Spring Boot 2.1.16 → 2.1.17
- Spring 5.1.17 → 5.1.18
- Tomcat8 8.5.57 → 8.5.58
- Tomcat9 9.0.38 → 9.0.39