0.99.0 release notes
30th March 2020
🌟 New features
- You can now make your client connect via a SOCKS 4, SOCKS 5 or HTTP CONNECT proxy server. #2321 #2496
ClientFactory.builder() .proxyConfig(ProxyConfig.socks4(socksProxyServer.address())) .build();
- You can now configure to send
PING
on idle HTTP/2 connections. #1263 #2409ClientFactory.builder() .http2PingTimeoutMillis(3000) .build();
- You can now make an alias for the pre-defined MDC key when using
RequestContextExportingAppender
. #2512 #2531<export>request_id=req.id</export> <!-- request_id is an alias for the built-in property. --> <export>my_foo_bar=attr:com.example.Foo#ATTR_BAR</export> <!-- my_foo_bar is an alias. -->
- Please check out http://armeria.dev/docs/advanced-logging#customizing-mdc-keys for more information.
- You can now set an example path and queries for
DocService
. #2195 #2546 - You can now customize the default log name of a service. #2626
sb.route().addRoute(...).defaultLogName("name").build(service);
- You can now access a parent log from a child log using
RequestLogAccess.parent()
. #2599 - gRPC client now supports gRPC
CallCredentials
. #2619 #2622 - You can now send customized responses from
ThrottlingService
usingThrottlingAcceptHandler
andThrottlingRejectHandler
. #2482 #2503 - You can now use advanced throttling algorithm based on Token-Bucket rate-limiting and Bucket4j library. #2566
- You can now create your own storage to store
RequestContext
. #2514 #2610// You should implement `RequestContextStorageProvider` and use SPI to return the `RequestContextStorage`. public class CustomizedStorageProvider implements RequestContextStorageProvider { @Override public RequestContextStorage newStorage() { return new CustomizedStorage(); } }
📈 Improvements
You can now set timeout using
TimeoutMode.
#2535 #2571// Before ctx.extendResponseTimeoutMillis(10000); ctx.setResponseTimeoutAfterMillis(10000); // After ctx.setResponseTimeoutMillis(TimeoutMode.EXTEND, 10000); ctx.setResponseTimeoutMillis(TimeoutMode.SET_FROM_NOW, 10000);
set(Request|Response)Timeout
is now undeprecated.
🛠️ Bug fixes
- DNS resolution is timed out after
queryTimeoutMillis
. #2623 - You can now return
Single<HttpResponse>
orMaybe<HttpResponse>
in an annotated service. #2624 - You can now register and monitor Reactor
Scheduler
with Prometheus in Armeria Server. #2612 RequestLog.name
and some other properties are copied to the child log inRetyringClient
. #2551 #2560- You no longer see
ClosedStreamException
due to the stream creation reversal. #2597 IllegalStateException
is not raised anymore while building a WebFlux response. #2613- Annotated service's log name is always set. #2626
🏚️ Deprecations
- Deprecated
ZooKeeperUpdatingListener.nodeValueCodec()
in favor ofZooKeeperUpdatingListener.codec()
. #2552
☢️ Breaking changes
Most of the deprecated APIs are gone. #2543
- If you have trouble finding APIs to replace, please upgrade to 0.98.7 first and use your IDE's advanced feature to search deprecated APIs. Then, you can easily upgrade to 0.99.0.
armeria-dropwizard
is now for Dropwizard 2. If you want to use Dropwizard1.3.x
, usearmeria-dropwizard1
. #2556armeria-rxjava
is now for RxJava 3. If you want to use RxJava 2, usearmeria-rxjava2
. #2378 #2501ClientBuilder.path(path)
is now gone. #2525 #2538- If you want to specify the path other than
/
, you should specify it when creatingClientBuilder
.// before Clients.builer(SessionProtocol.HTTP, Endpoint.of("127.0.0.1")) .path("/foo"); // after Clients.builer(SessionProtocol.HTTP, Endpoint.of("127.0.0.1"), "/foo");
- If you want to specify the path other than
ClosedSessionException
now extendsClosedStreamException
. #2596 #2616AuthSuccessHandler<HttpRequest, HttpResponse>
andAuthFailureHandler<HttpRequest, HttpResponse>
now don't have type parameters.The meter name
armeriaBlockingTaskExecutor
is nowblockingTaskExecutor
with the prefixarmeria.executor
.RequestContext.set*TimeoutAfter*()
orextend*Timeout*()
methods have been removed. Callset*Timeout*()
with aTimeoutMode
specified instead.
⛓ Dependencies
- Brave 5.9.5 -> 5.10.2
- bucket4j-core 4.10.0
- Curator 4.2.0 -> 4.3.0
- java-jwt 3.10.0 -> 3.10.1
- jetty-alpn-agent 2.0.9 -> 2.10.0
- Micrometer 1.3.5 -> 1.4.0
- Netty 4.1.37.Final -> 4.1.48.Final
- netty-tcnative-boringssl-static 2.0.29.Final -> 2.0.30.Final
- Opensaml 3.4.3 -> 3.4.5
- Reactor 3.3.3.RELEASE -> 3.3.4.RELEASE
- Retrofit 2.7.2 -> 2.8.0
- RxJava 3.0.0 -> 3.0.1
- Spring Boot 2.2.4 -> 2.2.5
- Spring2.1 2.1.12.RELEASE -> 2.1.13.RELEASE
- Tomcat 9.0.31 -> 9.0.33
- Tomcat8.5 8.5.51 -> 8.5.53
- Zookeeper 3.5.7 -> 3.6.0