Armeria v0.99.3 Release Notes

Release Date: 2020-04-14 // about 4 years ago
  • 🍱 💮 What is Armeria?

    Armeria is an open-source asynchronous HTTP/2 RPC/REST client/server library built on top of Java 8, Netty, Thrift and gRPC. Its primary goal is to help engineers build high-performance asynchronous microservices that use HTTP/2 as a session layer protocol. Visit the official web site and follow @armeria_project to check out many cool features you can't find in the official gRPC/Thrift implementation or other microservice frameworks.

    🍱 🌟 New features

    • ➕ Added RetryStrategy.onException() #2652
    • Armeria clients can now send an OPTIONS * HTTP/1 request as an alternative to an HTTP/2 PING frame. #2636
      • This feature is disabled by default and you can enable it by:
      • specifying com.linecorp.armeria.defaultPingIntervalMillis system property
      • or calling ClientFactoryBuilder.pingIntervalMillis().

    📈 Improvements

    • 📄 DocService debug form now prettifies any JSON responses. #2635

    🛠️ Bug fixes

    • grpc-timeout gRPC client header is generated correctly now. #2643
    • 👻 QueryParams.toQueryString() does not raise an exception anymore. #2644
    • HealthCheckedEndpointGroup does not raise aConcurrentModificationException anymore. #2647
    • Thrift TEXT protocol does not fail to handle a recursive union struct anymore. #2654
    • MoreNamingConventions.prometheus() now appends the seconds suffix for LongTaskTimer correctly, when using legacy meter names. #2646
    • 🛠 Fixed a bug where DocService sends a request with a wrong HTTP method if a service specification contains duplicate methods. #2657

    🍱 ☢️ Breaking changes

    • 0️⃣ com.linecorp.armeria.defaultHttp2PingTimeoutMillis flag has been replaced with com.linecorp.armeria.defaultPintIntervalMillis.
    • 🚚 com.linecorp.armeria.defaultUseHttp2PingWhenNoActiveStreams flag has been removed without a replacement, because:
      • HTTP/2 can send PING frame regardless of whether there is an active stream or not.
      • HTTP/1 can only send OPTIONS * HTTP/1.1 when there is no active stream.
    • ClientFactoryBuilder.http2PingTimeoutMillis() has been replaced with ClientFactoryBuilder.pingIntervalMillis().
    • ServerBuilder.http2PingTimeoutMillis() has been replaced with ServerBuilder.pingIntervalMillis().

    🍱 ⛓ Dependencies

    • Brave 5.10.2 → 5.11.2

    🍱 🙇 Thank you

    🚀 This release was possible thanks to the following contributors who shared their brilliant ideas and awesome pull requests: