You're seeing the release note of an old version. Check out the latest release note.
v1.2.0
October 22, 2020
🌟 New features
-
You can now bind a
GrpcServiceto 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
DecodingServicefor decoding a compressed request. #1521 #3087 -
You 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 #3024 -
You can now cancel a service's request or client's response with
CancellationExceptionor anyThrowableusingRequestContext.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-autoconfigureandarmeria-spring-boot2-webflux-autoconfigureare in the class path. #3056 #3102 - You no longer see a previously selected input when the input box of
Go tomenu 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-logbackis 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
UNKNOWNerror code while sending stream messages with Reactive gRPC stub. #3090 #3099 TTEXT_NAMED_ENUMnow correctly serializes enums when used inside maps. #3091BraveClientandBraveServicedo not override the default(Client|Server)(Request|Response)Parseranymore. #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
DocServicepage is rebuilt. #3094
🏚️ Deprecations
- The following methods have been deprecated in favor of their
millis-accepting versions: #3108 - The following methods have been deprecated in favor of their
*Cancellingand*Cancelledversions: #3080
⛓ 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
🙇 Thank you
This release was possible thanks to the following contributors who shared their brilliant ideas and awesome pull requests:














