Skip to content

Releases: twitter/finagle

Finagle 18.7.0

11 Jul 17:12
Compare
Choose a tag to compare

New Features

  • finagle-core: There is now an implicit instance for Finagle's default timer:
    DefaultTimer.Implicit. 64963bd8

  • finagle-core: Introduce new command-line flag c.t.f.tracing.enabled to entirely
    disable/enable tracing for a given process (default: true). 5a5ceb63

  • finagle-mysql: com.twitter.util.Time can now be used with
    PreparedStatements without converting the ctu.Time to a java.sql.Timestamp.
    bbca48c7

  • finagle-stats: Adds a lint rule to detect when metrics with colliding names are used.
    26a2c3bd

Breaking API Changes

  • finagle-core: c.t.f.dispatch.ClientDispatcher.wrapWriteException has been turned from a
    partial function instance into a static total function. 9a3c9070

  • finagle-mux: ClientDiscardedRequestException now extends FailureFlags and is no longer
    a case class. fe8c6496

Runtime Behavior Changes

  • finagle-core: Server-side rejections from c.t.f.filter.RequestSempahoreFilter.module are now
    captured by c.t.f.service.StatsFilter. They will roll up under "/failures",
    "/failures/rejected", and "/failures/restartable" in stats. 3b755c8a

  • finagle-core: c.t.f.tracing.Trace.tracers now returns only distinct tracers stored in
    the local context (returned all tracers before). b96bb137

  • finagle-http: HTTP param decoding is no longer truncated to 1024 params.
    24662bea

  • finagle-mux: When mux propagates an interrupt started by BackupRequestFilter over the
    network, the FailureFlags.Ignorable status is propagated with it. fe8c6496

Finagle 18.6.0

15 Jun 03:44
Compare
Choose a tag to compare

Runtime Behavior Changes

  • finagle-core: By default, the deterministic aperture load balancer doesn't expand
    based on the loadband. This is because the loadband is influenced by a degree of
    randomness, and this breaks the deterministic part of deterministic aperture and
    can lead to aggressive banding on backends. 3d84e297

  • finagle-http2: Unprocessed streams are retryable in case of GOAWAY.
    2c89cb9e

New Features

  • finagle-core: Add PropagateDeadlines Stack.Param to TimeoutFilter for
    disabling propagation of deadlines to outbound requests.
    8041fbb9

  • finagle-core: Add toString implementations to c.t.finagle.Service and
    c.t.finagle.Filter. Update in Filter#andThen composition to expose a
    useful toString for composed Filters and a composed Service (a Filter chain
    with a terminal Service or ServiceFactory).

    The default implementation for Filter and Service is getClass.getName. When
    composing filters, the andThen composition method correctly tracks the composed
    parts to produce a useful toString, e.g.,

  package com.foo

  import com.twitter.finagle.{Filter, Service}
  import com.twitter.util.Future

  class MyFilter1 extends Filter[Int, Int, Int, Int] {
     def apply(request: Int, service: Service[Int, Int]): Future[Int] = ???
  }

  ...

  package com.foo

  import com.twitter.finagle.{Filter, Service}
  import com.twitter.util.Future

  class MyFilter2 extends Filter[Int, Int, Int, Int] {
    def apply(request: Int, service: Service[Int, Int]): Future[Int] = ???
  }

  val filters = (new MyFilter1).andThen(new MyFilter2)

filters.toString would emit the String "com.foo.MyFilter1.andThen(com.foo.MyFilter2)"

If a Service (or ServiceFactory) were then added:

  import com.twitter.finagle.{Filter, Service}
  import com.twitter.finagle.service.ConstantService
  import com.twitter.util.Future

  ...

  val svc: Service[Int, Int] = filters.andThen(new ConstantService[Int, Int](Future.value(2)))

Then, svc.toString would thus return the String:
"com.foo.MyFilter1.andThen(com.foo.MyFilter2).andThen(com.twitter.finagle.service.ConstantService(ConstFuture(2)))"

