Skip to content

armeria-0.43.0

Choose a tag to compare

@trustin trustin released this 25 Apr 01:39
· 4301 commits to main since this release

New features

  • #499 Unframed GRPC support

  • #504 Allow adding a listener to any EndpointGroup implementations

    • Add Listeneable and AbstractListenable as a common utility
  • #507 More convenient deferred construction of RpcResponse and HttpResponse

    • Before:

      // RpcResponse
      DefaultRpcResponse res = new DefaultRpcResponse();
      CompletableFuture<Object> future = doAsync();
      future.whenComplete((value, cause) -> {
          if (cause != null) {
              res.completeExceptionally(cause);
          } else {
              res.complete(value);
          }
      });
      return res;
      
      // HttpResponse
      DeferredHttpResponse res = new DeferredHttpResponse();
      CompletableFuture<HttpResponse> future = doAsync();
      future.whenComplete((actualRes, cause) -> {
          if (cause != null) {
              res.close(cause);
          } else {
              res.delegate(actualRes);
          }
      });
      return res;
    • After:

      // RpcResponse
      return RpcResponse.from(doAsync());
      
      // HttpResponse
      return HttpResponse.from(doAsync());
  • #507 Add RpcResponse.join() and RpcResponse.getNow()

  • #507 Add Exceptions.throwUnsafely()

Improvements

  • #476 Reduce the number of memory copies in THttpService
  • #495 Update GRPC to 1.2.0
  • #509 Support Boolean type in DynamicHttpService

Bug fixes

  • #492 Health check metric is not always correct.
  • #496 NullPointerException when aggregating an HTTP message with a trailing header
  • #503 AssertionError in ThriftDocServicePlugin.toTypeSignature()
  • #504 OrElseEndpointGroup does not handle dynamic endpoint changes correctly

Known issues

  • This release depends on Netty 4.1.9, which has a bug related with domain name resolution. If you are in an IPv4 environment, specify the -Djava.net.preferIPv4Stack=true option to work around it. We will release a new version that depends on the Netty version with the fixes once it's available.