All Versions
172
Latest Version
Avg Release Cycle
28 days
Latest Release
-

Changelog History
Page 8

  • v6.37.0 Changes

    ๐Ÿ—„ Deprecations

    
    * ๐Ÿ—„ finagle-core: `c.t.f.Deadline` is deprecated in favor of `c.t.f.context.Deadline`.
      ``RB_ID=864148``
    
    ๐Ÿ’ฅ Breaking API Changes
    
    • ๐Ÿšš finagle-core: As part of a move away from encoding/decoding in the Netty pipeline, removed FrameEncoder and FrameDecoder types, found in c.t.f.codec. RB_ID=847716

    • finagle-core: Delete IdleConnectionFilter, which is no longer hooked up in the server, and no longer seems to be useful. RB_ID=856377

    • ๐Ÿ— finagle-core: Remove deprecated methods from c.t.f.builder.ClientBuilder RB_ID=864622

      • connectionTimeout, use tcpConnectTimeout
      • expFailFast, use failFast
      • buildFactory, use other buildFactory methods
      • build, use other build methods
    • finagle-exp: Abstract out parts of the DarkTrafficFilter for potential re-use. We also canonicalize the DarkTrafficFilter stats scope which changes from "darkTrafficFilter" to "dark_traffic_filter". E.g.: "dark_traffic_filter/forwarded", "dark_traffic_filter/skipped", and "dark_traffic_filter/failed". RB_ID=852548

    • finagle-mysql: Mysql has been promoted out of experimental. Please change all references of com.twitter.finagle.exp.{M,m}ysql to com.twitter.finagle.{M,m}ysql

    • ๐Ÿ‘€ finagle-redis: Server-side support for Redis is removed. See this finaglers@ thread (https://groups.google.com/forum/#!topic/finaglers/dCyt60TJ7eM) for discussion. Note that constructors for Redis commands no longer accept raw byte arrays. RB_ID=848815

    • ๐Ÿšš finagle-redis: Redis codec (i.e., c.t.f.Codec) is removed. Use c.t.f.Redis.client instead. RB_ID=848815

    ๐Ÿ†• New Features

    
    * 0๏ธโƒฃ finagle-core: Expose metrics on util's default `FuturePool` implementations
      `unboundedPool` and `interruptibleUnboundedPool`:
      "finagle/future_pool/pool_size", "finagle/future_pool/queue_size",
      "finagle/future_pool/active_tasks", and "finagle/future_pool/completed_tasks".
      ``RB_ID=850652``
    
    * finagle-core: Mux Clients now propagate the number of times the client retried
      the request in the request's c.t.f.context.Context, available via
      c.t.f.context.Retries. ``RB_ID=862640``
    
    * finagle-http: HTTP Clients now propagate the number of times the client retried
      the request in the request's c.t.f.context.Context, available via
      c.t.f.context.Retries. ``RB_ID=864852``
    
    * finagle-thrift: maxThriftBufferSize is now tunable via parameter for Thrift
      servers. It previously only was for ThriftMux servers. ``RB_ID=860102``
    
    โš™ Runtime Behavior Changes
    
    • finagle-http: HttpTransport now eagerly closes client connection after processing non-keepalive requests.

    • finagle-redis: c.t.f.redis.Client now uses the pipelining dispatcher. RB_ID=848815

    • finagle-serversets: c.t.f.serverset2.Stabilizer no longer uses a timer to implement stabilization periods if the periods are 0 seconds long. RB_ID=861561

    • finagle-core: 'c.t.f.Failure' has a new flag, Rejected, to indicate that a given request was rejected. All Failures generated with the Failure.rejected constructor are flagged Rejected and Restartable. RB_ID=863356

    • ๐Ÿ›  finagle-core: c.t.f.FixedInetResolver now optionally retries failed DNS lookups with provided backoff, and c.t.f.serverset2.Zk2Resolver uses this retry functionality infinitely, exponentially backing off from 1 second to 5 minutes. RB_ID=860058

  • v6.36.0 Changes

    ๐Ÿ—„ Deprecations

    
    * ๐Ÿšš finagle-http: Removed DtabFilter.Finagle in favor of DtabFilter.Extractor.
      ``RB_ID=840600``
    
    * ๐Ÿ—„ finagle-zipkin: Deprecate `ZipkinTracer` in favor of `ScribeZipkinTracer`.
      ``RB_ID=840494``
    
    ๐Ÿ’ฅ Breaking API Changes
    
    • ๐Ÿ— finagle: Builds are now only for Java 8 and Scala 2.11. See the blog post <https://finagle.github.io/blog/2016/04/20/scala-210-and-java7/>_ for details. RB_ID=828898

    • ๐Ÿ‘ฏ finagle: Finagle is no longer depending on Twitter's clone of JSR166e, JDK 8 API is used instead. RB_ID=833652

    • ๐Ÿ“ฆ finagle-cacheresolver: package contents merged into finagle-memcached. RB_ID=833602

    • finagle-core: Renamed DeadlineFilter to DeadlineStatsFilter, which now only records stats for the number of requests with exceeded deadlines, the remaining deadline budget, and the transit latency of requests. It no longer rejects requests and has no configuration. We have decided not to pursue Deadline Admission Control at this time. RB_ID=829372

    • ๐Ÿšš finagle-core: ClientBuilder.socksProxy(SocketAddress) is removed. Use command line flags (see c.t.f.socks.SocksProxyFlags.scala) instead. RB_ID=834634

    • ๐Ÿšš finagle-core: Removed "closechans" and "closed" counters from ChannelStatsHandler. RB_ID=835194

    • ๐Ÿšš finagle-core: Removed the "load" gauge from StatsFilter as it was duplicated by the "pending" gauge. RB_ID=835199

    • ๐Ÿšš finagle-core: c.t.finagle.NoStacktrace is removed. Use scala.util.control.NoStackTrace instead. RB_ID=833188

    • ๐Ÿšš finagle-core: c.t.finagle.Failure.withStackTrace is removed. Use system property scala.control.noTraceSuppression instead to fill stacktraces in Finagle's failures. RB_ID=833188

    • ๐Ÿšš finagle-core: c.t.f.filter.RequestSerializingFilter is removed. Use c.t.f.filter.RequestSemaphoreFilter instead. RB_ID=839372

    • finagle-core: SessionParams no longer contains acquisitionTimeout. Instead, it was extracted into ClientSessionParams. RB_ID=837726

    • finagle-core: Changed visibility of PipeliningDispatcher to private[finagle]. Clients should not be affected, since it's not a part of the end-user API. RB_ID=843153.

    • finagle-core: Simplified and unified the constructors for FailureAccrualFactory into a single constructor. RB_ID=849660

    • ๐Ÿ—„ finagle-http: Deprecate channelBufferUsageTracker in favor of maxRequestSize. RB_ID=831233

    • finagle-http: HttpClientDispatcher, HttpServerDispatcher, and ConnectionManager are no longer public. RB_ID=830150

    • ๐Ÿšš finagle-redis: Deprecated methods have been removed from the client API. RB_ID=843455

    • ๐Ÿ“ฆ finagle-redis: c.t.f.redis.*Commands traits are now package-private. RB_ID=843455

    • finagle-redis: Replace ChannelBuffer with Buf in client's:

      • HashCommands: RB_ID=843596
      • ListCommands: RB_ID=844596
      • BtreeSortedSetCommands: RB_ID=844862
      • HyperLogLogCommands: RB_ID=844945
      • PubSubCommands: RB_ID=845087
      • SetCommands: RB_ID=845578
      • SortedSetCommands: RB_ID=846074
    • ๐Ÿšš finagle-thrift: As part of the migration off of Codec, remove c.t.f.thrift.ThriftClientBufferedCodec and c.t.f.thrift.ThriftClientBufferedCodecFactory which were used by ClientBuilder.codec and ServerBuilder.codec. Replace usage with ClientBuilder.stack(Thrift.client.withBufferedTransport) or ServerBuilder.stack(Thrift.server.withBufferedTransport). RB_ID=838146

    • finagle-memcached: c.t.f.memcached.Client now uses c.t.bijection.Bijection instead of c.t.u.Bijection. RB_ID=834383

    • ๐Ÿšš finagle-zipkin: Moved case classes and companion objects Span, ZipkinAnnotation, BinaryAnnotation, Endpoint, Sampler and SamplingTracer to finagle-zipkin-core. RB_ID=840494

    • ๐Ÿšš finagle-mysql: Removed c.t.f.exp.mysql.transport.MysqlTransporter, as it was not useful for it to be public. RB_ID=840718

    ๐Ÿ› Bug Fixes

    
    * finagle-core: PipeliningDispatcher now serializes "write and enqueue Promise" so it's no longer
      possible for the wrong response to be given to a request. ``RB_ID=834927``
    
    * finagle-http: Servers which aggregate content chunks (streaming == false) now return a 413
      response for streaming clients who exceed the servers' configured max request size.
      ``RB_ID=828741``
    
    * finagle-mysql: `c.t.f.exp.mysql.PreparedCache` now closes prepared statements when no one holds
      a reference to the cached future any longer.  This fixes a race condition where the cached
      future could be evicted and the prepared statement closed while a user tries to use that
      prepared statement.  ``RB_ID=833970``
    
    * ๐Ÿ‘€ finagle-netty4-http: Servers now see the correct client host address for requests. ``RB_ID=844076``
    
    ๐Ÿ†• New Features
    
    • โฑ finagle-core: Added gauge, "scheduler/blocking_ms" measuring how much time, in milliseconds, the com.twitter.concurrent.Scheduler is spending doing blocking operations on threads that have opted into tracking. This also moves the "scheduler/dispatches" gauge out of TwitterServer into Finagle. RB_ID=828289

    • finagle-core: Added a FailureAccrualPolicy that marks an endpoint dead when the success rate in a specified time window is under the required threshold. RB_ID=829984

    • 0๏ธโƒฃ finagle-core: StackServer now installs an ExpiringService module by default. This allows servers to have control over session lifetime and brings the StackServer to feature parity with ServerBuilder. RB_ID=837726

    • finagle-exp: Changed DarkTrafficFilter to forward interrupts to dark service. RB_ID=839286

    • ๐Ÿšš finagle-http: ContextFilter and Dtab-extractor/injector logic has been moved from the http dispatchers into the client and server stacks. RB_ID=840600

    • finagle-mysql: Added a withMaxConcurrentPreparedStatements method to the client which lets you specify how many prepared statements you want to cache at a time. RB_ID=833970

    • ๐Ÿ‘ finagle-redis: Adds support for scripting commands. RB_ID=837538

    • ๐Ÿ‘ finagle-netty4: SOCKS5 proxy support. RB_ID=839856

    • finagle-zipkin-core: A new module containing most of the functionality from finagle-zipkin, leaving finagle-zipkin with only Scribe specific code and a service loader. This allows for other transports to be implemented in separate modules. For example the upcoming finagle-zipkin-kafka. RB_ID=840494

    • finagle-thriftmux: Introduce a Netty4 implementation of mux and thrift-mux. RB_ID=842869

    โš™ Runtime Behavior Changes

    
    * ๐Ÿ”ง finagle-core: For SSLEngine implementations supplied via configuration or
      created by Finagle, the setEnableSessionCreation method is no longer called.
      The supplied value, true, is the default for JSSE implementations, and for
      other engines this can be an unsupported operation. ``RB_ID=845765``
    
    * finagle-core: Pipelined protocols (memcached, redis) no longer prevent
      connections from being cut by interrupts.  Instead, interrupts are masked
      until a subsequent ten second timeout has expired without a response in the
      pipeline. ``RB_ID=843153``
    
    * finagle-core: MonitorFilter now installs the parameterized monitor, and will
      no longer fail the request automatically if any exception is thrown
      synchronously (like if an exception is thrown in an onSuccess or onFailure
      block).  This removes a race, and makes Finagle more deterministic.
      ``RB_ID=832979``
    
  • v6.35.0 Changes

    ๐Ÿ—„ Deprecations

    * ๐Ÿ“ฆ finagle: remove unused finagle-validate and finagle-testers packages. ``RB_ID=818726``
    
    โš™ Runtime Behavior Changes
    
    • finagle-core: DeadlineFilter is now per-connection, so the max rejection percentage is not shared across clients. This prevents a single client from exceeding the rejection budget. RB_ID=813731.

    • ๐Ÿšš finagle-core: The use of keytool in PEMEncodedKeyManager has been removed and instead the keystore is being loaded from the pkcs12 file. RB_ID=832070

    • finagle-http: Local Dtabs are now encoded into the Dtab-Local header. X-Dtab headers may still be read but should be considered deprecated. RB_ID=815092

    • ๐Ÿšš finagle-thrift: Removed duplicate "thrift" label on Thrift/ThriftMux scrooge-related server stats. RB_ID=816825

    ๐Ÿ’ฅ Breaking API Changes

    * ๐Ÿ—„ finagle-redis: Deprecated ChannelBuffer exposing apis for string commands. ``RB_ID=817766``.
    
    * ๐Ÿšš finagle-core: DefaultClient has been removed. Implementors should prefer `c.t.f.StackClient`
      ``RB_ID=812681``.
    
    * finagle-core: When a client is created, its server set resolution is started eagerly.
      ``RB_ID=806940``
    
    * finagle-core: Dentry now takes a Dentry.Prefix instead of a Path. ``RB_ID=813914``
    
    * ๐Ÿšš finagle-core: Remove `*.client.withTransport.socksProxy` param as part of the initiative to
      move to CLI flags based configuration for SOCKS. ``RB_ID=842512``
    
    * finagle-thrift/thriftmux: Thrift servers constructed using `Thrift.serveIface` now use
      `Thrift.server.serveIface`. ThriftMux servers constructed using `ThriftMux.serveIface` now use
      `ThriftMux.server.serveIface`. ``RB_ID=824865``
    
    * ๐Ÿšš finagle-cache-resolver: `c.t.f.cacheresolver.ZookeeperCacheNodeGroup` has been removed from the
      API since we no longer check for the zookeeper data for the cache pool size to refresh for the
      changes in the serverset. ``RB_ID=811190``
    
    ๐Ÿ†• New Features
    ~~~~~~~~~~~~
    
    * ๐Ÿ”ง finagle-http: http 1.1 running on netty4 is configurable via `c.t.finagle.netty4.http.exp.Netty4Impl`.
      It has not been tested in production and should be considered beta software. ``RB_ID=828188``
    
    * finagle-core: Multi-line Dtabs may now contain line-oriented comments beginning with '#'.
      Comments are omitted from parsed Dtabs. ``RB_ID=818752``
    
    * finagle-http: new stack params MaxChunkSize, MaxHeaderSize, and MaxInitialLineLength
      are available to configure the http codec. ``RB_ID=811129``
    
    * ๐Ÿ›ฐ finagle-mux: Mux now has support for fragmenting Tdispatch and Rdispatch payloads.
      This helps with head-of-line blocking in the presence of large payloads and allows
      long transmissions to be interrupted. ``RB_ID=794641``.
    
    * ๐Ÿ›  finagle-core: Dtabs allow wildcard path elements in prefixes. ``RB_ID=813914``
    
    * ๐Ÿ‘ finagle-netty4: HTTP proxy support for any Finagle Netty 4 client. ``RB_ID=819752``
    
    * finagle-core: Gauge for dns resolutions awaiting lookups. ``RB_ID=822410``
    
    ๐Ÿ› Bug Fixes
    ~~~~~~~~~
    
    * finagle-http: Ensure that service closure is delayed until chunked response bodies
      have been processed. ``RB_ID=813110``
    
    * finagle-stats: Ensure that histogram snapshotting does not fall behind if snapshot()
      is not called at least once per interval. ``RB_ID=826149``
    
  • v6.34.0 Changes

    โš™ Runtime Behavior Changes

    
    * finagle-core: GenSerialClientDispatcher fails pending and subsequent requests when
      its underlying transport closes. ``RB_ID=807590``
    
    ๐Ÿ†• New Features
    ~~~~~~~~~~~~
    
    * finagle-core: Include upstream/downstream addresses/client ids and request trace id
      in exceptions that extend `c.t.f.HasRemoteInfo` (including `c.t.f.SourcedException`),
      accessible via the `remoteInfo` value. ``RB_ID=797082``
    
    * finagle-core: Introduce `c.t.f.service.ResponseClassifier` for HTTP servers,
      which allows developers to give Finagle the additional application specific knowledge
      necessary in order to properly classify responses.``RB_ID=800179``
    
    * ๐Ÿ›ฐ finagle: Export two new histograms: `request_payload_bytes` and `response_payload_bytes`
      for the following protocols: HTTP (non-chunked), Mux, ThriftMux and Thrift. ``RB_ID=797821``
    
    * finagle-core: Define `c.t.f.Address` to represent an endpoint's physical location.
      Resolvers and namers may attach metadata such as weight to individual endpoint addresses.
      ``RB_ID=792209``
    
    * finagle-http: Introduce convenience extractors to pattern match `c.t.f.http.Response.status`
      against the different categories. ``RB_ID=802953``
    
    * ๐Ÿ“œ finagle-http: Add `toBoolean` method in `StringUtil` to parse strings to boolean consistently.
      ``RB_ID=804056``
    
    * finagle-http: Servers now actually decompress requests when decompression is turned on.
      ``RB_ID=810629``
    
    * ๐Ÿ‘ finagle-redis: Add support for SENTINEL commands. ``RB_ID=810663``
    
    * ๐Ÿ‘ finagle-redis: Support for Pub/Sub. ``RB_ID=810610``
    
    ๐Ÿ’ฅ Breaking API Changes
    ~~~~~~~~~~~~~~~~~~~~
    
    * finagle-core: `c.t.f.Codec.prepareConnFactory(ServiceFactory)` is marked `final`, override
      `c.t.f.Codec.prepareConnFactory(ServiceFactory, Stack.Params)` instead. ``RB_ID=797821``
    
    * finagle-core: `c.t.f.Codec.newClientDispatcher(Transport)` is marked `final`, override
      `c.t.f.Codec.newClientDispatcher(Transport, Stack.Params)` instead. ``RB_ID=797821``
    
    * ๐Ÿšš finagle-core: Removed deprecations: ``RB_ID=800974``
      - Removed `c.t.f.Service.release`, replace usage with `Service.close()`.
      - Removed `c.t.f.ServiceFactory.make`, replace usage with `ServiceFactory.apply`.
      - Removed `c.t.f.ProxyServiceFactory`, replace usage with `ServiceFactoryProxy`.
      - Removed deprecated `c.t.f.service.FailureAccrualFactory` constructor.
      - Removed `c.t.f.netty3.ChannelBufferBuf.apply`, replace usage with `ChannelBufferBuf.Owned.apply`.
      - Removed `c.t.f.util.InetAddressUtil.Loopback`, replace usage with `java.net.InetAddress.getLoopbackAddress`.
      - Removed `c.t.f.tracing.TracingFilter`, replace usage with `TraceInitializationFilter` and `(Client|Server)TracingFilter`.
    
    * finagle-core: `c.t.f.Addr.Bound.addr` type changed from `Set[SocketAddress]` to
      `Set[c.t.f.Address]`. We provide a migration guide below for the most common cases.
    
      Callers of `c.t.f.Addr.Bound.addr` must handle `Set[c.t.f.Address]` instead of
      `Set[SocketAddresses]`. If you do something with the `SocketAddress` and expect the underlying
      type to be `InetSocketAddress`, use `c.t.f.Address.Inet.addr` to get the underlying
      `InetSocketAddress`.
    
      `c.t.f.Addr` constructors and `c.t.f.Name.bound` method now accept `c.t.f.Address` instead
      of `SocketAddress`. For most cases, wrapping the `InetSocketAddress` in an `Address.Inet`
      will fix the compile error.
    
      Any other `SocketAddress` subclass is currently incompatible with `c.t.f.Address`. Instead,
      you should encode any additional information in the metadata field of `c.t.f.Address.Inet`
      or `c.t.f.exp.Address.ServiceFactory`. ``RB_ID=792209``
    
    * finagle-core: Delete `c.t.f.ServiceFactorySocketAddress` and replace usages with
      `c.t.f.exp.Address.ServiceFactory`. ``RB_ID=792209``
    
    * finagle-core: Delete `c.t.f.WeightedSocketAddress` and instead use
      `c.t.f.addr.WeightedAddress` to represent address weights. ``RB_ID=792209``
    
    * ๐Ÿ— finagle-core: `c.t.f.builder.ClientBuilder.hosts` takes a Seq of `InetSocketAddress` instead of
      `SocketAddress`. If you get a compile error, change the static type to `InetSocketAddress` if
      you can. Otherwise, cast it at runtime to `InetSocketAddress`. ``RB_ID=792209``
    
    * finagle-core: `c.t.f.client.Transporter.EndpointAddr` takes a `c.t.f.Address` as its
      parameter instead of `SocketAddress`. ``RB_ID=792209``
    
    * ๐Ÿšš finagle-core: `c.t.f.service.FauilureAccrualFactory.Param(FailureAccrualPolicy)` is removed -
      it's not safe to configure Failure Accrual with a shareable instance of the policy, use
      `() => FailureAccrualPolicy` instead. ``RB_ID=802953``
    
    * ๐Ÿšš finagle-core: `$Client.withSessionQualifier.failureAccrualPolicy` has been removed from the API
      since it enables an experimental feature (use Stack's `.configured` API instead). ``RB_ID=802953``
    
    * ๐Ÿšš finagle-core: `c.t.f.service.exp.FailureAccrualPolicies` (Java-friendly API) has been removed -
      use `c.t.f.service.exp.FailureAccrualPolicy` instead.
    
    * ๐Ÿšš finagle-core: DefaultServer is removed. Protocol implementors should use StackServer instead.
      ``RB_ID=811918``
    
    * finagle-memcached: `c.t.f.memcached.protocol.text.Memcached` no longer takes a `StatsReceiver`,
      pass it to a `(Client/Server)Builder` instead. ``RB_ID=797821``
    
    * finagle-redis: `c.t.f.redis.Redis` no longer takes a `StatsReceiver`, pass it to a
      `(Client/Server)Builder` instead. ``RB_ID=797821``
    
    * finagle-core: `c.t.f.http.MapHeaderMap` no longer takes a `mutable.Map[String, Seq[String]]` as
      a constructor parameter. `apply` method provides a similar functionality.
    
    ๐Ÿ› Bug Fixes
    ~~~~~~~~~
    
    * ๐Ÿ›  finagle-core: Fixed `getAll` method on `c.t.f.http.MapHeaderMap`, now it is case insensitive.
      `apply` method was altering the provided header names. This is fixed it is now possible to
      iterate on the original header names.
    
  • v6.33.0 Changes

    ๐Ÿ†• New Features

    
    * finagle-core: Introduce the `c.t.f.service.PendingRequestFactory` module in the client Stack.
      The module allows clients to limit the number of pending requests per connection. It is disabled
      by default. ``RB_ID=795491``
    
    * finagle-core: Introduce the `c.t.f.filter.ServerAdmissionControl` module in the server Stack,
      which is enabled through the param `c.t.f.param.EnableServerAdmissionControl`. Users can define
      their own admission control filters, which reject requests when the server operates beyond
      its capacity. These rejections apply backpressure and allow clients to retry requests on
      servers that may not be over capacity. The filter implementation should define its own logic
      to determine over capacity. One or more admission control filters can be installed through
      the `ServerAdmissionControl.register` method. ``RB_ID=776385``
    
    * finagle-core: Introduce `c.t.f.service.ResponseClassifier` which allows developers to
      give Finagle the additional application specific knowledge necessary in order to properly
      classify them. Without this, Finagle can only safely make judgements about transport
      level failures. This is now used by `StatsFilter` and `FailureAccrualFactory` so that
      application level failures can be used for both success metrics and failure accrual.
      ``RB_ID=772906``
    
    * finagle-core: Added a new 'Endpoints' section on client pages, listing the weights, paths,
      and resolved endpoints for each dtab.``RB_ID=779001``
    
    * finagle-core: Introduce discoverable stack params which are available on every client/server
      via the `with`-prefixed methods. ``RB_ID=781833``
    
    * finagle-memcached: Added `c.t.f.memcached.BaseClient.checkAndSet` which exposes the difference
      between a conflict and a not found result.
    
    * finagle-mux: Add a Wireshark dissector that can decode Mux messages. ``RB_ID=779482``
    
    * finagle-stats: Define flag `c.t.f.stats.statsFilterFile` as GlobalFlag[Set[File]] to take
      comma-separated multiple files. ``RB_ID=793397``
    
    * finagle-mux: Tinit/Rinit are now available and permit feature negotiation. ``RB_ID=793350``
    
    ๐Ÿ—„ Deprecations
    
    • ๐Ÿ—„ finagle-memcached: c.t.f.memcached.BaseClient.cas is deprecated in favor of the richer checkAndSet method.

    ๐Ÿ’ฅ Breaking API Changes

    
    * ๐Ÿšš finagle-core: All the deprecated exceptions from `Exceptions.scala` have been removed.
      ``RB_ID=774658``
    * ๐Ÿšš finagle-thrift: Remove the `framed` attributes from `c.t.f.Thrift.Client` and
      `c.t.f.Thrift.Server`.  This behavior may now be controlled with `c.t.f.Thrift.param.Framed`.
    * ๐Ÿ— finagle-core: Unused `c.t.f.builder.NonShrinkingCluster` has been removed.
      ``RB_ID=779001``
    
    * finagle-thrift: `c.t.f.ThriftRichClient` has a new abstract protected method
      `responseClassifier: ResponseClassifier`. If your implementation does not need
      this, you can implement it with `ResponseClassifier.Default`. ``RB_ID=791470``
    
    โš™ Runtime Behavior Changes
    
    • finagle-thrift,thriftmux: Deserialization of Thrift responses now happens as part of service application which means that it will now be part of the latency reported by StatsFilter. The actual latency as perceived by clients will not have changed, but for clients that spend significant time deserializing and do not have higher level metrics this may come as a surprise. RB_ID=772931

    • 0๏ธโƒฃ finagle-mux,thriftmux: The default closeTimeout in ping based failure detection is changed from Duration.Top to 4 seconds, to allow a session to be closed by default when a ping response times out after 4 seconds. This allows sessions to be reestablished when there may be a networking issue, so that it can choose an alternative networking path instead. RB_ID=773649

    ๐Ÿ’ฅ Breaking API Changes

    
    * ๐Ÿšš finagle-thrift: Remove the `framed` attributes from `c.t.f.Thrift.Client` and
      `c.t.f.Thrift.Server`.  This behavior may now be controlled with `c.t.f.Thrift.param.Framed`.
    
  • v6.32.0 Changes

    ๐Ÿš€ NOT RELEASED

  • v6.31.0 Changes

    ๐Ÿ†• New Features

    
    * finagle-core: `c.t.f.Server` now has a `serveAndAnnounce` method that accepts a `SocketAddress`
      as an address. ``RB_ID=758862``
    
    * ๐Ÿ‘ finagle-core: `c.t.f.service.Retries` now supports adding delay between each automatic retry.
      This is configured via the `Retries.Budget`. ``RB_ID=768883``
    
    * finagle-core: FailureAccrualFactory now uses a FailureAccrualPolicy to determine when to
      mark an endpoint dead. The default policy, FailureAccrualPolicy.consecutiveFailures(),
      mimicks existing functionality, and FailureAccrualPolicy.successRate() operates on the
      exponentially weighted average success rate over a window of requests.``RB_ID=756921``
    
    * ๐Ÿ”ง finagle-core: Introduce `c.t.f.transport.Transport.Options` to configure transport-level options
      (i.e., socket options `TCP_NODELAY` and `SO_REUSEADDR`). ``RB_ID=773824``
    
    * ๐Ÿ‘ finagle-http: `c.t.f.http.exp.Multipart` now supports both in-memory and on-disk file uploads.
      ``RB_ID=RB_ID=769889``
    
    * finagle-netty4: Hello World. Introduce a `Listener` for Netty 4.1. This is still considered beta.
      ``RB_ID=718688``
    
    * finagle-netty4: Introduce `ChannelTransport` for Netty 4.1. ``RB_ID=763435``
    
    * finagle-thrift: `c.t.f.ThriftRichClient` implementations of `newServiceIface`
      method that accept a `label` argument to pass to the `ScopedStats` instance. ``RB_ID=760157``
    
    * finagle-stats: Added `c.t.f.stats` now has a `statsFilterFile` flag which will read a blacklist
      of regex, newline-separated values. It will be used along with the `statsFilter` flag for stats
      filtering. ``RB_ID=764914``
    
    ๐Ÿ—„ Deprecations
    
    • ๐Ÿ— finagle-core: the #channelFactory method of c.t.f.builder.ServerBuilder has been deprecated in favor of the c.t.f.netty3.numWorkers flag. RB_ID=718688

    โš™ Runtime Behavior Changes

    
    * 0๏ธโƒฃ finagle-core: The behavior for `c.t.f.util.DefaultMonitor` has changed such that
      unhandled exceptions are propagated to `c.t.u.RootMonitor` except for
      `c.t.f.Failures` with a log `Level` below INFO. ``RB_ID=758056``
    
    * finagle-core: The metrics for requeues `requeue/requeues`, `requeue/budget` and
      `requeue/budget_exhausted` have moved under retries. They are now `retries/requeues`,
      `retries/budget` and `retries/budget_exhausted`. ``RB_ID=760213``
    
    * finagle-core: `c.t.f.service.RetryFilter` and `c.t.f.service.RetryExceptionsFilter`
      now default to using a `RetryBudget` to mitigate retry amplification on downstream
      services. The previous behavior can be achieved by explicitly passing in
      `RetryBudget.Infinite`. ``RB_ID=766302``
    
    * finagle-core: `c.t.f.factory.TrafficDistributor` now suppresses changes when a bound
      address is updated from a valid set to an error. Instead, it continues using stale
      data until it gets a successful update.
    
    * finagle-http: Unhandled exceptions from user defined HTTP services are now converted
      into very basic 500 responses so clients talking to those services see standard HTTP
      responses instead of a dropped connection. ``RB_ID=755846``
    
    * ๐Ÿšš finagle-memcached: Moved metrics from underlying `KetamaPartitionedClient` for Memcached clients
      to share the same scope of the underlying finagle client. ``RB_ID=771691``
    
    * finagle-mux: `com.twitter.finagle.mux.ThresholdFailureDetector` is turned on by
      default. ``RB_ID=756213``
    
    * finagle-serversets: The `c.t.f.serverset2.Zk2Resolver` now surfaces `Addr.Pending`
      when it detects that its underlying ZooKeeper client is unhealthy. Unhealthy is defined
      as non-connected for greater than its 'unhealthyWindow' (which defaults to 5 minutes).
      ``RB_ID=760771``
    
    * finagle-serversets: The `c.t.f.serverset2.ZkSession` now uses an unbounded semaphore to
      limit to 100 outstanding zookeeper requests at any one moment. ``RB_ID=771399``
    
    
    ๐Ÿ’ฅ Breaking API Changes
    ~~~~~~~~~~~~~~~~~~~~
    
    * ๐Ÿ‘ป finagle-core: `BackupRequestLost` is no longer itself an `Exception`. Use
      `BackupRequestLost.Exception` in its place. ``RB_ID=758056``
    
    * ๐Ÿ— finagle-core: Replaced `c.t.f.builder.ClientConfig.Retries` with
      `c.t.f.service.Retries.Policy`. ``RB_ID=760213``
    
    * ๐Ÿšš finagle-core: A deprecated `c.t.f.CancelledReadException` has been removed.
      ``RB=763435``
    
    * ๐Ÿšš finagle-http: `c.t.f.http.exp.Multipart.decodeNonChunked` has been removed from
      the public API. Use `c.t.f.http.Request.multipart` instead. Also
      `c.t.f.http.exp.Multipart.FileUpload` is no longer a case class, but base trait
      for `Multipart.InMemoryFileUpload` and `Multipart.OnDiskFileUpload`. ``RB_ID=769889``
    
    * finagle-mux: `c.t.f.FailureDetector.apply` method is changed to private scope,
      to reduce API surface area. Using `FailureDetector.Config` is enough to config
      session based failure detection behavior. ``RB_ID=756833``
    
    * finagle-mux: `closeThreshold` in `c.t.f.mux.FailureDetector.ThresholdConfig` is
      changed to `closeTimeout`, from an integer that was used as a multiplier to time
      duration. This makes it easier to config. ``RB_ID=759406``
    
    ๐Ÿ› Bug Fixes
    ~~~~~~~~~
    
    * finagle-thrift: `c.t.f.ThriftRichClient` scoped stats label is now threaded
      properly through `newServiceIface` ``RB_ID=760157``
    
  • v6.30.0 Changes

    ๐Ÿ†• New Features

    
    * ๐Ÿšค finagle-core: `com.twitter.finagle.client.LatencyCompensator` allows its
      default Compensator value to be set via an API call. This allows
      libraries to set defaults for clients that have not configured this module.
      ``RB_ID=750228``
    
    * ๐Ÿ›  finagle-core: New Resolver `com.twitter.finagle.FixedInetResolver` extends
      InetResolver by caching successful DNS lookups indefinitely. It's scheme is 'fixedinet'.
      This is used by clients or resolvers that do not want or expect
      host->ip map changes (such as the zk2 resolver and twemcache client).
      ``RB_ID=753712``
    
    โš™ Runtime Behavior Changes
    
    • finagle-core: RetryPolicy.tries now uses jittered backoffs instead of having no delay. RB_ID=752629

    • finagle-core: FailureAccrualFactory uses jittered backoffs as the duration to mark dead for, if markDeadFor is not configured. RB_ID=746930

    • ๐Ÿšค finagle-core: The transit latency (transit_latency_ms) and deadline budget (deadline_budget_ms) stats are now only recorded for servers, not for clients anymore, since they're only meaningful for servers. RB_ID=75268

    • ๐Ÿ›ฐ finagle-http: Clients sending requests with payloads larger than the server accepts (default 5MB) now receive a HTTP 413 response instead of a channel closed exception. RB_ID=753664

    ๐Ÿ’ฅ Breaking API Changes

    
    * finagle-core: `TimerFromNettyTimer` is renamed to `HashedWheelTimer` and
      the constructor accepting `org.jboss.netty.util.Timer` made private. For
      compatibility, `HashedWheelTimer` has additional constructors to match
      those provided by `org.jboss.netty.util.HashedWheelTimer`. ``RB_ID=748514``
    
    * finagle-httpx / finagle-httpx-compat: Renamed to finagle-http and
      finagle-http-compat respectively. This changes the package names, e.g.:
      com.twitter.finagle.httpx to com.twitter.finagle.http. ``RB_ID=751876``
    
    * finagle-core: Marked `HandletimeFilter` private[finagle], and renamed it to
      `ServerStatsFilter`. ``RB_ID=75268``
    
    * finagle-zipkin: Drop `c.t.zipkin.thrift.Annotation.duration` and associated thrift field
      `c.t.f.thrift.thrift.Annotation.duration`. ``RB_ID=751986``
    
    * ๐Ÿšš finagle-stress: Project has been removed from Finagle. ``RB_ID=752201``
    
    * ๐Ÿšš finagle-swift: Project has been moved off of Finagle to
      https://github.com/finagle/finagle-swift . ``RB_ID=752826``
    
  • v6.29.0 Changes

    ๐Ÿ—„ Deprecations

    
    * ๐Ÿšš finagle-http: Deprecated in favour of finagle-httpx and now removed.
    
    ๐Ÿ†• New Features
    
    • finagle-core: Provides a RetryFilter which takes a RetryPolicy[(Req, Try[Rep])] and allows you to retry on both "successful" requests, such as HTTP 500s, as well as failed requests. The Req parameterization facilitates using the request to determine if retrying is safe (i.e. the request is idempotent).

    • ๐Ÿ‘ finagle-httpx: Experimental support multipart/form-data (file uploads) decoding via c.t.f.httpx.exp.Multipart. RB_ID=730102

    โš™ Runtime Behavior Changes

    
    * finagle-core: `InetResolver.bind` will now succeed if any hostname resolution
      succeeds. Previous behavior required that all hosts are successfully resolved.
      ``RB_ID=737748``
    
    * finagle-core: DNS lookups in InetResolver are no longer cached
      within Finagle according to `networkaddress.cache.ttl`; we rely
      instead on however caching is configured in the JVM and OS. ``RB_ID=735006``
    
    * finagle-core: After being revived, a `FailureAccrualFactory` enters a
      'probing' state wherein it must successfully satisfy a request before
      accepting more. If the request fails, it waits for the next `markDeadFor`
      period. ``RB_ID=747541``
    
    * finagle-serversets: DNS lookups in Zk2Resolver are no longer
      cached within Finagle according to `networkaddress.cache.ttl`;
      instead they are cached indefinitely. ``RB_ID=735006``
    
    * finagle-redis: c.t.f.Redis now uses a pipelined dispatcher along with
      a concurrent load balancer to help eliminate head-of-line blocking.
    
    ๐Ÿ’ฅ Breaking API Changes
    ~~~~~~~~~~~~~~~~~~~~
    
    * finagle-core: `RetryingFilter`, which takes a RetryPolicy[Try[Nothing]]` and
      is invoked only on exceptions, has been renamed to `RetryExceptionsFilter`.
      `RetryExceptionsFilter` is a subclass of `RetryFilter`, which takes a
      `RetryPolicy[(Req, Try[Rep])]` and allows you to retry on both "successful"
      requests, such as HTTP 500s, as well as failed requests. The `Req`
      parameterization facilitates using the request to determine if retrying is
      safe (i.e. the request is idempotent).
    
    * finagle-core: Name.all is now private to `com.twitter.finagle`.
    
    * finagle-memcached: Unified stack-based construction APIs and cleanup internal
      constructors. In particular, `KetamaClient` was removed and `KetamaPartitionClient`
      and `KetamaFailureAccrualFactory` are now sealed inside Finagle. See
      [[com.twitter.finagle.Memcached]] for how to construct a finagle-memcached client.
    
    * finagle-redis: Port the c.t.f.Redis protocol object to the StackClient API.
      A redis client can now be constructed and configured like the rest of the
      finagle subprojects.
    
  • v6.28.0 Changes

    ๐Ÿ†• New Features

    
    โš™ Runtime Behavior Changes
    
    • ๐Ÿšš finagle-core: Weights are no longer supported by the load balancers. They are moved one level above and interpreted by a new module, the TrafficDistributor. This frees the balancers to have non-linear load metrics. It also changes the semantics of weights. They are now normalized by size of endpoints that share the same weight and interpreted proportional to offered load (however, they can still be though of, roughly, as multipliers for traffic). RB_ID=677416

    • finagle-core: The RequestSemaphoreFilter now sheds load by dropping the tail of the queue and failing it with a Failure.Restartable. Previously, the filter had an unbounded queue but now the default size is 0 (i.e. no queueing). The dropped requests are in turn requeued by Finagle clients with protocol support (e.g. Http, ThriftMux). RB_ID=696934

    • finagle-core: ServerBuilder.ServerConfig.BindTo, ServerBuilder.ServerConfig.MonitorFactory, and ServerBuilder.ServerConfig.Daemonize, are now private to com.twitter.finagle.builder. RB_ID=730865

    • finagle-memcachedx: Renamed to finagle-memcached.

    • finagle-stats: Standard deviation ("$statName.stddev") is no longer exported. RB_ID=726309 (follow up to RB_ID=717647)

    • ๐Ÿšค finagle-serversets: namer/bind_latency_us stat now counts only time in name resolution, not service acquisition. namer/{dtabcache,namecache,nametreecache}/misstime_ms stats are no longer exported. RB_ID=730309

    ๐Ÿ’ฅ Breaking API Changes

    
    * finagle-core: `c.t.f.jsr166y` has been replaced with Java 7 API. finagle: Replace JSR166y
      with Java 7 API. ``RB_ID=720903``
    
    * finagle-core: `LoadBalancerFactory` no longer takes endpoints with weights as
      per the decoupling mentioned in runtime changes. ``RB_ID=677416``
    
    * finagle-core: `RequestSemaphoreFilter.Param` now accepts a `com.twitter.concurrent.AsyncSemaphore`
      instead of an integer representing the max concurrency. ``RB_ID=696934``
    
    * ๐Ÿ”€ finagle-core: removed `c.t.f.asyncDns` flag and `c.t.f.SyncInetResolver`; DNS resolution is
      now always asynchronous. ``RB_ID=734427``
    
    * 0๏ธโƒฃ finagle-core: `ClientBuilder.ClientConfig.DefaultParams`, `ClientBuilder.ClientConfig.DestName`,
      `ClientBuilder.ClientConfig.GlobalTimeout`, `ClientBuilder.ClientConfig.Daemonize`, and
      `ClientBuilder.ClientConfig.MonitorFactory` are now private to `com.twitter.finagle.builder`.
      `ClientBuilder.ClientConfig.Retries` is now private to `com.twitter`. ``RB_ID=727245``
    
    * finagle-httpx: `Method` no longer has an extractor. To access the name of
      custom methods, use `toString`. ``RB_ID=722913``
    
    * finagle-mux: `c.t.f.mux.exp.FailureDetector` and `c.t.f.mux.exp.sessionFailureDetector` are
      moved out of exp package into mux package. ``RB_ID=725350``