Skip to content

Conversation

@renovate
Copy link

@renovate renovate bot commented Jun 4, 2023

Note: This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Update Change
com.twitter:finagle-thriftmux minor 6.28.06.45.0

Release Notes

twitter/finagle (com.twitter:finagle-thriftmux)

v6.42.0

New Features


* finagle-commons-stats: Provide a TwitterServer exporter for commons stats.
  This simplifies migration for folks who don't want to switch to
  commons metrics and TwitterServer in one go.  It will export stats on the
  /vars.json endpoint.  ``RB_ID=902921``

* finagle-http: Introduce `HeaderMap.getOrNull(header)`, a Java-friendly variant of
  `HeaderMap.get(header).orNull`.  ``RB_ID=904093``

Breaking API Changes
  • finagle: finagle-http-compat has been removed as part of migration off Netty 3. Use
    finagle-http types/APIs directly. RB_ID=903647

  • finagle: finagle-spdy has been removed as part of the migration off Netty 3. Please
    use finagle-http2 as a replacement. RB_ID=906033

  • finagle-base-http: Message.write(ChannelBuffer) has been replaced with a method that
    receives a Buf. The semantics of calling the write method on chunked messages has
    changed from potentially throwing an exception based on the state of the Writer to
    always throwing an IllegalStateException. Existing users of the write(..) methods
    on chunked messages should use the Writer directly. RB_ID=900091

  • fingle-base-http: HeaderMap.getAll(key) now returns a Seq[String] as opposed to a
    Iterable[String]. RB_ID=905019

  • finagle-core: The ChannelTransport implementations which transforms a Netty pipeline into
    a finagle Transport[Req, Rep] have been specialized to Transport[Any, Any] to avoid the
    illusion of a runtime checked cast. Transport.cast has been changed to receive either a
    Class[T] or an implicit Manifest[T] in order to check the inbound cast at runtime. For users
    of the ChannelTransport types, use the Transport.cast method to get a Transport of the right
    type. RB_ID=902053

  • finagle-memcached: Remove deprecated methods on c.t.f.memcached.Client:

    • apply(group: Group[SocketAddress])
    • apply(cluster: Cluster[SocketAddress])

    Use c.t.f.Memcached.client to create a Memcached client. RB_ID=899331

  • finagle-toggle: ToggleMap Toggles now rehash the inputs to
    apply and isDefinedAt in order to promote a relatively even
    distribution even when the inputs do not have a good distribution.
    This allows users to get away with using a poor hashing function
    such as String.hashCode. RB_ID=899195

Deprecations


* finagle-base-http: Deprecate `c.t.f.http.MapHeaderMap` as it will
  soon be private. Use `c.t.f.http.HeaderMap.apply(..)` to get a HeaderMap
  instance. ``RB_ID=906497``

* finagle-base-http: Deprecate `c.t.f.http.HeaderMap += (String, Date)`.
  Use `c.t.f.http.HeaderMap.set(String, Date)` instead. ``RB_ID=906497``

* finagle-base-http: Deprecate `c.t.f.http.Message.ContentTypeWwwFrom`.
  Use `c.t.f.http.Message.ContentTypeWwwForm` instead. ``RB_ID=901041``

* finagle-base-http: Deprecate `c.t.f.http.Message.headers()`. Use
  `c.t.f.http.Message.headerMap` instead. ``RB_ID=905019``

* finagle-base-http: Deprecate the lazy `response: Response` field on the Request type.
  This field is potentially hazardous as it's not necessarily the Response that will
  be returned by a Service but it is often used as such. Construct a Response using
  the static constructor methods. ``RB_ID=899983``

* finagle-base-http: Numerous protected[finagle] methods on `http.Request` and
  `http.Response` that deal in Netty 3 types have been deprecated as part of the
  migration to Netty 4. ``RB_ID=905761``

* finagle-http: Deprecate ValidateRequestFilter which now has limited utility.
  See entry in Runtime Behavior Changes. If this is still needed, copy the remaining
  behavior into a new filter. ``RB_ID=899895``

* finagle-memcached: Deprecate 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=899331``

* finagle-memcached: Deprecate `c.t.f.memcached.protocol.text.Memcached` object.
  Use `c.t.f.Memcached.client` to create Memcached clients. ``RB_ID=899009``

