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 theseconds
suffix forLongTaskTimer
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 withcom.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 withClientFactoryBuilder.pingIntervalMillis()
.ServerBuilder.http2PingTimeoutMillis()
has been replaced withServerBuilder.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:
- โ Added
-
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:
- The response is not encoded anymore at
-
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:
- ๐ Fixed a bug where an exception is not wrapped by
-
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()
andinetAddress()
that convert aSocketAddress
or anInetAddress
into aString
without repeating an IP address twice. #2591
๐ Improvements
RequestContext.toString()
now returns aString
that includes itsRequestId
. #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 byRequestContext.makeContextAware(Logger)
now pushes the context whenever logging a message, so thatRequestContextExporter
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:
- โ Added
-
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 #2577public class MyAnnotatedService { @Get("/user/by-uuid/{uuid}") public User findUserByUuid(@Param UUID uuid) { ... } }
๐ฒ
LogLevel.OFF
andLogLevel.log(Logger, String, Object...)
have been added. #2532
๐ Improvements
ClosedSessionException
andClosedStreamException
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. #2579RetryingClient
andRetryingRpcClient
handles negativeSystem.nanoTime()
values correctly now. #2584- ๐ Fixed a bug where
RetryingClient
andRetryingRpcClient
do not complete a request whenRetryStrategy
orRetryStrategyWithContent
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()
andClientRequestContext.setResponseTimeout()
now schedules a timeout correctly even if no timeout was scheduled before. #2537 - Made sure
Subscriber.onError()
is invoked rather thanonComplete()
when aStreamMessage
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
andRequestContextExportingAppender
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
andClientFactoryOption
) has been revamped. #2523ClientOptions.get()
andClientFactoryOptions.get()
never throws an exception. A default value is returned for an unspecified option. Therefore, other getter methods such asgetOrElse()
have been removed.
๐ Improvements
- You'll now get a
ClosedStreamException
instead ofHttp2Exception
when your HTTP/2 connection was closed due to anRST_STREAM
frame. #2508
๐ ๏ธ Bug fixes
*ClientBuilder.options(ClientOptions)
now overrides only the specified options. #2516ClientFactory 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 thejava.lang.IllegalStateException: zip file closed
exception while starting up. #2518 #2519MetricCollectingClient
does not count the request that failed initially due to aconnection refused
error and then succeeded after a retry as failure anymore. #2517๐ Fixed a bug where
LoggingClient
andLoggingSerivce
does not push the current context when logging. #2528RequestContextExporter
andRequestContextExportingAppender
can now export a single custom attribute into multiple MDC properties. #2521RequestContextExporter
andRequestContextExportingAppender
does not export outdated custom attributes anymore. #2520๐ Renamed incorrect meter ID
armeria.server.pendingResponses
intoarmeria.server.pending.responses
. #2506The
Date
header is now encoded properly even whenSystem.nanoTime()
returns a negative value. #2530GrpcStatus.fromThrowable()
now treatsContentTooLargeException
asRESOURCE_EXHAUSTED
rather thanINTERNAL_ERROR
. #2523
๐ฑ โข๏ธ Breaking changes
- ๐
ClientOptions.getOrElse()
andgetOrNull()
have been removed.get()
always returns a non-null value now. #2523 ClientOptions.asMap()
andClientFactoryOptions.asMap()
now return only the options overridden by a user. You can get theSet
of available options usingClientOptions.allOptions()
orClientFactoryOptions.allOptions()
: #2516 #2523ClientOptions myOptions = ...;Map<ClientOption<?>, Object> map = new IdentityHashMap<>();for (ClientOption o : ClientOptions.allOptions()) { map.put(myOptions.get(o)); }
ClientOptions.valueOf()
andClientFactoryOptions.valueOf()
have been split into two methods:define()
andof()
#2523.- Use
of()
if you're getting an existing option. - Use
define()
if you're defining a new option.
- Use
๐ You might need to adjust your monitoring system if you were watching
armeria.server.pendingResponses
, which has been renamed toarmeria.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 extendsAbstractClientOptionsBuilder
. #2483Retrofit 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 isnull
anymore. #2492- ๐
DocService
does not fail with aReflectionsException
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