Skip to content

Releases: twitter/finagle

Finagle 20.1.0

29 Jan 21:21
Compare
Choose a tag to compare

New Features

  • finagle-memcached: Upgrade to Bijection 0.9.7. de0ec2c6
  • finagle-opencensus-tracing: Enables cross-build for 2.13.0. fee83b10
  • finagle-thriftmux: Add support for automatically negotiating compression between a client
    and server. Off by default, clients and servers must be configured to negotiate.
    d42c87a9
  • finagle-stats: Enables cross-build for 2.13.0. 4144d73c
  • finagle-stats-core: Enables cross-build for 2.13.0. 4144d73c
  • finagle-serversets: Add generic metadata support in ServerSet. Add support for announcing the
    generic metadata via ZkAnnouncer. Add support to resolve the generic metadata via Zk2Resolver
    180bb925

Breaking API Changes

  • finagle-partitioning: ZKMetadata case class has a new default argument breaking API for
    Java users. 180bb925
  • finagle-serversets: Endpoint case class has a new metadata argument. 180bb925

Finagle 19.12.0

13 Dec 16:03
Compare
Choose a tag to compare

New Features

  • finagle-core, finagle-exp: Add annotations to DarkTrafficFilter to identify which span
    is dark, as well as which light span it correlates with. ba351f4d
  • finagle-core: Introduce Trace#traceLocal for creating local spans within a trace context.
    1c6d5d24

Runtime Behavior Changes

  • finagle: Upgrade to jackson 2.9.10 and jackson-databind 2.9.10.1 e333c839
  • finagle-core: Per-method metrics on MethodBuilder are now created lazily, so if you have
    methods that you don't use, the associated metrics won't be exported. 6be5dc48
  • finagle-mysql: The RollbackFactory no longer attempts to roll back if the underlying
    session is closed since it is highly unlikely to succeed. It now simply poisons the
    session and calls close. 99135e00
  • finagle-netty4: Change the 'connection_requests' metric to debug verbosity.
    a6dc1296
  • finagle-serversets: Ensure ZkSession#retrying is resilient to ZK host resolution failure.
    7125026a
  • finagle-thrift: Per-method metrics are now created lazily, so if you have methods on a Thrift
    service that you don't use, the associated metrics won't be exported. 6be5dc48
  • finagle-zipkin-core: Tracing produces microsecond resolution timestamps in JDK9 or later.
    08a926c6
  • finagle-core: Trace#time and Trace#timeFuture no longer generate timestamped annotations or
    silently discard timing information. They now instead generate a BinaryAnnotation containing
    the timing information. In order to also get timestamped Annotations for when the operation
    began and ended, use in conjunction with Trace#traceLocal. 1c6d5d24

Breaking API Changes

  • finagle-core: The RetryPolicy companion object is no longer a JavaSingleton.
    9ffb3d13
  • finagle-thrift: The RichClientParam constructors are now all either
    deprecated, so to construct it, you must call one of the RichClientParam.apply
    methods. 6be5dc48

Deprecations

  • finagle-core: Deprecate Tracing#record(message, duration) as it does not have the intended
    effect and silently discards any duration information in the resulting trace. Instead you should
    use either Tracing#recordBinary or a combination of Trace#traceLocal and Trace#time.
    1c6d5d24

Bug Fixes

  • finagle-core: ClosableService client stack module that prevents the reuse of closed services
    when FactoryToService is not set. This is important for clients making use of the newClient
    api. c64bea09

Finagle 19.11.0

06 Nov 16:18
Compare
Choose a tag to compare

New Features

  • finagle-base-http: The Uri class now provides access publicly to its
    path, which is the request uri without the query parameters.
    f40fe447
  • finagle-mysql: Adding native support to finagle-mysql for MySQL JSON Data Type. A client
    can now use jsonAsObjectOrNull[T] or getJsonAsObject[T] APIs on c.t.f.mysql.Row to
    read the underlying json value as type T or use jsonBytesOrNull API to get a raw byte
    array of the the json column value. 4d403051
  • MySQL integration tests can now run on a port other than the default (3306). Add a port
    property to .finagle-mysql/integration-test.properties to customize the value.
    4d403051