* finagle-memcached: Deprecations on `c.t.f.memcached.util.ParserUtils`:
    - For `isDigits(ChannelBuffer)` use `ParserUtils.isDigits(Buf)` instead.
    - `DIGITS`
    - `DigitsPattern`

  ``RB_ID=905253``

Runtime Behavior Changes
  • finagle-http: The HTTP client will no longer emit a Netty 3/4 TooLongFrameException when
    a response exceeds the specified MaxResponseSize parameter, and instead emits a Finagle
    specific TooLongMessageException which wraps the Netty exception. RB_ID=905567

  • finagle-http: ValidateRequestFilter doesn't look for the uri "/bad-http-request" which
    had been indicative of the netty3 http codec giving up on decoding a http request. These
    events are caught lower in the pipeline and should not bubble up to the level of this
    filter. RB_ID=899895

  • finagle-netty4: DirectToHeapHandler is now aware of ByteBufHolder types hence can copy
    them on to heap. RB_ID=906602

  • finagle-redis: Transport implementation is now based on Netty 4 (instead of Netty 3).
    RB_ID=895728

Bug Fixes


* finagle-core: Properly compute length when converting a `Buf.ByteArray`
  to a Netty 4 `ByteBuf`. ``RB_ID=901605``

* finagle-memcached: AtomicMap change lock function to synchronize on map
  object. ``DIFF_ID=D18735``

* finagle-netty4: Fixed connection stall in Finagle clients configured with
  both HTTP proxy (`Transporter.HttpProxyTo`) and TLS/SSL enabled. ``RB_ID=904831``

* finagle-netty4: Fixed connection stall in Finagle clients configured with
  both HTTP proxy (`Transporter.HttpProxy`) and TLS/SSL enabled. ``RB_ID=904803``

6.41.0
------

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, because `Service`
  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 to `letClearAll` to avoid confusion with other
  `letClear` methods which clear individual keys. The bulk `letClear` method now takes
  a collection of `Key[_]`s, making it usable from Java. Bulk `let` operations can now be
  done using a collection of `KeyValuePair`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 the `stack` method of ClientBuilder.
  ``RB_ID=894297``

* finagle-memcached: Remove deprecated `cluster` method on `c.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
  • 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

  • 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``

6.40.0
------

New Features
  • finagle: Most libraries (excluding finagle-thrift{,mux}) no longer need to
    add an additional resolver that points to maven.twttr.com. RB_ID=878967

  • finagle: Introducing a new Finagle module finagle-base-http that provides
    a common ground for both Netty 3 (finagle-http) and Netty 4 (finagle-netty4-http)
    HTTP implementations. Netty 3 is still a default transport used in Finagle's
    Http.client and Http.server. ```RB_ID=884614``

  • finagle-core: Introduce the c.t.f.client.DynamicTimeout module allowing clients
    to specify call-site specific timeouts. RB_ID=885005

  • finagle-core: A new module, c.t.f.service.DeadlineFilter, can be added to stack-based servers
    and clients, which rejects requests with expired deadlines RB_ID=895820

  • finagle-memcached: Introduce c.t.f.memcached.CasResult.replaced: Boolean
    to help transition usage off of the deprecated cas client method to
    checkAndSet. RB_ID=891628

  • finagle-thrift: We now depend on a fork of libthrift hosted in the Central Repository.
    The new package lives in the 'com.twitter' organization. This removes the necessity of
    depending on maven.twttr.com. This also means that eviction will not be automatic and
    using a newer libthrift library requires manual eviction if artifacts are being pulled
    in transitively. RB_ID=885879

Runtime Behavior Changes