Filter implementations are permitted to override their toString implementations which would
replace the default of getClass.getName. 25474da1

  • finagle-core: Make Filter.TypeAgnostic an abstract class for Java usability.
    6534e459

  • finagle-core: c.t.f.filter.NackAdmissionFilter is now public. 1855566d

  • finagle-core: Extended c.t.f.ssl.KeyCredentials and c.t.f.ssl.TrustCredentials to work
    with javax.net.ssl.KeyManagerFactory and javax.net.ssl.TrustManagerFactory respectively.
    c863ca0b

Breaking API Changes

  • finagle-core: Rename DeadlineFilter.Param(maxRejectFraction) to
    DeadlineFilter.MaxRejectFraction(maxRejectFraction) to reduce confusion
    when adding additional params.
    cb6975af

Bug Fixes

  • finagle-http2: StreamTransportFactory now marks itself as dead/closed when it runs out of
    HTTP/2 stream IDs instead of stalling. This allows the connection to be closed/reestablished in
    accordance with the spec c5554673

  • finagle-netty4: SslServerSessionVerifier is now supplied with the proper peer address
    rather than Address.failing. 263e9786

  • finagle-thrift/thriftmux: Disabled client side per-endpoint stats by default for client
    ServicePerEndpoint. It can be set via c.t.f.thrift.RichClientParam or a with-method
    as Thrift{Mux}.client.withPerEndpointStats. 0f1ff3eb

  • finagle-netty4: Avoid NoClassDefFoundError if netty-transport-native-epoll is not available
    on the classpath. 940809af

Finagle 18.5.0

08 May 21:21
Compare
Choose a tag to compare