Runtime Behavior Changes

  • finagle: Upgrade to Netty 4.1.43.Final and netty-tcnative 2.0.26.Final. cfaaa471
  • finagle: Add initial support for JDK 11 compatibility. 04def84b
  • finagle: Upgrade to caffeine 2.8.0 c335b29e
  • finagle-http2: Nacks in the form of RST(STREAM_REFUSED | ENHANCE_YOUR_CALM) no
    longer surface as a RstException, instead opting for a generic Failure to be
    symmetric with the HTTP/1.x nack behavior. cb67fa33
  • finagle-mux: The mux handshake latency stat has be changed to Debug
    verbosity. 0eb2cfb6
  • finagle-serversets: finagle/serverset2/stabilizer/notify_ms histogram has been downgraded to
    debug verbosity. 30d3d0ea

Breaking API Changes

  • finagle-base-http: c.t.f.http.codec.HttpContext moved into c.t.f.http.codec.context.HttpContext
    cc29b265

Finagle 19.10.0

09 Oct 22:21
Compare
Choose a tag to compare

New Features

  • finagle-partition: Enables cross-build for 2.13.0. 89f06885
  • finagle-exception: Enables cross-build for 2.13.0. d90ae646
  • finagle-exp: Enables cross-build for 2.13.0. 32bc9f48
  • finagle-mysql: Enables cross-build for 2.13.0. ef31c99b
  • finagle-{mux,thrift,thrift-mux}: Enables cross-build for 2.13.0. 47ee31fd
  • finagle-redis: Enables cross-build for 2.13.0. d90ae646
  • finagle-tunable: Enables cross-build for 2.13.0. 69ded534
  • finagle-grpc-context: Enables cross-build for 2.13.0. 65963f58
  • finagle-thrift: Pass a factory to create a TReusableBuffer as the parameter of a finagle client
    to allow multiple clients share one TReusableBuffer. 05b2ec71

Runtime Behavior Changes

  • finagle-base-http: Better performance for the default HeaderMap.add method for headers with
    the same name. 1fab9386
  • finagle-http2: H2ServerFilter will no longer swallow exceptions that fire via
    exceptionCaught in the Netty pipeline. 12621ff8
  • finagle-http: Remove legacy HTTP/2 client implementation and make the MultiplexHandler-based
    implementation the default HTTP/2. b6d0aa19

Breaking API Changes

  • finagle-core: c.t.f.l.FailureAccrualFactory's didMarkDead() changed to didMarkDead(Duration).
    The Duration is the length of time the endpoint is marked dead. fe2f43a3

Bug Fixes

  • finagle-mux: Mux now properly propagates Ignorable failures multiple levels for superseded
    backup requests. This allows for more accurate success rate metrics for downstream services,
    when using backup requests.
    21b181e8

Finagle 19.9.0

10 Sep 23:43
Compare
Choose a tag to compare

New Features

  • finagle-{core,init,toggle,netty4}: Enables cross-build for 2.13.0. f21a54e0
  • finagle-base-http: Add None as a valid SameSite header value. 0c43561a

