All Versions
Latest Version
Avg Release Cycle
28 days
Latest Release

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.
    * finagle-memcached: Add new function, `newLoadBalancedTwemcacheClient`, to create a TwemcacheClient
      that doesn't use a partitioning service.
    ๐Ÿ› 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 from c.t.f.http.Message class to c.t.f.http.Request as these headers are only valid on requests and not on responses. Methods for getting/setting Location, Retry-After, Server, and WWW-Authenticate headers were moved from c.t.f.http.Message class to c.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 is private[this] and no longer protected. 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 to ServerStackTransformer and the symmetric client equivalent (ClientStackTransformer) has been added. For those using the older StackTransformer API you will both need to change the code (fix the extends) and rename the META-INF file from resources/META-INF/services/com.twitter.finagle.StackTransformer to resources/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]( The Pixie changes aren't
      complete yet, but upgrading netty is a prerequisite for that. ``PHAB_ID=D916996```
  • 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.
  • 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.
  • 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 method serviceConcurrently and sendDarkRequest in AbstractDarkRequestFilter to be a Boolean instead of a function of (Req => Boolean). PHAB_ID=D825317

    • finagle-core: Renamed the existing clnt/dark_request to clnt/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 uses c.t.f.zipkin.core.DefaultSampler.sampleRate as the default sample rate instead of deprecated c.t.f.zipkin.core.Sampler.DefaultSampleRate. This allows it to correctly observe user-configured overrides to the default sample rate. When a ZipkinTracer is constructed with default parameters and there are no user-configured overrides, the behavior is unchanged. PHAB_ID=D795303
  • 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 the maxEffort argument from Balancers.{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 it com.twitter.finagle.memcached.TwitterCacheResolver, com.twitter.finagle.memcached.CacheNodeGroup, com.twitter.finagle.memcached.RubyMemCacheClient, and com.twitter.finagle.memcached.PHPMemCacheClient. Instead of Group, please use Var[Set[T]] or Activity[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``
  • 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 and c.t.finagle.stats.DefaultStatsReceiver from the finagle-core module to util-stats. PHAB_ID=D763497
  • 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]( ``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.
    โš™ 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

  • 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. 
    * ๐Ÿ”ง 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.
    โš™ 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 and com.twitter.finagle.http.UseHttp2MultiplexCodecClient toggles. The configuration for c.t.finagle.Http.client and c.t.finagle.Http.server now default to using the HTTP/2 based implementation. To disable this behavior, use c.t.finagle.Http.client.withNoHttp2 and c.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 and com.twitter.finagle.http.defaultServerProtocol flags can be set to HTTP/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.