Finagle v6.44.0 Release Notes
-
๐ New Features
* finagle-thriftmux: Allow ThriftMux.Servers to be filtered, also add `withStack` method to server side as well. ``RB_ID=915095`` * finagle-core: FailureAccrual is now production ready. It has been promoted out of experimental and moved from com.twitter.finagle.service.exp to com.twitter.finagle.liveness. ``RB_ID=914662`` * finagle-core: SSL/TLS APIs have been changed to include methods which work based on an SSL configuration, and an SSL configuration and an SSL engine factory. ``RB_ID=911209`` * finagle-core: LoadBalancerFactory now exposes a mechanism to order the collection of endpoints passed to the balancer implementations. This allows a consistent ordering of endpoints across process boundaries. ``RB_ID=910372`` * finagle-core: Introduce `c.t.f.client.EndpointerStackClient`, a mechanism for making clients that don't need a transporter and dispatcher. This simplifies making non-netty clients. ``RB_ID=912889`` * ๐ง finagle-http2: Add support for liveness detection via pings. It can be configured the same way as it is in mux. ``RB_ID=913341`` * finagle-toggle: Standard toggles now track the last value produced from `apply`. These values are visible via TwitterServer's /admin/toggles endpoint. ``RB_ID=913925`` ๐ฅ Breaking API Changes
๐ finagle-mysql: Support for Netty 3 has been removed, making Netty 4 the only transport implementation.
RB_ID=914661
finagle-core: com.twitter.finagle.service.exp.FailureAccrualPolicy has been promoted to com.twitter.finagle.liveness.FailureAccrualPolicy
๐ finagle-commons-stats: Remove finagle-commons-stats, which was a compatibility layer for a deprecated stats library. Please move to finagle-stats instead.
RB_ID=910964
finagle-core: SSL/TLS stack params for Finagle running Netty 4 have changed.
- The
TlsConfig
param inTransport
has been removed. - For client engines, the same two parameters as Finagle running Netty 3 are now used:
ClientSsl
inTransport
, which is used for configuring a clientEngine
's hostname, key credentials, trust credentials, cipher suites, protocols, and application protocols.SslClientEngineFactory
inSslClientEngineFactory
, which determines how theEngine
is created based off of anAddress
and anSslClientConfiguration
.- For server engines, the same two parameters as Finagle running Netty 3 are now used:
ServerSsl
inTransport
, which is used for configuring a serverEngine
's key credentials, trust credentials, cipher suites, protocols, application protocols, and where the server supports or requires client authentication.SslServerEngineFactory
inSslServerEngineFactory
, which determines how theEngine
is created based off of anSslServerConfiguration
.- Note: Not all client and server configurations work with all engine factories. Each engine factory should document what is not supported by that specific engine factory.
- Note: By default, Finagle on Netty 4 will use the
Netty4ClientEngineFactory
andNetty4ServerEngineFactory
respectively.
- The
RB_ID=910500
finagle-core: Change the API to LoadBalancerFactory to a more concrete
Activity[IndexedSeq[ServiceFactory[Req, Rep]]]
since the majority of the load balancer implementations don't need the properties of a Set but instead need ordering guarantees and efficient random access.RB_ID=910372
finagle-core: Balancers.aperture now has a new parameter
useDeterministicOrdering
, which is set to false by default. This feature is still experimental and under construction. This will break the Java API and require the additional param to be passed in explicitly.RB_ID=911541
finagle-core: The logic for tracking sessions that was in StdStackServer has been lifted into a new template, ListeningStackServer where implementations define the creation of a ListeningServer from a ServiceFactory, SocketAddress, and a function that tracks accepted sessions.
RB_ID=914124
finagle-core: Change the AddressOrdering param to no longer take a StatsReceiver, since orderings were simplified and are no longer composite.
RB_ID=914113
๐ finagle-core: Remove deprecated methods on
c.t.f.Client
:- newClient(dest: Group[SocketAddress])
- newService(dest: Group[SocketAddress])
RB_ID=914787
finagle-core:
c.t.f.ListeningServer
no longer extendsc.t.f.Group
. Usec.t.f.ListeningServer.boundAddress
to extract the address from the server.RB_ID=914693
๐ finagle-core: Remove deprecated
c.t.f.group.StabilizingGroup
. Usec.t.f.addr.StabilizingAddr
instead.RB_ID=914823
finagle-core: Constructors for
c.t.f.ChannelException
and its subclasses now have overloads that takeOption
\s instead of allowingnull
. While the existing constructors remain, and forward to the new ones, this can still cause compilation failures when the arguments are ambiguous.RB_ID=914800
๐ finagle-core: Remove MimimumSetCluster since it has been deperecated for quite some time. Instead, use finagle logical destinations via
Name
s.RB_ID=914849
๐ finagle-core: Remove deprecated
c.t.f.Resolver.resolve
. Usec.t.f.Resolver.bind
instead. Remove deprecatedc.t.f.BaseResolver.resolve
. Usec.t.f.Resolver.eval
instead.RB_ID=914986
finagle-http:
c.t.f.http.Http
codec has disappeared as part of Netty 4 migration. Usec.t.f.Http.client
orc.t.f.Http.server
stacks instead.RB_ID=912427
๐ finagle-kestrel: Remove
c.t.f.kestrel.param.KestrelImpl.
Kestrel clients and servers now use Netty 4 and cannot be configured for Netty 3.RB_ID=911031
๐ finagle-memcached: Remove
c.t.f.memcached.param.MemcachedImpl.
Memcached clients and servers now use Netty 4 and cannot be configured for Netty 3.RB_ID=911031
๐ finagle-kestrel: Remove commands that are not supported by the client:
com.twitter.finagle.kestrel.protocol.DumpConfig
com.twitter.finagle.kestrel.protocol.DumpStats
com.twitter.finagle.kestrel.protocol.FlushAll
com.twitter.finagle.kestrel.protocol.Reload
com.twitter.finagle.kestrel.protocol.ShutDown
com.twitter.finagle.kestrel.protocol.Stats
com.twitter.finagle.kestrel.protocol.Version
RB_ID=911206
๐ finagle-memcached: Remove deprecated
c.t.f.memcached.KetamaClientBuilder
. Usec.t.f.Memcached.client
to create a Memcached client.RB_ID=907352
๐ finagle-memcached: Remove deprecated
c.t.f.memcached.replication.ReplicationClient
. Usec.t.f.memcached.replication.BaseReplicationClient
with clients created usingc.t.f.Memcached.client
.RB_ID=907352
๐ finagle-memcached: Remove deprecated methods on
c.t.f.memcached.Client
:apply(name: Name)
apply(host: String)
Use
c.t.f.Memcached.client
to create a Memcached client.RB_ID=908442
๐ finagle-memcached: Remove deprecated
c.t.f.memcached.protocol.text.Memcached
object. Usec.t.f.Memcached.client
to create Memcached clients.RB_ID=908442
๐ finagle-memcached: Remove deprecated
c.t.f.memcached.Server
class. Usec.t.f.memcached.integration.TestMemcachedServer
for a quick test server.RB_ID=914827
โ Remove deprecated
c.t.f.memcached.PartitionedClient
object. Usec.t.f.memcached.CacheNodeGroup.apply
instead ofc.t.f.memcached.PartitionedClient.parseHostWeights
.RB_ID=914827
โ Remove deprecated
c.t.f.memcached.util.ParserUtils.DIGITS
. Use "\d+$" instead. Remove deprecatedc.t.f.memcached.util.ParserUtils.DigitsPattern
. Use Pattern.compile(\d+$) instead.RB_ID=914827
๐ finagle-memcached: Remove old
c.t.f.memcached.replicated.BaseReplicationClient
andc.t.f.memcached.migration.MigrationClient
, and mostc.t.f.memcached.CachePoolCluster
methods.RB_ID=910986
๐ finagle-memcached: Remove old
c.t.f.memcached.migration.DarkRead
, andc.t.f.memcached.migration.DarkWrite
.RB_ID=911367
๐ finagle-memcached: Remove
c.t.f.memcached.CachePoolConfig
.RB_ID=914623
๐ finagle-mux: Netty 3 implementation of Mux is removed. Default is Netty 4.
RB_ID=914239
finagle-netty4:
DirectToHeapInboundHandler
was renamed toAnyToHeapInboundHandler
and now copies any inbound buffer (not just directs) on heap.RB_ID=913984
๐ finagle-thrift, finagle-thriftmux: Remove rich client/server support for prior versions of Scrooge generated code.
RB_ID=911515
finagle-core:
c.t.f.client.Transporter
no longer has a close method, which was introduced in 6.43.0. It was sort of a hack, and we saw the opportunity to do it properly.RB_ID=912889
๐ finagle-core, finagle-mux: Move FailureDetector from
c.t.f.mux
toc.t.f.liveness
. This also means that thesessionFailureDetector
flag is nowc.t.f.liveness.sessionFailureDetector
.RB_ID=912337
๐ Bug Fixes
* ๐ฒ finagle-exp: `DarkTrafficFilter` now respects the log level when `HasLogLevel`, and otherwise defaults the level to `warning` instead of `error`. ``RB_ID=914805`` * ๐ finagle-netty4: Fixed connection stall on unsuccessful proxy handshakes in Finagle clients configured with HTTP proxy (`Transporter.HttpProxyTo`). ``RB_ID=913358`` โ Runtime Behavior Changes
๐ฒ finagle-netty4: Finagle is no longer logging the failed proxy handshake response.
RB_ID=913358
finagle-netty4: SOCKS5 proxies are now bypassed if the connect destination is localhost. This matches Finagle's prior behavior from when Netty 3 was the default transport implementation.
RB_ID=914494
Dependencies
* ๐ finagle-memcached: Remove dependency on com.twitter.common:io-json. ``RB_ID=914623``