Finagle v6.41.0 Release Notes
-
๐ New Features
* finagle-core: Added stat "pending_requests/rejected" for the number of requests rejected by `c.t.f.PendingRequestFilter`. ``RB_ID=898184`` ๐ฅ Breaking API Changes
๐ finagle-core: Remove the
Filter#andThen(Req1 => Future[Rep1]): Req2 => Future[Rep2]
method. This overload is no longer usable in scala 2.12, becauseService
is a SAM. Because of the order in which SAMs get resolved, literal functions in scala will get confused about which method they should use. Instead of passing a Function directly, wrap the Function with a Service.mk.RB_ID=896524
๐ finagle-core:
CancelledWriteException
was removed as it is no longer used.RB_ID=896757
finagle-core: The structure of Context and its subtypes, LocalContext and MarshalledContext, have been significantly refined, eliminating StackOverflowErrors and memory leaks while also refining the API. The
letClear()
method, which cleared all items from the context, has been renamed toletClearAll
to avoid confusion with otherletClear
methods which clear individual keys. The bulkletClear
method now takes a collection ofKey[_]
s, making it usable from Java. Bulklet
operations can now be done using a collection ofKeyValuePair
s.RB_ID=896663
๐ finagle-kestrel: The
codec
method has been removed from the kestrel MultiReader object. Configure a ClientBuilder protocol using the default thrift StackClient, Thrift.client, via thestack
method of ClientBuilder.RB_ID=894297
๐ finagle-memcached: Remove deprecated
cluster
method onc.t.f.memcached.KetamaClientBuilder
.RB_ID=898365
โ Runtime Behavior Changes
* ๐ finagle-core: `c.t.f.builder.ClientBuilder` remove deprecated methods. The same functionality is available through the Stack-based APIs or `ClientBuilder.configured`, with the exception of `channelFactory`, which has no analog because it exposes a Netty 3 API. ``RB_ID=893147`` - `channelFactory` - `expHostConnectionBufferSize` - `hostConnectionIdleTime` - `hostConnectionMaxIdleTime` - `hostConnectionMaxLifeTime` - `hostConnectionMaxWaiters` - `readerIdleTimeout` - `recvBufferSize` - `sendBufferSize` - `writerIdleTimeout` * 0๏ธโฃ finagle-core: Lower logging level used in `c.t.f.util.DefaultMonitor` for expected exceptions: `CancelledRequestException`, `TooManyWaitersException`, `CancelledConnectionException`, `FailedFastException`. ``RB_ID=895702`` * ๐ finagle-core: `c.t.f.util.DefaultMonitor` now logs most exceptions at `WARNING` level instead of `FATAL`. ``RB_ID=895983`` * 0๏ธโฃ finagle-core: `c.t.f.util.DefaultMonitor` works harder to find the appropriate log level by walking the exception's causes to find `c.t.util.TimeoutExceptions` and `c.t.logging.HasLogLevel`. ``RB_ID=896695`` * finagle-core: The `c.t.f.service.Retries` module will now flag a response as `NonRetryable` if either the retry limit is reached or the retry budget is exhausted. ``RB_ID=897800`` * finagle-mdns: Uses only one implementation backed by jmdns instead of trying to use a platform specific implementation of DDNS if present. ``RB_ID=897917`` * finagle-netty4: Client initiated TLS/SSL session renegotiations are now rejected by default. ``RB_ID=895871`` * finagle-netty4: `ChannelTransport` no longer interrupts netty write operations in order to temporarily unblock rollout of netty4. This reverts netty4 back to netty3 semantics for writes. ``RB_ID=896757`` ๐ Deprecations ~~~~~~~~~~~~ * ๐ finagle-kestrel: Deprecate the `codec` method on `c.t.f.kestrel.MultiReaderMemcache`. Use `.stack(Kestrel.client)` on the configured `c.t.f.builder.ClientBuilder` instead. ``RB_ID=895989``