New Features

  • finagle-base-http: Added ability to add SameSite attribute to Cookies to
    comply with https://tools.ietf.org/html/draft-west-first-party-cookies-07.
    The attribute may be set in the constructor via the c.t.f.http.Cookie
    sameSite param or via the c.t.f.http.Cookie.sameSite method.

    • Pass SameSite.Lax to the Cookie to add the "Lax" attribute.
    • Pass SameSite.Strict to the Cookie to add the "Strict" attribute.
      4b0a58b0
  • finagle-base-http: Introduced an API to extract query string params from a
    c.t.f.http.Request, c.t.f.http.Uri.fromRequest and c.t.f.http.Uri#params.
    0dd0a425

  • finagle-mysql: Added APIs to Row which simplify the common access pattern.
    For example, Row.stringOrNull(columnName: String): String and
    Row.getString(columnName: String): Option[String].
    f3676d31, f3676d31

  • finagle-mysql: Added read and modify APIs to c.t.f.mysql.Client and
    c.t.f.mysql.PreparedStatement for that return the specific type of
    Result for those operations, ResultSet and OK respectively.
    2f3650cf

  • finagle-serversets: Zk2Session's AsyncSemaphore which controls the maximum
    concurrent Zk operations is configurable (GlobalFlag c.t.f.serverset2.zkConcurrentOperations).
    [3160a815](https://github.com/twitter/finagle/commit/3160a815c2552773a67d834841b029dca5ba0122)

  • finagle-mysql: Address CursoredStatement usability from Java via
    CursoredStatement.asJava(). Through this, you can use the API with
    varargs and Java 8 lambdas. f67978aa

  • finagle-toggle: Improved Java compatiblity for ToggleMap and Toggle. 16dbe170

  • finagle-toggle: StandardToggleMap.apply and StandardToggleMap.registeredLibraries now
    use ToggleMap.Mutable to better support mutating the underlying mutable ToggleMap.
    8b136a22

Breaking API Changes

  • finagle-mux: With the introduction of the push-based mux client, we've
    removed the need for the optimized c.t.f.Mux.Netty4RefCountingControl
    MuxImpl, which has been removed. 35980463

  • finagle-mysql: c.t.f.mysql.Client.ping now returns a Future[Unit]
    instead of the broad Future[Result] ADT. 2f3650cf

  • finagle-toggle: Changed ToggleMap.Mutable from a trait to an abstract class, and
    ToggleMap.Proxy no longer extends ToggleMap, but now has a self-type that conforms to
    ToggleMap instead. 16dbe170

Runtime Behavior Changes

  • finagle-core: Add c.t.f.SslException to better model exceptions related to SSL/TLS.
    The c.t.f.ChannelException.apply method will now wrap javax.net.ssl.SSLExceptions in
    c.t.f.SslException. 955a0b3e

  • finagle-core: MethodBuilder metrics now include failures.
    f58ab46f, f58ab46f

  • finagle-http: ServerAdmissionControl is circumvented for HTTP requests that have
    a body unless the request contains the header 'finagle-http-retryable-request' since
    it cannot be known whether the client can actually retry them, potentially resulting
    in depressed success rates during periods of throttling. 4377f02a

  • finagle-http2: Clients and servers no longer attempt a cleartext upgrade if the
    first request of the HTTP/1.1 session has a body. bf09dd4c

  • finagle-thriftmux: The push-based client muxer is now the default muxer implementation.
    The push-based muxer has better performance and a simpler architecture. cc333151

  • finagle-toggle: ToggleMap.Proxy#underlying is now public, and ToggleMap.Proxy
    participates in ToggleMap.components. 8b136a22

Bug Fixes

  • finagle-base-http: Concurrent modification of the c.t.f.http.DefaultHeaderMap could
    result in an infinite loop due to HashMap corruption. Access is now synchronized to avoid
    the infinite loop. aa73d24d

  • finagle-core: FailureFlags that have their flags set modified will now
    retain the original stack trace, suppressed Throwables, and cause when possible.
    f4543472

  • finagle-memcached: Added the missing support for partial success for the batch
    operations in the new PartitioningService based Memcached client. 970af633

  • finagle-thrift: Removed copied libthrift files. 9deb18b4

  • finagle-thrift/thriftmux: Server side per-endpoint statsFilter by default is disabled now.
    It can be set via c.t.f.thrift.RichServerParam or a with-method as
    Thrift{Mux}.server.withPerEndpointStats. 7b0281c5

Finagle 18.4.0

10 Apr 23:19
Compare
Choose a tag to compare

New Features

  • finagle-core: c.t.f.filter.NackAdmissionFilter can now be disabled via a with-method.
    $Protocol.client.withAdmissionControl.noNackAdmissionControl 323a20f4

  • finagle-mysql: Exceptions now include the SQL that was being executed when possible.
    5a54f45d

  • finagle-mysql: Address PreparedStatement usability from Java via
    PreparedStatement.asJava(). Through this, you can use the API with
    varargs and Java 8 lambdas. c5bd6b97

  • finagle-mysql: Added support for Option\s to Parameter implicits. This
    allows for the natural represention of nullable columns with an Option
    where a None is treated as a null. 48f688d1

  • finagle-netty4: Add 'tls/connections' gauge for Finagle on Netty 4 which tracks the number
    of open SSL/TLS connections per Finagle client or server.
    911a01ce

  • finagle-redis: Support has been added for a number of new cluster commands
    introduced in Redis 3.0.0. 86b151bf

Bug Fixes

  • finagle-mysql: Fix handling of interrupts during transactions. 1b9111eb

Breaking API Changes

  • finagle-core: c.t.f.ssl.client.HostnameVerifier has been removed since it was using
    sun.security.util.HostnameChecker which is no longer accessible in JDK 9.
    1313d9ba

  • finagle-thrift: Upgraded libthrift to 0.10.0, c.t.f.thrift.Protocols.TFinagleBinaryProtocol
    constructor now takes stringLengthLimit and containerLengthLimit, NO_LENGTH_LIMIT value
    changed from 0 to -1. 61c7a711

  • finagle-thrift: Move "stateless" methods in c.t.finagle.thrift.ThriftRichClient
    to c.t.finagle.thrift.ThriftClient. Then mix the ThriftClient trait into the
    ThriftMux and Thrift Client companions to make it clearer that these stateless methods
    are not affected by the changing state of the configured client instance but are instead
    simply utility methods which convert or wrap the incoming argument. 7a175a98

  • finagle-base-http: Removed deprecated c.t.f.Cookie.value_=; use c.t.f.Cookie.value
    instead. 4bdd261b

  • finagle-base-http: Removed deprecated c.t.f.Cookie.domain_=; use c.t.f.Cookie.domain
    instead. 4bdd261b

  • finagle-base-http: Removed deprecated c.t.f.Cookie.path_=; use c.t.f.Cookie.path
    instead. 4bdd261b

Runtime Behavior Changes

  • finagle-core: Add minimum request threshold for successRateWithinDuration failure accrual.
    b6caf3dd

  • finagle-core: c.t.f.filter.NackAdmissionFilter no longer takes effect when
    the client's request rate is too low to accurately update the EMA value or
    drop requests. 387d87d4

  • finagle-core: SSL/TLS client hostname verification is no longer performed by
    c.t.f.ssl.client.HostnameVerifier. The same underlying library
    sun.security.util.HostnameChecker is used to perform the hostname verification.
    However it now occurs before the SSL/TLS handshake has been completed, and the
    exception on failure has changes from a c.t.f.SslHostVerificationException to a
    javax.net.ssl.CertificateException. 1313d9ba

  • finagle-core: Closing c.t.f.NullServer is now a no-op. 36aac62c

  • finagle-netty4: Netty ByteBuf leak tracking is enabled by default. 24690b13

Deprecations

  • finagle-thrift: System property "-Dorg.apache.thrift.readLength" is deprecated. Use
    constructors to set read length limit for TBinaryProtocol.Factory and TCompactProtocol.Factory.
    61c7a711

Finagle 18.3.0

06 Mar 22:59
Compare
Choose a tag to compare

New Features

  • finagle-core: c.t.f.client.BackupRequestFilter.filterService for wrapping raw services in a
    c.t.f.client.BackupRequestFilter is now public. b227d988

  • finagle-core: Introduce c.t.f.Stacks.EMPTY_PARAMS for getting an empty Param map from
    Java, and c.t.f.Stack.Params.plus for easily adding Params to a Param map from Java.
    43e0f007

Bug Fixes

  • finagle-core: c.t.f.liveness.FailureAccrualFactory takes no action on c.t.f.Failure.Ignorable
    responses. 512894cf

  • finagle-core: c.t.f.pool.WatermarkPool is resilient to multiple closes on a service instance.
    37c29e9e

  • finagle-core: c.t.f.pool.CachingPool service wrapper instances are resilient to multiple closes.
    ce779ec7

  • finagle-core: Requeue module now closes sessions it prevented from propagating up the stack.
    f5cdda14

  • finagle-base-http: c.t.f.http.Netty4CookieCodec.encode now wraps Cookie values that would
    be wrapped in c.t.f.http.Netty3CookieCodec.encode. 78fdc9aa

  • finagle-base-http: c.t.f.http.Cookie.maxAge returns c.t.f.http.Cookie.DefaultMaxAge
    (instead of null) if maxAge has been set to null or None in the copy constructor
    17a32d44.

  • finagle-http: The HTTP client will not attempt to retry nacked requests with streaming
    bodies since it is likely that at least part of the body was already consumed and therefore
    it isn't safe to retry. a787955b

Breaking API Changes

  • finagle-base-http: Removed c.t.f.http.Cookie.comment_, c.t.f.http.Cookie.comment_=,
    c.t.f.http.Cookie.commentUrl_, and c.t.f.http.Cookie.commentUrl_=. comment and commentUrl
    per RFC-6265. NOT FOUND: D137538

  • finagle-base-http: Removed deprecated c.t.f.http.Cookie.isDiscard and
    c.t.f.http.Cookie.isDiscard_=, per RFC-6265. 0e03b630

  • finagle-base-http: Removed deprecated c.t.f.http.Cookie.ports and
    c.t.f.http.Cookie.ports_=, per RFC-6265. 0469f5b1

  • finagle-base-http: c.t.f.http.RequestBuilder has been moved to the finagle-http target
    and the implicit evidence, RequestConfig.Yes has been renamed to RequestBuilder.Valid.
    1632856c

  • finagle-base-http: Removed deprecated c.t.f.Cookie.isSecure; use c.t.f.Cookie.secure
    instead. Removed deprecated c.t.f.Cookie.isSecure_=. 33d75b95

  • finagle-base-http: Removed deprecated c.t.f.http.Cookie.version and
    c.t.f.http.Cookie.version_=, per RFC-6265. 6c9020cc

  • finagle-core: c.t.f.pool.WatermarkPool was finalized. 37c29e9e

  • finagle-core: c.t.finagle.ssl.Ssl and related classes have been
    removed. They were replaced as the primary way of using SSL/TLS
    within Finagle in release 6.44.0 (April 2017). Please migrate to using
    c.t.f.ssl.client.SslClientEngineFactory or
    c.t.f.ssl.server.SslServerEngineFactory instead. d10a42b8

  • finagle-core: Removed newSslEngine and newFinagleSslEngine from
    ServerBuilder. Please implement a class which extends
    c.t.f.ssl.server.SslServerEngineFactory with the previously passed in
    function used as the implementation of the apply method. Then use the
    created engine factory with one of the tls methods instead.
    d10a42b8

  • finagle-core: The deprecated c.t.f.loadbalancer.DefaultBalancerFactory has been removed.
    f6971d76

  • finagle-exp: The deprecated c.t.f.exp.BackupRequestFilter has been removed. Please use
    c.t.f.client.BackupRequestFilter instead. 350d8821

  • finagle-http: Removed the c.t.f.Http.Netty3Impl. Netty4 is now the only
    underlying HTTP implementation available. ef9fedb1

  • finagle-zipkin-scribe: Renamed the finagle-zipkin module to finagle-zipkin-scribe, to
    better advertise that this is just the scribe implementation, instead of the default.
    c23ef398

Finagle 18.2.0

06 Feb 03:39
Compare
Choose a tag to compare

New Features

  • finagle-core: Add orElse to allow composition of FailureAccrualPolicys.
    8c1e718e

  • finagle-core: c.t.f.http.MethodBuilder now exposes a method newService without a
    methodName to create a client. c.t.f.thriftmux.MethodBuilder now exposes a
    method servicePerEndpoint without a methodName to create a client. d8e010d6

  • finagle-thriftmux: Expose the underlying configured client label in the
    c.t.finagle.thriftmux.MethodBuilder. 653e2696

Bug Fixes

  • finagle-http2: http2 servers no longer leak ping bodies. 02841dfd

Deprecations

  • finagle-core: c.t.finagle.ssl.Ssl and related classes have been
    deprecated. They were replaced as the primary way of using SSL/TLS
    within Finagle in release 6.44.0 (April 2017). Please migrate to using
    c.t.f.ssl.client.SslClientEngineFactory or
    c.t.f.ssl.server.SslServerEngineFactory instead. 0b8a2890

Breaking API Changes

  • finagle-base-http: c.t.f.h.codec.HttpCodec has been moved to the finagle-http
    project. 350953ae

  • finagle base-http: c.t.f.h.Request.multipart has been removed.
    Use c.t.f.h.exp.MultipartDecoder instead. b9d71e36

  • finagle-http: Split the toggle 'c.t.f.h.UseH2C' into a client-side toggle and a
    server-side toggle, named 'c.t.f.h.UseH2CClients', and 'c.t.f.h.UseH2CServers',
    respectively. 0d960398

Runtime Behavior Changes

  • finagle-core: Finagle clients with retry budgets or backoffs should no
    longer have infinite hash codes. 88e7bea9

Finagle 18.1.0

18 Jan 01:13
Compare
Choose a tag to compare

New Features

  • finagle-core: FailureDetector has a new method, onClose, which provides
    a Future that is satisfied when the FailureDetector marks a peer as Closed.
    PHAB_ID=D126840

  • finagle-core: Introduce trace logging of requests as they flow through a
    Finagle client or server. These logs can be turned on at runtime by setting
    the "com.twitter.finagle.request.Logger" logger to trace level.
    PHAB_ID=D124352

  • finagle-http2: HTTP/2 clients now expose the number of currently opened streams under
    the $client/streams gauge. PHAB_ID=D127238

  • finagle-http2: HTTP/2 servers now expose the number of currently opened streams under
    the $server/streams gauge. PHAB_ID=D127667

  • finagle-memcached: By default, the Memcached client now creates two connections
    to each endpoint, instead of 4. PHAB_ID=D119619

  • finagle-redis: Add support for redis Geo Commands. PHAB_ID=D123167 based on the PR
    #628 written by Mura-Mi [https://github.com/Mura-Mi]

  • finagle-thrift: Add c.t.f.thrift.service.ThriftServiceBuilder and
    c.t.f.thrift.service.ReqRepThriftServiceBuilder for backwards compatibility
    of creating higher-kinded method-per-endpoint clients. PHAB_ID=D127538

  • finagle-core: c.t.f.http.MethodBuilder and c.t.f.thriftmux.MethodBuilder now
    expose idempotent and nonIdempotent methods, which can be used to configure
    retries and the sending of backup requests. PHAB_ID=D122087

Bug Fixes

  • finagle-mysql: Fix a bug with transactions where an exception during a rollback
    could leave the connection with a partially committed transaction. PHAB_ID=D122771

  • finagle-toggle: c.t.f.toggle.Toggles are independent; that is, applying the same value to
    two different toggles with the same fraction will produce independent true/false
    values. PHAB_ID=D128172

Runtime Behavior Changes

  • finagle-core, finagle-netty4: When creating engines, SslClientEngineFactories now use
    SslClientEngineFactory.getHostString instead of SslClientEngineFactory.getHostname.
    This no longer performs an unnecessary reverse lookup when a hostname is not supplied
    as part of the SslClientConfiguration. PHAB_ID=D124369

  • finagle-http2: Supplies a dependency on io.netty.netty-tcnative-boringssl-static,
    which adds support for ALPN, which is necessary for encrypted http/2. To use a
    different static ssl dependency, exclude the tcnative-boringssl dependency and
    manually depend on the one you want to use. PHAB_ID=D119555

Breaking API Changes

  • finagle-base-http, finagle-http: Removed Apache Commons Lang dependency,
    org.apache.commons.lang3.time.FastDateFormat now is java.time.format.DateTimeFormatter.
    PHAB_ID=D121479

  • finagle-base-http: c.t.f.http.Message.headerMap is now an abstract method.
    PHAB_ID=D120931

  • finagle-core: c.t.f.ssl.server.SslServerSessionVerifier no longer uses the unauthenticated
    host information from SSLSession. PHAB_ID=D124815

  • finagle-memcached: ConcurrentLoadBalancerFactory was removed and its behavior
    was replaced by a Stack.Param inside finagle-core's LoadBalancerFactory.
    PHAB_ID=D119394

  • finagle-thrift, finagle-thriftmux: Remove ReqRep specific methods. Since the "ReqRep"
    builders are now subclasses of their non-"ReqRep" counterparts their is no longer a
    need to expose "ReqRep" specific methods. PHAB_ID=D123341

Deprecations

  • finagle-exp: c.t.f.exp.BackupRequestFilter has been deprecated. Please use
    c.t.f.client.BackupRequestFilter instead. PHAB_ID=D122344

  • finagle-http: c.t.f.http.Request.multipart has been deprecated.
    Use c.t.f.http.exp.MultipartDecoder instead. PHAB_ID=D126013

Finagle 17.12.0

11 Dec 19:36
Compare
Choose a tag to compare

New Features

  • finagle-core: Expose Tunables for MethodBuilder timeout configuration. Update
    the http.MethodBuilder and thriftmux.MethodBuilder to accept Tunables for
    configuring total and per-request timeouts. c912dd4b

  • finagle-thrift, finagle-thriftmux: Add support for Scrooge
    ReqRepServicePerEndpoint functionality. df5f10bd

  • finagle-thriftmux: Add support for Scrooge ServicePerEndpoint and
    ReqRepServicePerEndpoint functionality to thriftmux.MethodBuilder.
    3abaa524

Breaking API Changes

  • finagle-base-http: Remove deprecated [Request|Response].[encode|decode][Bytes|String]
    methods. Use c.t.f.h.codec.HttpCodec methods instead. 006de6a3

  • finagle-thrift: Move ThriftRichClient and ThriftRichServer to
    c.t.finagle.thrift package. fcf66bae

Runtime Behavior Changes

  • finagle-core: The "pipelining/pending" stat has been removed from protocols
    using c.t.f.dispatch.PipeliningClientDispatcher. Refer to the "pending" stat
    for the number of outstanding requests. 0d162d17

  • finagle-thrift,thriftmux: Tracing of RPC method names has been removed. This
    concern has moved into Scrooge. df161758

Deprecations

  • finagle-core: c.t.f.BackupRequestLost has been deprecated. Please use a
    c.t.f.Failure flagged c.t.f.Failure.Ignorable instead. fb37aed5

Finagle 17.11.0

17 Nov 17:17
Compare
Choose a tag to compare

New Features

  • finagle-core: Add ResponseClassifiers, RetryOnTimeout and RetryOnChannelClosed,
    for exceptions that are commonly retried when building from ClientBuilder but had
    no MethodBuilder equivalents. 3d292b49

  • finagle-netty4: Netty4Transporter and Netty4Listener are now accessible, which
    allows external users to create their own protocols for use with Finagle on Netty 4.
    3ce475db

Bug Fixes

  • finagle-exp: Fix race condition in LatencyHistogram which could lead to the wrong
    value returned for quantile. 947884f5

Breaking API Changes

  • finagle-core: Numerous overloads of c.t.f.Server.serve have been marked final.
    ea543806

  • finagle-thrift: Correctly send mux.Request#contexts in all cases. There were some
    cases in which mux.Request#contexts were not always propagated. The contexts are
    now always written across the transport. Note that there may be duplicated contexts
    between "local" context values and "broadcast" context values. Local values will
    precede broadcast values in sequence. 45832aad

Finagle 17.10.0

27 Oct 22:23
Compare
Choose a tag to compare

Release Version Format

  • From now on, release versions will be based on release date in the format of
    YY.MM.x where x is a patch number. 8efc24b1

New Features

  • finagle-core: DeadlineFilter may now be created from the class and used as a
    regular Filter in addition to a stack module as before. b80a1df4

  • finagle-mysql: Add ability to toggle the CLIENT_FOUND_ROWS flag. fae2e69d

  • finagle-http: Separated the DtabFilter.Extractor from the ServerContextFilter into
    a new module: ServerDtabContextFilter. While this is still enabled in the default
    Http server stack, it can be disabled independently of the ServerContextFilter.
    335d639f

Runtime Behavior Changes

  • finagle-netty4: Netty4ClientEngineFactory and Netty4ServerEngineFactory now
    validate loaded certificates in all cases to ensure that the current date
    range is within the validity range specified in the certificate. dc3230e3

  • finagle-netty4: TrustCredentials.Insecure now works with native SSL/TLS engines.
    6b822e94

  • finagle-http2: Upgraded to the new netty http/2 API in netty version 4.1.16.Final,
    which fixes several long-standing bugs but has some bugs around cleartext http/2.
    One of the work-arounds modifies the visibility of a private field, so it's incompatible
    with security managers. This is only true for http/2--all other protocols will be unaffected.
    bb01393f

  • finagle-http: Netty 3 HeaderMap was replaced with our own implementation.
    199dc51c

Deprecations

  • finagle-base-http: With the intention to make c.t.f.http.Cookie immutable,
    set methods on c.t.f.http.Cookie have been deprecated:

    • comment_=
    • commentUrl_=
    • domain_=
    • maxAge_=
    • path_=
    • ports_=
    • value_=
    • version_=
    • httpOnly_=
    • isDiscard_=
    • isSecure_=

    Use the c.t.f.http.Cookie constructor to set domain, maxAge, path, value, httpOnly,
    and secure. comment, commentUrl, ports, version, and discard have been removed
    per RFC-6265. 71760096.

    Alternatively, use the domain, maxAge, path, httpOnly, and secure methods to create a
    new Cookie with the existing fields set, and the respective field set to a given value.
    14beb975

  • finagle-base-http: c.t.f.http.Cookie.isSecure and c.t.f.http.Cookie.isDiscard
    have been deprecated. Use c.t.f.http.Cookie.secure for c.t.f.http.Cookie.isSecure.
    isDiscard has been removed per RFC-6265. 71760096

Breaking API Changes

  • finagle-mysql: Moved Cursors.cursor method to Client trait, and removed Cursors trait.
    This allows cursor queries to used with transactions. 1224721c

  • finagle-mux: Expose transport contexts in mux.Request and mux.Response. f0f46785

  • finagle-mux: The "leased" gauge has been removed from the mux client implementation since the
    metric is reported as the sum of the value over all clients which is unlikely to be useful.
    1c31e384