* finagle-core: `Monitor` logging is improved in Finagle. ``RB_ID=878890``

  - All exceptions caught in the stack are now logged by Finagle's `DefaultMonitor`
    (previously Util's `RootMonitor`) such that Twitter's logging
    framework is used instead of JDK logging.

  - `DefaultMonitor` is now installed implicitly such that it will be composed
    (via `orElse`) with the monitor passed by a user through the stack param.
    The logic behind this compostion is quite straightforward: exceptions that
    are't handled by a user-defined monitor propagated to the default monitor.

  - `DefaultMonitor` now logs upstream socket address, downstream socket address,
    and a client/server label if those are available.

  - `RootMonitor` is still used to handle fatal exceptions from pending side-effect-only
    closures (i.e., `onFailure`, `onSuccess`) on a service future/promise.

* finagle-core: `c.t.f.service.DeadlineStatsFilter` has been removed from the
  server stack, along with all related stats.
  The "admission_control/deadline/transit_latency_ms" stat has been moved to
  `c.t.f.filter.ServerStatsFilter` and re-scoped as "transit_latency_ms"
  ``RB_ID=895820``

* finagle-mux: `com.twitter.finagle.Failures` are now sent over the wire with
  their flags intact via `com.twitter.finagle.mux.transport.MuxFailure` in the
  previously unused Rdispatch context. This allows for greater signaling along
  a chain of services. See the "MuxFailure Flags" section of the mux protocol
  spec in finagle-mux/src/main/scala/c/t/f/mux/package.scala ``RB_ID=882431``

* finagle-netty4: The netty4 listener + transporter no longer manage direct byte
  buffers by default. c.t.f.netty4.channel.DirectToHeapInboundHandler is introduced
  to help protocol builders manage them. ``RB_ID=881648``

* finagle-stats: Changed the default behavior of empty histograms to only export
  the count. Thus the `com.twitter.finagle.stats.exportEmptyHistograms` toggle
  now defaults to `0.0`. ``RB_ID=882522``

Breaking API Changes
~~~~~~~~~~~~~~~~~~~~

* finagle: Some APIs around configuring TLS/SSL on Finagle clients have changed to
  unblock Netty 4 adoption. ``RB_ID=890935``

  - `c.t.f.Http.client.withTls(Netty3TransporterTLSConfig)` is removed. Use
    variations of `c.t.f.Http.client.withTransport.tls` instead.

  - `c.t.f.netty3.Netty3TransporterTLSConfig` is removed.

* finagle: Some APIs around configuring TLS/SSL on Finagle servers have changed to
  unblock Netty 4 adoption. ``RB_ID=891270``

  - `c.t.f.Http.server.withTls(Netty3ListenerTLSConfig)` is removed. Use
    variations of `c.t.f.Http.server.withTransport.tls` instead.

  - `c.t.f.netty3.Netty3ListenerTLSConfig` is removed.

* finagle-core: Removed the protected and unused method `read(permit: Permit): Future[Rep]`
  from `SerialClientDispatcher`. ``RB_ID=881978``

* finagle-core: Removed a gauge, `idle`, from `c.t.f.factory.ServiceFactoryCache`.
  ``RB_ID=884210``

* finagle-core: `ServiceTimeoutException` now extends `NoStackTrace`. ``RB_ID=886809``

* finagle-core: Marked `com.twitter.finagle.util.ConcurrentRingBuffer` as
  private.  It doesn't fit the typical programming model we encourage for
  users of finagle, and so we found it was rarely used.  ``RB_ID=888801``

* finagle-core: Marked `transform` in `com.twitter.finagle.Stack` as protected. It is
  too powerful and unnecessary for users, and should be used by implementors only.

* finagle-core: Removed the `StatsReceiver` argument from `TimeoutFilter`.  ``RB_ID=891380``

* finagle-core: Stopped exporting a few metrics related to deadlines, and replaced with a simpler
  one.  There was a per-`TimeoutFilter` one named `timeout/expired_deadline_ms`, and a per-server
  one named `admission_control/deadline/deadline_budget_ms`.  We added instead a per-server one
  named `admission_control/deadline/exceeded_ms`. ``RB_ID=891380``

* finagle-http: HttpMuxer now takes in a Seq[Route] instead of a
  Seq[(String, Service[Request, Response])]. ``RB_ID=886829``

* finagle-http: As part of the first step towards restructuring Finagle HTTP modules
  required for Netty 4 adoption, HTTP params are moved from the inner object `c.t.f.Http.param`
  into their own package `c.t.f.http.param`. ``RB_ID=885155``

* finagle-redis: A couple of methods had to be renamed (and return type changed) to
  unblock Netty 4 adoption. ``RB_ID=882622``

  - `Command.toChannelBuffer` renamed to `Command.toBuf` and return
    type changed from N3 `ChannelBuffer` to Finagle `Buf`.

  - `Command.toByteArray` is removed.

  - Both `Command.key` and `Command.value` now implemented in terms of `Buf`s
    (no `ChannelBuffers`).

* finagle-redis: An API around `c.t.f.redis.protocol.Command` was modernized as part of
  major restructuring required for the Netty 4 adoption. ``RB_ID=885811``

  - `RedisMessage` (a common parent for both `Command` and `Reply`) has been removed.

  - The encoding machinery was restructured to eliminate duplicated and dead code.

* finagle-thrift: Removed deprecated `ThriftRichClient.newServiceIface` methods
  which did not take a label. Use the versions that take a String label.
  ``RB_ID=891004``

* finagle-thrift: Removed deprecated `ThriftRichClient.newIface` methods based
  on `Groups`. Use the versions that a `dest` or `Name`. ``RB_ID=891004``

* finagle-thriftmux: Removed deprecated classes `ThriftMuxClient`, `ThriftMuxClientLike`,
  `ThriftMuxServer`, and `ThriftMuxServerLike`. ``RB_ID=880924``

Bug Fixes
~~~~~~~~~

* finagle-core: The `withTlsWithoutValidation` and `tlsWithoutValidation`
  APIs have been fixed for an issue on Java 8 where certificate validation
  was being attempted instead of bypassed. ``RB_ID=881660``

* finagle-http: The toggle implementation for `com.twitter.finagle.http.serverErrorsAsFailures`
  had a bug when toggled on. That toggle is no longer used and is superseded by
  `com.twitter.finagle.http.serverErrorsAsFailuresV2`. ``RB_ID=882151``

* finagle-netty4: Connecting to a Socks 5 proxy using Finagle with Netty 4
  now works properly. This previously resulted in a timeout and
  `ProxyConnectException`. ``RB_ID=884344``

* finagle-netty4: Don't swallow bind failures. ``RB_ID=892217``

Deprecations
~~~~~~~~~~~~

* finagle-core: `c.t.f.builder.ClientBuilder` deprecate some seldom used methods.
  The same functionality is available through the Stack-based APIs or
  `ClientBuilder.configured`. ``RB_ID=881612``

   - `hostConnectionIdleTime`
   - `hostConnectionMaxIdleTime`
   - `hostConnectionMaxLifeTime`
   - `hostConnectionMaxWaiters`

6.39.0
------

New Features
~~~~~~~~~~~~

* finagle-core: `com.twitter.finagle.Failure` has a new flag, `NonRetryable`,
  which signifies that a request should not be retried. The flag is respected by
  all of Finagle's retry mechanisms. ``RB_ID=878766``

* finagle-thriftmux: Allow ThriftMux.Clients to be filtered. This is supported
  in the the StdStackClient but ThriftMux.Client is a StackBasedClient. ``RB_ID=874560``

* finagle-netty4: Add boolean flag `com.twitter.finagle.netty4.poolReceiveBuffers` that
  enables/disables pooling of receive buffers (disabled by default). When enabled, lowers
  the CPU usage and allocation rate (GC pressure) with the cost of increased memory
  footprint at the startup. ``RB_ID=872940``

* finagle-netty4: Add new histogram `receive_buffer_bytes` (only enabled with pooling)
  to keep track of the receive buffer sizes (useful for tuning pooling). ``RB_ID=877080``

Deprecations
~~~~~~~~~~~~

* finagle-core: `c.t.f.builder.ClientBuilder` deprecate some seldom used methods.
  The same functionality is available through the Stack-based APIs or
  `ClientBuilder.configured`. ``RB_ID=878009``

  - `readerIdleTimeout`
  - `writerIdleTimeout`
  - `recvBufferSize`
  - `sendBufferSize`
  - `channelFactory`
  - `expHostConnectionBufferSize`

* finagle-kestrel: Deprecate `c.t.f.kestrel.protocol.Kestrel()`,
  `c.t.f.kestrel.protocol.Kestrel(failFast)`, and `c.t.f.kestrel.protocol.Kestrel.get()`.
  To create a Kestrel client using ClientBuilder, use `.stack(c.t.f.Kestrel.client)`.
  ``RB_ID=870686``

Breaking API Changes
~~~~~~~~~~~~~~~~~~~~

* finagle-core: The constructors for both `c.t.f.netty3.Netty3Listener` and
  `c.t.f.netty3.Netty3Transporter` now take `Stack.Params` instead of
  individual parameters. ``RB_ID=871251``

* finagle-thrift: The c.t.f.thrift.legacy package has been removed which included
  the public types `ThriftCall`, `ThriftReply`, and `ThriftCallFactory`.
  ``RB_ID=873982``

Runtime Behavior Changes
  • finagle-core: Tolerate TraceIds that are greater than 64 bits in preparation of
    moving to 128 bit ids. RB_ID=874365

  • finagle-http: c.t.f.http.service.HttpResponseClassifier.ServerErrorsAsFailures now
    classifies a retryable nack as a ResponseClass.RetryableFailure. RB_ID=869182

  • finagle-http: c.t.f.Http.{Client,Server} is moving towards treating HTTP
    5xx status codes as failures via
    c.t.f.http.service.HttpResponseClassifier.ServerErrorsAsFailures. This can
    be disabled by setting the toggle "com.twitter.finagle.http.serverErrorsAsFailures"
    to 0.0 or explicitly setting it using withResponseClassifier.
    RB_ID=869303, RB_ID=875367

  • finagle-http: c.t.f.http.HttpServerDispatcher now removes the bodies from responses
    to HEAD requests in order to avoid a HTTP protocol error and logs the event at level
    error. Associated with this, the c.t.f.http.filter.HeadFilter will now strip the body
    from a chunked response, but in these cases the Writer associated with the response
    will receive a ReaderDiscarded exception if a write is attempted after the filter has
    run. RB_ID=872106

  • finagle-thrift: Also track response failures in the
    c.t.finagle.thrift.ThriftServiceIface#statsFilter in addition to successful
    responses that encode an Error or Exception. RB_ID=879075

Bug Fixes


* finagle-http: Fix issue in `c.t.finagle.http.RequestBuilder` when the URI host contains
  underscores. ``RB_ID=870978``

* finagle-http: A connection for HTTP/1.0 or non-keep-alive requests is now closed
  gracefully so that all requests that have been issued received responses.
  ``RB_ID=868767``

* finagle-http: The HTTP/1.x server dispatcher no longer clobbers 'Connection: close'
  headers set by a service, resulting in the graceful shutdown of the connection.
  ``RB_ID=880007``

* finagle-netty4: `ChannelTransport` now drains messages before reading more data off the
  transport which should reduce memory pressure in streaming protocols. ``RB_ID=872639``

6.38.0
------

New Features
  • finagle-http: HttpNackFilter now handles both retryable and non-retryable nacks via a new
    header: "finagle-http-nonretryable-nack". These are converted to non-retryable c.t.f.Failures
    and counted by a new counter "nonretryable_nacks". RB_ID=865468

  • finagle-toggle: Is no longer considered experimental. RB_ID=868819

Breaking API Changes


* finagle-kestrel: `c.t.f.kestrel.protocol.ResponseToEncoding` is now private[finagle].
  ``RB_ID=866612``

* finagle-memcached: `c.t.f.memcached.protocol.text.{CommandToEncoding, ResponseToEncoding}`,
  `c.t.f.memcached.protocol.text.client.{AbstractDecodingToResponse, ClientTransport, DecodingToResponse}` are now private[finagle]. ``RB_ID=866612``

* finagle-netty4: Move `numWorkers` flag out of the package object so it gets a
  user friendly name: `c.t.f.netty4.numWorkers` instead of `c.t.f.netty4$.package$.numWorkers`.
  ``RB_ID=123567``

* finagle-core: `c.t.f.netty3.WorkerPool` is no longer visible outside of `c.t.f.netty3`.
  ``RB_ID=123567``

* finagle-core: The `content` parameter of the `ClientSslContext` and
  `ClientSslContextAndHostname` `TlsConfig` options has been renamed to `context`.
  ``RB_ID=868791``

Runtime Behavior Changes
  • finagle-thriftmux: Removed "<server_label>/thriftmux/downgraded_connections" and
    "<server_label>/thriftmux/connections" gauges. Counters are still available at
    "<server_label>/thrifmux/connects" and "<server_label>thriftmux/downgraded_connects".
    RB_ID=867459

v6.37.0

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


* 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

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

  • 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``

6.35.0
------

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``

6.34.0
------

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.

6.33.0
------

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``

* 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`.

6.32.0
------

NOT RELEASED

6.31.0
------

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 denylist
  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
  • 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``

6.30.0
------

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``

6.29.0
------

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.

6.28.0
------

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, th

Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants