Changelog History
Page 1
-
v22.7.0 Changes
- finagle-thrift: Changing visibility of InputBuffer and OutputBuffer from [finagle] to [twitter].
PHAB_ID=D938475
๐ New Features
* ๐ง finagle-core: Introduce panic mode in load balancers. Configure the threshold for panic mode to start using `withLoadBalancer.panicMode`. ``PHAB_ID=D879034`` * finagle-core: Provide `ServerParamsInjector`, a class that will be service-loaded at run-time by Finagle servers, and will allow generic configuration of all sets of parameters. ``PHAB_ID=D897484`` * finagle-memcached: Add new function, `newLoadBalancedTwemcacheClient`, to create a TwemcacheClient that doesn't use a partitioning service. ``PHAB_ID=D911789` ๐ Bug Fixes ~~~~~~~~~ * finagle-core: fix issue where `Trace.traceLocal` and `Trace.traceLocalFuture` nested traces mistakenly annotate to the parent span. ``PHAB_ID=D912760`` ๐ฅ Breaking API Changes
๐ finagle-core: Remove unused
DeterministicAperture
along with pathways to use weight-unaware aperture loadbalancers.PHAB_ID=D933405
finagle-base-http: Methods for getting/setting
Accept
,Authorization
,Host
,Referer
,User-Agent
,X-Forwarded-For
headers were moved fromc.t.f.http.Message
class toc.t.f.http.Request
as these headers are only valid on requests and not on responses. Methods for getting/settingLocation
,Retry-After
,Server
, andWWW-Authenticate
headers were moved fromc.t.f.http.Message
class toc.t.f.http.Response
as they are only valid on responses and not on requests.โก๏ธ finagle-core: Update OffloadFilter.Param API to encourage recommended construction.
PHAB_ID=D882210
finagle-core:
Trace.recordLocalSpan
isprivate[this]
and no longerprotected
.PHAB_ID=D912760
finagle-core: "ServiceFactory#status" is abstract and requires implementation in the inherited classes.
PHAB_ID=D933288
finagle-core:
StackTransformer
has been renamed toServerStackTransformer
and the symmetric client equivalent (ClientStackTransformer
) has been added. For those using the olderStackTransformer
API you will both need to change the code (fix the extends) and rename the META-INF file fromresources/META-INF/services/com.twitter.finagle.StackTransformer
toresources/META-INF/services/com.twitter.finagle.ServerStackTransformer
in order to have your transformer continue to service-load correctly.PHAB_ID=D937634
โ Runtime Behavior Changes
* 0๏ธโฃ finagle-core: Changed the default implementation for random and deterministic aperture load balancers to weighted aperture. ``PHAB_ID=D867878`` * finagle-partitioning: ThriftCustomPartitioningServices now allow fanning out the same request to multiple partitions. ``PHAB_ID=D882370`` * finagle-core: Rename the counter metric `loadbalancer/max_effort_exhausted` to `loadbalancer/panicked`. ``PHAB_ID=D881529`` * โฌ๏ธ finagle: Upgrade to Netty 4.1.76.Final and netty-tcnative 2.0.51.Final. ``PHAB_ID=D886019`` * โก๏ธ finagle: Update Jackson library to version 2.13.3 ``PHAB_ID=D906005`` * finagle: Bump version of lz4-java to 1.8.0. ``PHAB_ID=D905411`` * โฌ๏ธ finagle: Upgrade to Netty 4.1.78.Final and netty-tcnative 2.0.53.Final to support tls tracing for finagle in [Pixie](https://pixie.dev/). The Pixie changes aren't complete yet, but upgrading netty is a prerequisite for that. ``PHAB_ID=D916996```
- finagle-thrift: Changing visibility of InputBuffer and OutputBuffer from [finagle] to [twitter].
-
v22.4.0 Changes
๐ Bug Fixes
* finagle-integration: we discovered that we had a dead code in MuxClientSession. Let's remove Timer as a parameter in MuxClientSession since it's a dead code. ``PHAB_ID=D869538``
-
v22.3.0 Changes
๐ฅ Breaking API Changes
* ๐ finagle-core: Removed the stack param `WhenNoNodesOpenParam` from LoadBalancerFactory. Removed NoNodesOpenServiceFactory and NoNodesOpenException. When the majority of nodes are busy or closed (approx 60%), the load balancer will probabilistically fail open and pick a node at random. ``PHAB_ID=D843176`` โ Runtime Behavior Changes
- finagle: Bump version of Jackson to 2.13.2.
PHAB_ID=D848592
๐ Bug Fixes
* finagle-integration: we discovered that we had a dead code in MuxClientSession. Let's remove Timer as a parameter in MuxClientSession since it's a dead code. ``PHAB_ID=D869538``
- finagle: Bump version of Jackson to 2.13.2.
-
v22.2.0 Changes
๐ New Features
* ๐ฒ finagle-logging: Introduced finagle-logging, a new module for SLF4J-integrated filters. ``PHAB_ID=D813291`` * ๐ฒ finagle-logging: Introduced SlowTracesFilter, which observes your requests and logs the slowest ones that are also sampled for tracing. ``PHAB_ID=D813291`` * ๐ง finagle-core: Introduced MinSendBackupAfterMs to the stack param Configured in BackupRequestFilter and propagated changes to MethodBuilder by adding new versions of idempotent function. When traffic load is low, this is useful to increase the delay when backup requests are sent and prevent the client from sending unnecessary backup requests. ``PHAB_ID=D825503`` * finagle-core: Added a new annotation `clnt/has_dark_request` in tracing and Finagle Local context. The new annotation can be used to indicate whether or not the request has a span that is sent to dark service. ``PHAB_ID=D825317`` ๐ Bug Fixes ~~~~~~~~~~ * finagle-netty4-http: On a Request, adding multiple cookies with the same name to a CookieMap preserves all of them. Only cookies on Responses are deduplicated. Previously, adding a Request cookie with the same name would overwrite the old value with the new value. ``PHAB_ID=D801466`` * ๐ finagle-postgres: Fixed a bug where a single framer instance was shared across all connections to a host when using TLS. ``PHAB_ID=D768581`` * ๐ finagle-core: Fixed a bug where `InetResolver` was leaking memory while resolving non-existing address, even if no one is still asking for it. ``PHAB_ID=D771608`` ๐ฅ Breaking API Changes
finagle-core: Changed the
shouldInvoke
parameter in methodserviceConcurrently
andsendDarkRequest
in AbstractDarkRequestFilter to be a Boolean instead of a function of (Req => Boolean).PHAB_ID=D825317
finagle-core: Renamed the existing
clnt/dark_request
toclnt/is_dark_request
in c.t.finagle.filter.DarkTrafficFilterPHAB_ID=D825317
โ Runtime Behavior Changes
* finagle: Bump version of Caffeine to 2.9.3. ``PHAB_ID=D815761`` * โฌ๏ธ finagle: Upgrade to Netty 4.1.73.Final and netty-tcnative 2.0.46.Final.``PHAB_ID=D788382`` * ๐ป finagle-core: in TimeoutFilter, only transform a timeout exception caused by TimeoutFilter. This also changes the type of exception raised by the TimeoutFilter from a java.util.concurrent.TimeoutException to a com.twitter.finagle.RequestTimeoutException. ``PHAB_ID=D814094`` * finagle-mux: Exceptions raised when Mux negotiation has failed have been moved to a `Debug` log level as the stack trace is generally long and not necessarily helpful. The logged message now includes the remote address and that is logged at both the `Debug` level (with the exception and stack trace) and `Warning` level (without). ``PHAB_ID=D821661`` * ๐ finagle-core: `c.t.f.ssl.SslConfigurations.initializeSslContext` now creates an engine which includes TLSv1.3 as a supported protocol. ``PHAB_ID=D814211`` * finagle-netty4: `c.t.f.n.ssl.client.Netty4ClientSslConfigurations.createClientContext` and `c.t.f.n.ssl.server.Netty4ServerSslConfigurations.createServerContext` now create contexts using the provided cipher suites. ``PHAB_ID=D732258``
-
v22.1.0 Changes
โ Runtime Behavior Changes
* finagle: Bump version of Jackson to 2.13.1. ``PHAB_ID=D808049``
-
v21.12.0 Changes
๐ Deprecations
* ๐ finagle-zipkin-core: `c.t.f.zipkin.core.Sampler.DefaultSampleRate` is deprecated in favor of `c.t.f.zipkin.core.DefaultSampler.sampleRate`. ``PHAB_ID=D795303`` ๐ Bug Fixes ~~~~~~~~~~ * finagle-zipkin-core: `c.t.f.zipkin.core.Sampler` would sample at 1/10,000 rate when configured with a lower (but non-zero) rate. It can now sample at rates as low as 1/16,777,216. ``PHAB_ID=D792693`` โ Runtime Behavior Changes
- finagle-zipkin-scribe:
c.t.f.zipkin.thrift.ZipkinTracer
usesc.t.f.zipkin.core.DefaultSampler.sampleRate
as the default sample rate instead of deprecatedc.t.f.zipkin.core.Sampler.DefaultSampleRate
. This allows it to correctly observe user-configured overrides to the default sample rate. When aZipkinTracer
is constructed with default parameters and there are no user-configured overrides, the behavior is unchanged.PHAB_ID=D795303
- finagle-zipkin-scribe:
-
v21.11.0 Changes
- ๐ฆ finagle-base-http: Promote several classes out of
exp
experimental package:c.t.f.http.{GenStreamingSerialServerDispatcher, IdentityStreamTransport, StreamTransport}
along with internal support classes.PHAB_ID=D782933
๐ New Features
* finagle-memcached: Add public object `c.t.f.memcached.KeyValidation` with a `validKey` method to allow validation of keys before passing them to various methods where invalid ones will cause exceptions to be thrown. ``PHAB_ID=D782660`` ๐ฅ Breaking API Changes
๐ finagle-core: Remove
c.t.f.loadbalancer.Balancer.maxEffort
. Remove themaxEffort
argument fromBalancers.{p2c, p2cPeakEwma, aperture, aperturePeakEwmaUse, roundRobin}
.PHAB_ID=D772863
๐ finagle-core:
c.t.f.tracing.ClientRequestTracingFilter
has been removed. Record relevant tracing information in your service or client directly.PHAB_ID=D777298
๐ finagle: Remove
com.twitter.finagle.Group
, and other rarely used and deprecated pieces that depend on itcom.twitter.finagle.memcached.TwitterCacheResolver
,com.twitter.finagle.memcached.CacheNodeGroup
,com.twitter.finagle.memcached.RubyMemCacheClient
, andcom.twitter.finagle.memcached.PHPMemCacheClient
. Instead ofGroup
, please useVar[Set[T]]
orActivity[Set[T]]
directly instead.PHAB_ID=D776745
โ Runtime Behavior Changes
* โก๏ธ finagle: Update Caffeine cache library to version 2.9.2 ``PHAB_ID=D771893`` * ๐ finagle-netty4: The current SOCKS and HTTP proxies support going through an HTTP proxy first, and then a SOCKS proxy. It seems more common to do the other way around, so we're going to instead support going through a SOCKS proxy and then an HTTP proxy, and drop support for the reverse. ``PHAB_ID=D713485``
- ๐ฆ finagle-base-http: Promote several classes out of
-
v21.10.0 Changes
๐ฅ Breaking API Changes
* ๐ finagle-core: `c.t.f.loadbalancer.distributor.AddressedFactory` has been removed. Use `c.t.f.loadbalancer.EndpointFactory` directly instead. ``PHAB_ID=D751145`` โ Runtime Behavior Changes
- ๐ finagle-core: Moved
c.t.finagle.stats.LoadedStatsReceiver
andc.t.finagle.stats.DefaultStatsReceiver
from the finagle-core module to util-stats.PHAB_ID=D763497
- ๐ finagle-core: Moved
-
v21.9.0 Changes
๐ New Features
* finagle-core: Add method Tracing#recordCallSite to record callsite-specific annotations including code.function, code.namespace, code.filepath and code.lineno. See details at [OpenTelemetry source code attributes](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/semantic_conventions/span-general.md#source-code-attributes) ``PHAB_ID=D753929`` ๐ฅ Breaking API Changes
- ๐ finagle-thrift: Removed c.t.finagle.thrift.ThriftClient#newMethodIface and
ThriftClient#thriftService, use c.t.f.thrift.ThriftClient#methodPerEndpoint.
PHAB_ID=D747744
๐ Bug Fixes
* finagle-core/partitioning: Close balancers and their gauges when repartitioning. ``PHAB_ID=D731675`` โ Runtime Behavior Changes
โฌ๏ธ finagle: Upgrade to Netty 4.1.67.Final and netty-tcnative 2.0.40.Final.
PHAB_ID=D726343
โฌ๏ธ finagle: Downgrade to Netty 4.1.66.Final
PHAB_ID=D746041
finagle: Bump version of Jackson to 2.11.4.
PHAB_ID=D727879
finagle-core: OffloadFilter hands off work from Netty I/O thread to the offload CPU thread pool right after we enter the Finagle stack by default. Previously this could be enabled via a toggle. The
com.twitter.finagle.OffloadEarly
toggle has been removed.PHAB_ID=D733526
- ๐ finagle-thrift: Removed c.t.finagle.thrift.ThriftClient#newMethodIface and
ThriftClient#thriftService, use c.t.f.thrift.ThriftClient#methodPerEndpoint.
-
v21.8.0 Changes
๐ New Features
* ๐ finagle-mysql: introduce `newRichClient(dest: String, label: String)` method, which removes the need for extra boilerplate to convert the destination String to a `c.t.finagle.Name` when specifying both `dest` and `label` in String form. ``PHAB_ID=D706140`` * finagle-http, finagle-thriftmux: introduce client.withSni() API. Use this api to specify an SNI hostname for TLS clients. ``PHAB_ID=D712652`` * finagle-postgresql: introduce `withStatementTimeout`, `withConnectionInitializationCommands`, and `withSessionDefaults` APIs to allow configuring sessions before they're used. ``PHAB_ID=D746525`` * ๐ง finagle-core: `c.t.f.n.NameTreeFactory` now has a configuration flag to determine whether to retain weighted, unreachable branches of a `NameTree.Union`. Current behavior (retain) remains unchanged, but can now be overridden via GlobalFlag. ``PHAB_ID=D879306`` * finagle-core: introduce new GlobalFlag `com.twitter.finagle.naming.retainUneachableUnionBranches` which defaults to `true`. Setting to `false` will prune unreachable `NameTree.Union` branches. ``PHAB_ID=D879306`` โ Runtime Behavior Changes
โก๏ธ finagle: Update Caffeine cache library to version 2.9.1
PHAB_ID=D660908
โก๏ธ finagle: Update ScalaCheck to version 1.15.4
PHAB_ID=D691691
finagle-core: change ServiceClosedException to extend FailureFlags and to be universally retryable
PHAB_ID=710580
๐ finagle-http: remove the
com.twitter.finagle.http.UseH2
,com.twitter.finagle.http.UseH2CClients2
,com.twitter.finagle.http.UseH2CServers
andcom.twitter.finagle.http.UseHttp2MultiplexCodecClient
toggles. The configuration forc.t.finagle.Http.client
andc.t.finagle.Http.server
now default to using the HTTP/2 based implementation. To disable this behavior, usec.t.finagle.Http.client.withNoHttp2
andc.t.finagle.Http.server.withNoHttp2
respectively.
Alternatively, new GlobalFlag's have been introduced to modify the default behavior of clients and servers that have not been explicitly configured, where the
com.twitter.finagle.http.defaultClientProtocol
andcom.twitter.finagle.http.defaultServerProtocol
flags can be set toHTTP/1.1
to modify the default client or server configuration, respectively.PHAB_ID=D625880
`finagle-netty4: Finagle now reuses Netty "boss" (or parent) threads instead of creating a new thread per server. Netty parent threads are servicing the server acceptor, a relatively lightweight component that listens for new incoming connections before handing them out to the global worker pool.
PHAB_ID=D662116
finagle-http2: introduce optional parameter
NackRstFrameHandling
to enable or disable NACK conversion to RST_STREAM frames.PHAB_ID=D702696
finagle-thrift, finagle-thriftmux: clients may start reporting (correctly) lower success rate. Previously server exceptions not declared in IDL were erroneously considered as successes. The fgix also improves failure detection and thus nodes previously considered as healthy by failure accrual policy may be considered as unhealthy.
PHAB_ID=D698272
๐ Bug Fixes
* ๐ง finagle-core: Add `BackupRequestFilter` to client registry when configured. ``PHAB_ID=D686981`` * finagle-thrift, finagle-thriftmux: clients now treat server exceptions not declared in IDL as failures, rather than successes, and do not skip the configured response classifier for failure accrual. ``PHAB_ID=D698272``