Breaking API Changes

  • finagle-core: The constructor on c.t.f.filter.NackAdmissionFilter used for testing that
    took an Ema.Monotime has been removed. 38fae802
  • finagle-core: The Adddress.ServiceFactory variant has been promoted from experimental
    status and moved to be properly part of c.t.f.Address. 68cf34b8
  • finagle-http: improve performance of c.t.f.http.filter.StatsFilter. This results in two notable
    API changes: 1. There is a private[filter] constructor which can take a () => Long for
    determining the current time in milliseconds (the existing StatsFilter(StatsReceiver)
    constructor defaults to using Stopwatch.systemMillis for determining the current time in
    milliseconds. 2. The protected count(Duration, Response) method has been changed to
    private[this] count(Long, Response) and is no longer part of the public API.
    f6ce4529
  • finagle-partitioning: the hash-based routing that memcached uses has been relocated to a new
    top-level module so that it can be used more broadly across protocols. This results
    in several classes moving to the c.t.f.partitioning package: 1. The Memcached.param.EjectFailedHost, KeyHasher, and NumReps parameters are now
    available under c.t.f.partitioning.param 2. The FailureAccrualException and CacheNode definitions are now in the c.t.f.paritioning
    package. 3. The ZkMetadata class has moved to c.t.f.p.zk and the finagle-serverset module now depends
    on finagle-partitioning.
    f27073dc

Runtime Behavior Changes

  • finagle-http: c.t.f.http.service.NotFoundService has been changed to no longer
    use Request.response. Use of Request.response is deprecated and discouraged.
    acac9c38
  • finagle-mysql: Handshaking for the MySQL 'Connection Phase' now occurs as part of session
    acquisition. As part of this change, the
    com.twitter.finagle.mysql.IncludeHandshakeInServiceAcquisition toggle
    has been removed and it no longer applies. cd4877c1
  • finagle: Upgrade to Netty 4.1.39.Final. 001b0940
  • finagle-http: Enable Ping Failure Detection for MultiplexHandler based HTTP/2 clients. Note that
    the Ping Failure Detection implementation has been removed completely from the
    non-MultiplexHandler based HTTP/2 client. 8af32742
  • finagle: Added a dependency on Scala Collections Compat 2.1.2. f21a54e0

Bug Fixes

  • finagle-base-http: Removes the Cookie header of a c.t.f.http.Message whenever its cookie map
    becomes empty. f9b76a0f

Finagle 19.8.0

06 Aug 07:14
Compare
Choose a tag to compare

Breaking API Changes

  • finagle-core: The contents of the c.t.f.dispatch.GenSerialClientDispatcher object have been
    moved to the new c.t.f.dispatch.ClientDispatcher object. The stats receiver free constructors
    of GenSerialClientDispatcher and SerialClientDispatcher have been removed.
    4b0493c6
  • finagle-thrift: The deprecated ReqRepThriftServiceBuilder object has been
    removed. Users should migrate to ReqRepMethodPerEndpointBuilder. f1c4d589

Runtime Behavior Changes

  • finagle-core: Failed reads on Linux due to a remote peer disconnecting should now be properly
    seen as c.t.f.ChannelClosedException instead of a c.t.f.UnknownChannelException.
    b06fab3e
  • finagle: Upgrade to Jackson 2.9.9. 464ae751
  • finagle: Upgrade to Netty 4.1.38.Final. 23532f19

Finagle 19.7.0

18 Jul 13:54
Compare
Choose a tag to compare

New Features

  • finagle-http: Measure streaming (message.isChunked) chunk payload size with two new histograms:
    stream/request/chunk_payload_bytes and stream/response/chunk_payload_bytes, they are
    published with a debug verbosity level. These chunk payload sizes are also traced via the same
    trace keys. 11f4e32

  • finagle-base-http: Add support for new "b3" tracing header. 8721837

  • finagle-core: Allow to not bypass SOCKS proxy for localhost by using the GlobalFlag
    -com.twitter.finagle.socks.socksProxyForLocalhost 5521bc8

  • finagle-core: OffloadFilter flag to reduce network contention. 2bd4d61

  • finagle-exp: Add private c.t.f.exp.ConcurrencyLimitFilter for rejecting requests
    that exceed estimated concurrency limit e331491

Runtime Behavior Changes

  • finagle-http: c.t.f.http.Cors has been changed to no longer use the c.t.f.http.Response
    associated with the passed in c.t.f.http.Request. 455718a

  • finagle-http: c.t.f.http.filter.ExceptionFilter has been changed to no longer
    use the c.t.f.http.Response associated with the passed in. 54d4acf

  • finagle-http: Optimize creation of new Http Dispatchers by re-using created metrics and loggers.
    9156f0f

Breaking API Changes

  • finagle-base-http: Removed the methods setStatusCode and getStatusCode from
    c.t.f.http.Response which have been deprecated since 2017. 20b37b0

  • finagle-core: All deprecated c.t.f.builder.ServerBuilder#build methods have
    been removed. Users should migrate to using the build method which takes a
    ServiceFactory[Req, Rep] as a parameter. 7ae208d

  • finagle-core: The c.t.f.ssl.client.SslClientEngineFactory#getHostname method has been removed.
    All uses should be changed to use the getHostString method of SslClientEngineFactory instead.

  • finagle-http: The setOriginAndCredentials, setMaxAge, setMethod, and setHeaders methods
    of c.t.f.http.Cors.HttpFilter are no longer overridable. 455718a

  • finagle-http: The details of the c.t.f.Http.HttpImpl class are meant to be implementation
    details so the class constructor was made private along with the fields. Along these same lines
    the c.t.f.Http.H2ClientImpl.transporter method has been moved to a private location.
    1338e50

Bug Fixes

  • finagle-core: Ensure ClientDispatcher queueSize gauge is removed on transport
    close, instead of waiting for clean-up at GC time. 963e9b8

  • finagle-http2: Don't propagate stream dependency information for the H2 client.
    a2e6c0b

Finagle 19.6.0

19 Jun 21:22
Compare
Choose a tag to compare

New Features

  • finagle-core: SSL/TLS session information has been added to c.t.f.ClientConnection.
    69a28c10
  • finagle-core: Add a Stack Module with 7 parameters for convenience sake. 6f9d7f0d
  • finagle-core: For both, servers and clients, introduce a way to shift application-level future
    callbacks off of IO threads, into a given FuturePool or ExecutorService.
    Use withExecutionOffloaded configuration method (on a client or a server) to access
    new functionality. 40431bb4
  • finagle-http: Added counters for request/response stream as: stream/request/closed,
    stream/request/failures, stream/request/failures/<exception_name>, stream/request/opened,
    stream/request/pending and stream/response/closed, stream/response/failures,
    stream/response/failures/<exception_name>, stream/response/opened, stream/response/pending.
    The counters will be populated when isChunked is set to true, the failures counters will be
    populated when isChunked is set to true and the stream fails before it has been fully read in the
    request and response respectively. d9b69bdc
  • finagle-http: Add two new API variants in CookieMap: addAll and removeAll that allow for
    adding and removing cookies in bulk, without triggering a header rewrite on each item.
    4127cf6d
  • finagle-mysql: finagle-mysql now supports using SSL/TLS with MySQL. SSL/TLS can be turned on by
    calling withTransport.tls(sslClientConfiguration) with a specified
    c.t.f.ssl.client.SslClientConfiguration. 0b6c20ac

Runtime Behavior Changes

  • finagle: Upgrade to Netty 4.1.35.Final and netty-tcnative 2.0.25.Final.
    9ffbf7a7
  • finagle-core: The default failure accrual policy has been changed from one
    which uses only consecutive failures to a hybrid model which uses both
    success rate over a window and consecutive failures. Previously this was
    changeable via toggle. The toggle has been removed, and the hybrid version
    has been made the default. 6f85c56e
  • finagle-http: Rename request_stream_duration_ms to stream/request/duration_ms and
    response_stream_duration_ms to stream/response/duration_ms. The stats will be
    populated when isChunked is set to true in the request and response respectively.
    d9b69bdc
  • finagle-http2: Disable ping-based failure detector in HTTP/2 client as it seems to do
    more harm than good. ea5b0c77
  • finagle-http2: Frame logging is now disabled by default for clients. To enable,
    use the c.t.f.http2.param.FrameLogging.Enabled Stack Param. For example:
    Http.client.configured(FrameLogging.Enabled). 0b2ec201
  • finagle-netty4: When using a Netty LocalChannel, the value of the BackPressure
    stack param is effectively changed to backPressureDisabled so that other functionality
    (e.g. SSL/TLS) works as expected. 3a8e5c19
  • finagle-netty4: finagle/netty/pooling/used now includes the size of the buffers in the
    thread-local caches. 824596f0
  • finagle-core: Stats and retry modules use a ResponseClassifier to give hints
    for how to handle failure (e.g., Is this a success or is it a failure? If
    it's a failure, may I retry the request?). The stats module increments a
    success counter for successes, and increments a failure counter for failures.
    But there isn't a way to tell the stats module to just do nothing. And, this
    is exactly what the stats module should do (nothing) in the case of ignorable
    failures (e.g. backup request cancellations). To represent these cases, we
    introduce a new ResponseClass: Ignorable. 256b79b8

Bug Fixes

  • finagle-core: UsingSslSessionInfo would fail to be constructed properly when
    SSLSession.getLocalCertificates returns 'null'. 8d984963
  • finagle-http: Finagle now properly sets the Transport.peerCertificate local context
    when using HTTP/2. a661fef4
  • finagle-http: c.t.f.http.collection.RecordSchema.Record is now thread-safe.
    4e343f0e
  • finagle-zipkin-core: Fix a race condition which could cause a span to get logged
    missing some annotations. 53901a28
  • finagle-mysql: Don't log c.t.f.ChannelClosedException when rolling back a transaction
    fails. 29cfffe6

Breaking API Changes

  • finagle-core: The exceptions c.t.f.SslHandshakeException and
    c.t.f.SslHostVerificationException were no longer used and have
    been removed. 2a53531d
  • finagle-mysql: The structure of c.t.f.mysql.Request has changed. It is now based on
    a higher level c.t.f.mysql.ProtocolMessage and the cmd field must contain a value.
    Additionally, the synthetic Command.COM_NO_OP has been removed, as due to the
    restructuring it was no longer necessary. d6e4042f
  • finagle-mysql: Uses of the abbreivation 'cap' have been renamed to the full
    word: 'capabilities', including for the baseCapabilities of Capability.
    4c57afda

Deprecations

  • finagle-http: Removed deprecated response_size in Finagle Http stats. This is a duplicate stat
    of response_payload_bytes. 1286c438

Finagle 19.5.1

21 May 18:17
Compare
Choose a tag to compare

No Changes

Finagle 19.5.0

17 May 21:51
Compare
Choose a tag to compare

New Features

  • finagle-http: Add two new methods to com.twitter.finagle.http.MediaType,
    MediaType#typeEquals for checking if two media types have the same type and
    subtype, ignoring their charset, and MediaType#addUtf8Charset for easily
    setting a utf-8 charset. ec0953f1

Bug Fixes

  • finagle-http: Ensure server returns 400 Bad Request when
    non-ASCII characters are present in the HTTP request URI path. a7dae7ea

Runtime Behavior Changes

  • finagle-core: Deterministic aperture (d-aperture) load balancers no longer export
    "loadband" scoped metrics: "widen", "narrow", "offered_load_ema". These were not
    necessary as d-aperture does not change the aperture size at runtime. 20029ac5
  • finagle-core: Request logging now defaults to disabled. Enable it by configuring the
    RequestLogger Stack parameter on your Client or Server. ee9cb4ec
  • finagle-core: Subtree binding failures in NameTree.Union's are ignored in the
    final binding result. 2fde4d2d

Breaking API Changes

  • finagle-core: The c.t.f.client.EndpointerModule and c.t.f.pushsession.PushStackClient public
    and protected APIs have been changed to use the abstract java.net.SocketAddress instead of the
    concrete java.net.InetSocketAddress as relying on the concrete implementation was not
    necessary. 77a3cdfd
  • finagle-http: For Finagle HTTP clients, the withMaxRequestSize(size) API
    method has been removed. For Finagle HTTP servers, the
    withMaxResponseSize(size) method has been removed. The underlying Stack
    params which are set by these methods are respectively HTTP server and HTTP
    client side params only. Using these removed methods had no effect on the
    setup of Finagle HTTP clients and servers. 5eb3ae24
  • finagle-mysql: HandshakeResponse has been removed from finagle-mysql's public
    API. It is expected that users of the library are relying entirely on
    finagle-mysql for handshaking. f0ab09a6