Skip to content

armeria-0.77.0

Choose a tag to compare

@trustin trustin released this 17 Dec 05:51
15680d8

New features

  • Client-side decoration API has been simplified greatly. #1482 #1484
    ClientBuilder b = new ClientBuilder(...);
    // Before
    b.decorator(HttpRequest.class, HttpResponse.class, httpLevelDecorator);
    b.decorator(RpcRequest.class, RpcResponse.class, rpcLevelDecorator);
    // After
    b.decorator(httpLevelDecorator); // No need to specify req/res types.
    b.rpcDecorator(rpcLevelDecorator); // Added a dedicated method for RPC-level decorators.
  • Added ServiceRequestContext.clientAddress() which returns the IP address of the client which initiated the request. #1467
    • This property respects Forwarded, X-Forwarded-For and PROXY protocol headers in the configurable order of preferences.
    • You can also include this property in an access log using the format string %a.
    • See clientAddressSources(), clientAddressTrustedProxyFilter() and clientAddressFilter() in ServerBuilder for more information.
  • Added ServiceRequestContext.additionalResponseTrailers which allows you to set additional HTTP trailers easily. #1488
  • Added ClientFactory.disableShutdownHook(). #1082 #1472

Improvements

  • The exception handler of an annotated service now handles the exceptions raised by the decorators of the annotated service. #1478

Bug fixes

  • Fixed a bug where DocService debug form does not show all example HTTP headers. #1466
  • Fixed a bug where EndpointGroup health check meters sometimes have missing ip tag. #1474
  • Fixed a bug where annotated services do not work when a service object is enhanced by CGLIB. #1473 #1480
    • Related: Spring validation and AOP
  • Fixed a bug where Armeria client does not respect HTTP/2 MAX_CONCURRENT_STREAMS settings. #1206 #1481
  • Fixed a bug where Armeria uses too small inbound traffic water marks for an HTTP/2 connection. #1489
  • Fixed a bug where false positive warnings are logged when scanning an annotated service. #1485 #1486

Deprecations

  • ClientBuilder.decorator(Class, Class, ...) has been deprecated in favor of the new decorator() and rpcDecorator() methods introduced in the 'New features' section above. #1482 #1484

Dependencies

  • Brave 5.5.1 -> 5.6.0
  • gRPC 1.16.1 -> 1.17.1
  • Micrometer 1.1.0 -> 1.1.1
  • Netty 4.1.31 -> 4.1.32
  • Prometheus 0.5.0 -> 0.6.0
  • Retrofit 2.4.0 -> 2.5.0
  • RxJava 2.2.3 -> 2.2.4
  • Spring Boot 2.1.0 -> 2.1.1, 1.5.17 -> 1.5.18
  • Tomcat 9.0.13 -> 9.0.14