0.93.0 release notes

26th September 2019

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}'
        @ProducesJson
        public 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