Armeria v0.93.0 Release Notes

Release Date: 2019-09-25 // over 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

    • You can now create a Sampler from a specification string such as random=0.1 and rate-limited=10. #2108

      • This is going to be useful when you want to make the sampling policy of Brave{Client,Server} or Logging{Client,Server} configurable from external sources such as a configuration file or a system property.

      Sampler<Object> randomSampler = Sampler.of("random=0.1");Sampler<Object> rateLimitedSampler = Sampler.of("rate-limited=10");Sampler<Object> alwaysSampler = Sampler.of("always");Sampler<Object> neverSampler = Sampler.of("never");

    • ๐Ÿ‘€ You can now specify the Sampler specification string in the com.linecorp.armeria.verboseExceptions system property. #2105 #2111

      • From this release, the default value of this property is rate-limited=10 which means the stack trace of the exceptions will be recorded at the maximum rate of 10 exceptions/sec. Previously, the default value of this property was false, which eliminates all stack traces, which gave our users a hard time figuring out why.
    • You can now specify a common path prefix using @PathPrefix annotation in annotated services. #2031 #2099

      @PathPrefix("/users")public class MyUserService { @Get("/{id}") // Mapped to '/users/{id}'@ProducesJsonpublic User getUser(@Param int id) { ... } ...}Server server = new ServerBuilder() .annotatedService(new MyUserService()) .build();

    ๐Ÿ› Bug fixes

    • ๐Ÿ›  Fixed a memory leak in HealthCheckService. #2110
    • Prometheus and Dropwizard Metrics are now optional dependencies in armeria-spring-boot-*. #2106 #2107
    • armeria-spring-boot-actuator-autoconfigure does not refuse to start anymore when HealthStatusHttpMapper is missing. #2104

    ๐Ÿ’ฅ Breaking changes

    • ๐Ÿ‘€ Flags.verboseExceptions() has been replaced with verboseExceptionSampler() and verboseExceptionSamplerSpec(). #2111
    • ๐Ÿšš Exceptions.isVerbose(), which was deprecated previously, has been removed. #2111
    • โฌ†๏ธ You may need to add io.micrometer:micrometer-registry-prometheus or io.dropwizard.metrics:metrics-json after upgrading if you were depending on them transitively. #2107

    Dependencies

    • Netty 4.1.41 -> 4.1.42
    • Netty TCNative BoringSSL 2.0.25 -> 2.0.26
    • Project Reactor 3.2.12 -> 3.3.0
    • Prometheus 0.6.0 -> 0.7.0
    • Retrofit 2.6.1 -> 2.6.2

    Thank you

    ๐Ÿš€ This release was possible thanks to the following contributors who shared their brilliant ideas and awesome pull requests: