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
PINGon 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
ThrottlingServiceusingThrottlingAcceptHandlerandThrottlingRejectHandler. #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)Timeoutis 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
Schedulerwith Prometheus in Armeria Server. #2612 RequestLog.nameand some other properties are copied to the child log inRetyringClient. #2551 #2560- You no longer see
ClosedStreamExceptiondue to the stream creation reversal. #2597 IllegalStateExceptionis 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-dropwizardis now for Dropwizard 2. If you want to use Dropwizard1.3.x, usearmeria-dropwizard1. #2556armeria-rxjavais 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
ClosedSessionExceptionnow extendsClosedStreamException. #2596 #2616AuthSuccessHandler<HttpRequest, HttpResponse>andAuthFailureHandler<HttpRequest, HttpResponse>now don't have type parameters.The meter name
armeriaBlockingTaskExecutoris nowblockingTaskExecutorwith the prefixarmeria.executor.RequestContext.set*TimeoutAfter*()orextend*Timeout*()methods have been removed. Callset*Timeout*()with aTimeoutModespecified 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