All Versions
32
Latest Version
Avg Release Cycle
17 days
Latest Release
1239 days ago

Changelog History
Page 2

  • v0.99.3 Changes

    April 14, 2020

    ๐Ÿฑ ๐Ÿ’ฎ 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:

  • v0.99.2 Changes

    March 31, 2020

    ๐Ÿฑ ๐Ÿ’ฎ 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.

    ๐Ÿฑ โ›“ Dependencies

    • โฌ‡๏ธ Dropwizard 2.0.2 -> 2.0.5
    • Retrofit 2.8.0 -> 2.8.1
    • ๐Ÿš€ Spring Boot 2.2.5.RELEASE -> 2.2.6.RELEASE
    • Zookeeper 3.6.0 -> 3.5.7

    ๐Ÿฑ ๐Ÿ™‡ Thank you

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

  • v0.99.1 Changes

    March 31, 2020

    ๐Ÿฑ ๐Ÿ’ฎ 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.

    ๐Ÿ› ๏ธ Bug fixes

    • The response is not encoded anymore at EncodingSerivce when the HTTP status indicates the content is empty. #2631

    ๐Ÿฑ โ›“ Dependencies

    • Micrometer 1.4.0 -> 1.3.6

    ๐Ÿฑ ๐Ÿ™‡ Thank you

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

  • v0.98.7 Changes

    March 17, 2020

    ๐Ÿฑ ๐Ÿ’ฎ 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.

    ๐Ÿ› ๏ธ Bug fixes

    • ๐Ÿ›  Fixed a bug where an exception is not wrapped by UnprocessedRequestException in a certain case. #2594

    ๐Ÿฑ ๐Ÿ™‡ Thank you

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

  • v0.98.6 Changes

    March 16, 2020

    ๐Ÿฑ ๐Ÿ’ฎ 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 TextFormatter.socketAddress() and inetAddress() that convert a SocketAddress or an InetAddress into a String without repeating an IP address twice. #2591

    ๐Ÿ“ˆ Improvements

    • RequestContext.toString() now returns a String that includes its RequestId. #2591

    ๐Ÿ› ๏ธ Bug fixes

    • ๐Ÿ›  Fixed a bug where a client-side response is not closed quickly enough for a certain case. #2590
    • ๐Ÿ›  Fixed a bug where Sampler.random(0.01) never samples. #2592
    • ๐ŸŒฒ The Logger returned by RequestContext.makeContextAware(Logger) now pushes the context whenever logging a message, so that RequestContextExporter can retrieve the current context. #2587

    ๐Ÿฑ ๐Ÿ™‡ Thank you

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

  • v0.98.5 Changes

    March 14, 2020

    ๐Ÿฑ ๐Ÿ’ฎ 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 use UUID as a parameter in your annotated service. #2573 #2577

      public class MyAnnotatedService { @Get("/user/by-uuid/{uuid}") public User findUserByUuid(@Param UUID uuid) { ... } }

    • ๐ŸŒฒ LogLevel.OFF and LogLevel.log(Logger, String, Object...) have been added. #2532

    ๐Ÿ“ˆ Improvements

    • ClosedSessionException and ClosedStreamException now have a specific cause or message to help you understand why a connection or a stream has been closed. #2580
    • โš  A once-per-thread warning message will now be logged, as well as throwing an exception, when a user pushes a context incorrectly. #2583
    • 0๏ธโƒฃ Some common socket exceptions raised by annotated services are not logged anymore by default to reduce the amount of less useful log messages. #2572

    ๐Ÿ› ๏ธ Bug fixes

    • ConcurrencyLimitingClient does not fail with an 'illegal context' error under load anymore. #2579
    • RetryingClient and RetryingRpcClient handles negative System.nanoTime() values correctly now. #2584
    • ๐Ÿ›  Fixed a bug where RetryingClient and RetryingRpcClient do not complete a request when RetryStrategy or RetryStrategyWithContent throws an exception. #2581
    • EventLoopCheckingFuture and its subtypes do not warn about blocking operation anymore when they are done already. #2564

    ๐Ÿฑ โ›“ Dependencies

    • โฌ‡๏ธ Dropwizard Metrics 4.1.4 โ†’ 4.1.5
    • gRPC 1.27.2 โ†’ 1.28.0
    • Netty 4.1.46 โ†’ 4.1.47
    • RxJava 2.2.18 โ†’ 2.2.19

    ๐Ÿฑ ๐Ÿ™‡ Thank you

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

  • v0.98.4 Changes

    March 06, 2020

    ๐Ÿฑ ๐Ÿ’ฎ 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.

    ๐Ÿ› ๏ธ Bug fixes

    • โฑ HealthCheckService does not leak the event loop tasks it scheduled anymore. #2557
    • โฑ ServiceRequestContext.setRequestTimeout() and ClientRequestContext.setResponseTimeout() now schedules a timeout correctly even if no timeout was scheduled before. #2537
    • Made sure Subscriber.onError() is invoked rather than onComplete() when a StreamMessage has been aborted. #2539
    • ๐Ÿ›  Fixed specification violations in our Reactive Streams Subscriber implementations. #2533

    ๐Ÿฑ โ›“ Dependencies

    • โฌ‡๏ธ Dropwizard 1.3.19 โ†’ 1.3.20
    • โฌ‡๏ธ Dropwizard Metrics 4.1.3 โ†’ 4.1.4
    • gRPC 1.27.1 โ†’ 1.27.2
    • Jackson 2.10.2.20200130 โ†’ 2.10.3
    • Netty 4.1.45 โ†’ 4.1.46
      • netty-tcnative-boringssl-static 2.0.28 โ†’ 2.0.29
    • Jetty 9.4.26 โ†’ 9.4.27
    • Project Reactor 3.3.2 โ†’ 3.3.3
    • Retrofit 2.7.1 โ†’ 2.7.2

    ๐Ÿฑ ๐Ÿ™‡ Thank you

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

  • v0.98.3 Changes

    February 25, 2020

    ๐Ÿฑ ๐Ÿ’ฎ 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

    • RequestContextExporter and RequestContextExportingAppender for Logback can now export the current request ID into MDC. #2511

      <?xml version="1.0" encoding="UTF-8"?> <configuration> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{HH:mm:ss.SSS} %X{req.id} %msg%n</pattern> </encoder> </appender> <appender name="RCEA" class="com.linecorp.armeria.common.logback.RequestContextExportingAppender"> <appender-ref ref="CONSOLE" /> <export>req.id</export> </appender> </configuration>

    • Client-side options API (ClientOption and ClientFactoryOption) has been revamped. #2523

      • ClientOptions.get() and ClientFactoryOptions.get() never throws an exception. A default value is returned for an unspecified option. Therefore, other getter methods such as getOrElse() have been removed.

    ๐Ÿ“ˆ Improvements

    • You'll now get a ClosedStreamException instead of Http2Exception when your HTTP/2 connection was closed due to an RST_STREAM frame. #2508

    ๐Ÿ› ๏ธ Bug fixes

    • *ClientBuilder.options(ClientOptions) now overrides only the specified options. #2516

      ClientFactory factory = ClientFactory.insecure();ClientOptions options = ClientOptions.builder() .responseTimeMillis(5000) .build();WebClient client = WebClient.builder("http://foo.com") .factory(factory) .options(options) .build();// This assertion does not fail anymore.assert client.options().factory() == ClientFactory.insecure();

    • ๐Ÿ›  Fixed a bug where DocService throws the java.lang.IllegalStateException: zip file closed exception while starting up. #2518 #2519

    • MetricCollectingClient does not count the request that failed initially due to a connection refused error and then succeeded after a retry as failure anymore. #2517

    • ๐Ÿ›  Fixed a bug where LoggingClient and LoggingSerivce does not push the current context when logging. #2528

    • RequestContextExporter and RequestContextExportingAppender can now export a single custom attribute into multiple MDC properties. #2521

    • RequestContextExporter and RequestContextExportingAppender does not export outdated custom attributes anymore. #2520

    • ๐Ÿ“‡ Renamed incorrect meter ID armeria.server.pendingResponses into armeria.server.pending.responses. #2506

    • The Date header is now encoded properly even when System.nanoTime() returns a negative value. #2530

    • GrpcStatus.fromThrowable() now treats ContentTooLargeException as RESOURCE_EXHAUSTED rather than INTERNAL_ERROR. #2523

    ๐Ÿฑ โ˜ข๏ธ Breaking changes

    • ๐Ÿšš ClientOptions.getOrElse() and getOrNull() have been removed. get() always returns a non-null value now. #2523
    • ClientOptions.asMap() and ClientFactoryOptions.asMap() now return only the options overridden by a user. You can get the Set of available options using ClientOptions.allOptions() or ClientFactoryOptions.allOptions(): #2516 #2523

      ClientOptions myOptions = ...;Map<ClientOption<?>, Object> map = new IdentityHashMap<>();for (ClientOption o : ClientOptions.allOptions()) { map.put(myOptions.get(o)); }

    • ClientOptions.valueOf() and ClientFactoryOptions.valueOf() have been split into two methods: define() and of() #2523.

      • Use of() if you're getting an existing option.
      • Use define() if you're defining a new option.
    • ๐Ÿš€ You might need to adjust your monitoring system if you were watching armeria.server.pendingResponses, which has been renamed to armeria.server.pending.responses in this release. #2506

    ๐Ÿฑ โ›“ Dependencies

    • โฌ‡๏ธ Dropwizard 1.3.18 โ†’ 1.3.19
    • โฌ‡๏ธ Dropwizard Metrics 4.1.2 โ†’ 4.1.3
    • java-jwt 3.9.0 โ†’ 3.10.0
    • RxJava 2.2.17 โ†’ 2.2.18
    • Shaded dependencies
      • Reflections 0.9.12 โ†’ 0.9.11 (Downgrade)

    ๐Ÿฑ ๐Ÿ™‡ Thank you

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

  • v0.98.2 Changes

    February 18, 2020

    ๐Ÿฑ ๐Ÿ’ฎ 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 specify any client options when building with ArmeriaRetrofitBuilder, because it extends AbstractClientOptionsBuilder. #2483

      Retrofit retrofit = ArmeriaRetrofit.builder("http://example.com") .factory(...) .decorator(...) .responseTimeout(...) .build();

    ๐Ÿ“ˆ Improvements

    • โœ… FallthroughException is not a part of the internal API anymore, so you can refer to it when testing your annotation service extensions. #2495

    ๐Ÿ› ๏ธ Bug fixes

    • Armeria clients will not violate the MAX_CONCURRENT_STREAMS setting enforced by an HTTP/2 server anymore. #2256 #2374
    • ๐Ÿ›  Fixed a regression where Server fails to read PKCS#5 a private key since 0.98.0 #2485
    • RequestContextExporter does not export an entry whose value is null anymore. #2492
    • ๐Ÿ“„ DocService does not fail with a ReflectionsException on startup anymore. #2491 #2494
    • ๐Ÿ›  Fixed some potential buffer leaks. #2497 #2498 #2499 #2500

    ๐Ÿฑ โ›“ Dependencies

    • Brave 5.9.4 โ†’ 5.9.5
    • gRPC 1.27.0 โ†’ 1.27.1
      • Protobuf 3.11.3 โ†’ 3.11.4
    • Micrometer 1.3.3 โ†’ 1.3.5
    • Tomcat 9.0.30 โ†’ 9.0.31, 8.5.50 โ†’ 8.5.51
    • ZooKeeper 3.5.6 โ†’ 3.5.7
    • Shaded dependencies:
      • fastutil 8.3.0 โ†’ 8.3.1

    ๐Ÿฑ ๐Ÿ™‡ Thank you

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

  • v0.98.1

    February 10, 2020