Changelog History
Page 6
-
v18.6.0 Changes
โ Runtime Behavior Changes
* 0๏ธโฃ 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. ``PHAB_ID=D180922`` * finagle-http2: Unprocessed streams are retryable in case of GOAWAY. ``PHAB_ID=D174401`` ๐ New Features
finagle-core: Add
PropagateDeadlines
Stack.Param
toTimeoutFilter
for disabling propagation of deadlines to outbound requests.PHAB_ID=D168405
finagle-core: Add
toString
implementations toc.t.finagle.Service
andc.t.finagle.Filter
. Update inFilter#andThen
composition to expose a usefultoString
for composed Filters and a composed Service (a Filter chain with a terminal Service or ServiceFactory).
The default implementation for
Filter
andService
isgetClass.getName
. When composing filters, theandThen
composition method correctly tracks the composed parts to produce a usefultoString
, e.g.,.. code-block:: scala
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] = ??? }
.. code-block:: scala
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] = ??? }
.. code-block:: scala
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:
.. code-block:: scala
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 0๏ธโฃ replace the default ofgetClass.getName
.PHAB_ID=D172526
finagle-core: Make
Filter.TypeAgnostic
an abstract class for Java usability.PHAB_ID=D172716
finagle-core:
c.t.f.filter.NackAdmissionFilter
is now public.PHAB_ID=D177322
finagle-core: Extended
c.t.f.ssl.KeyCredentials
andc.t.f.ssl.TrustCredentials
to work withjavax.net.ssl.KeyManagerFactory
andjavax.net.ssl.TrustManagerFactory
respectively.PHAB_ID=D177484
๐ฅ Breaking API Changes
* finagle-core: Rename `DeadlineFilter.Param(maxRejectFraction)` to `DeadlineFilter.MaxRejectFraction(maxRejectFraction)` to reduce confusion when adding additional params. ``PHAB_ID=D172402`` ๐ 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 specPHAB_ID=D175898
finagle-netty4:
SslServerSessionVerifier
is now supplied with the proper peer address rather thanAddress.failing
.PHAB_ID=D168334
0๏ธโฃ 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 awith
-method asThrift{Mux}.client.withPerEndpointStats
.PHAB_ID=D169427
finagle-netty4: Avoid NoClassDefFoundError if netty-transport-native-epoll is not available on the classpath.
-
v18.5.0 Changes
๐ 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. ``PHAB_ID=D157942`` - Pass `SameSite.Lax` to the `Cookie` to add the "Lax" attribute. - Pass `SameSite.Strict` to the `Cookie` to add the "Strict" attribute. * 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`. ``PHAB_ID=D160298`` * 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]`. ``PHAB_ID=D156926``, ``PHAB_ID=D157360`` * 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. ``PHAB_ID=D160215`` * finagle-serversets: Zk2Session's AsyncSemaphore which controls the maximum concurrent Zk operations is configurable (GlobalFlag c.t.f.serverset2.zkConcurrentOperations). ```PHAB_ID=D157709``` * finagle-mysql: Address `CursoredStatement` usability from Java via `CursoredStatement.asJava()`. Through this, you can use the API with varargs and Java 8 lambdas. ``PHAB_ID=D158399`` * finagle-toggle: Improved Java compatibility for `ToggleMap` and `Toggle`. ``PHAB_ID=D164489`` * finagle-toggle: `StandardToggleMap.apply` and `StandardToggleMap.registeredLibraries` now use `ToggleMap.Mutable` to better support mutating the underlying mutable `ToggleMap`. ``PHAB_ID=D167046`` ๐ฅ 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.PHAB_ID=D141010
finagle-mysql:
c.t.f.mysql.Client.ping
now returns aFuture[Unit]
instead of the broadFuture[Result]
ADT.PHAB_ID=D160215
finagle-toggle: Changed
ToggleMap.Mutable
from a trait to an abstract class, andToggleMap.Proxy
no longer extendsToggleMap
, but now has a self-type that conforms toToggleMap
instead.PHAB_ID=D164489
โ 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.SSLException`s in `c.t.f.SslException`. ``PHAB_ID=D158344`` * finagle-core: MethodBuilder metrics now include failures. ``PHAB_ID=D167589``, ``PHAB_ID=D168095`` * 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. ``PHAB_ID=D134209`` * โฌ๏ธ finagle-http2: Clients and servers no longer attempt a cleartext upgrade if the first request of the HTTP/1.1 session has a body. ``PHAB_ID=D153986`` * 0๏ธโฃ finagle-thriftmux: The push-based client muxer is now the default muxer implementation. The push-based muxer has better performance and a simpler architecture. ``PHAB_ID=D158134`` * finagle-toggle: `ToggleMap.Proxy#underlying` is now public, and `ToggleMap.Proxy` participates in `ToggleMap.components`. ``PHAB_ID=D167046`` ๐ Bug Fixes
0๏ธโฃ 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.PHAB_ID=D159250
finagle-core:
FailureFlags
that have their flags set modified will now retain the original stack trace, suppressed Throwables, and cause when possible.PHAB_ID=D160402
๐ finagle-memcached: Added the missing support for partial success for the batch operations in the new PartitioningService based Memcached client.
PHAB_ID=D161249
๐ finagle-thrift: Removed copied libthrift files.
PHAB_ID=D165455
0๏ธโฃ finagle-thrift/thriftmux: Server side per-endpoint statsFilter by default is disabled now. It can be set via
c.t.f.thrift.RichServerParam
or awith
-method asThrift{Mux}.server.withPerEndpointStats
.PHAB_ID=D167433
-
v18.4.0 Changes
๐ New Features
* finagle-core: `c.t.f.filter.NackAdmissionFilter` can now be disabled via a `with`-method. `$Protocol.client.withAdmissionControl.noNackAdmissionControl` ``PHAB_ID=D146873`` * finagle-mysql: Exceptions now include the SQL that was being executed when possible. ``PHAB_ID=D150503`` * finagle-mysql: Address `PreparedStatement` usability from Java via `PreparedStatement.asJava()`. Through this, you can use the API with varargs and Java 8 lambdas. ``PHAB_ID=D156755`` * ๐ finagle-mysql: Added support for `Option`\s to `Parameter` implicits. This allows for the natural representation of nullable columns with an `Option` where a `None` is treated as a `null`. ``PHAB_ID=D156186`` * 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. ``PHAB_ID=D144184`` * ๐ finagle-redis: Support has been added for a number of new cluster commands introduced in Redis 3.0.0. ``PHAB_ID=D152186`` ๐ Bug Fixes
- finagle-mysql: Fix handling of interrupts during transactions.
PHAB_ID=D154441
๐ฅ 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. ``PHAB_ID=D144149`` * โฌ๏ธ 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. ``PHAB_ID=D124620`` * ๐ 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. ``PHAB_ID=D143185`` * ๐ finagle-base-http: Removed deprecated `c.t.f.Cookie.value_=`; use `c.t.f.Cookie.value` instead. ``PHAB_ID=D148266`` * ๐ finagle-base-http: Removed deprecated `c.t.f.Cookie.domain_=`; use `c.t.f.Cookie.domain` instead. ``PHAB_ID=D148266`` * ๐ finagle-base-http: Removed deprecated `c.t.f.Cookie.path_=`; use `c.t.f.Cookie.path` instead. ``PHAB_ID=D148266`` โ Runtime Behavior Changes
finagle-core: Add minimum request threshold for
successRateWithinDuration
failure accrual.PHAB_ID=D154129
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.PHAB_ID=D143996
finagle-core: SSL/TLS client hostname verification is no longer performed by
c.t.f.ssl.client.HostnameVerifier
. The same underlying librarysun.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 ac.t.f.SslHostVerificationException
to ajavax.net.ssl.CertificateException
.PHAB_ID=D144149
finagle-core: Closing
c.t.f.NullServer
is now a no-op.PHAB_ID=D156098
0๏ธโฃ finagle-netty4: Netty ByteBuf leak tracking is enabled by default.
PHAB_ID=D152828
๐ Deprecations
* ๐ finagle-thrift: System property "-Dorg.apache.thrift.readLength" is deprecated. Use constructors to set read length limit for TBinaryProtocol.Factory and TCompactProtocol.Factory. ``PHAB_ID=D124620``
- finagle-mysql: Fix handling of interrupts during transactions.
-
v18.3.0 Changes
๐ New Features
* finagle-core: `c.t.f.client.BackupRequestFilter.filterService` for wrapping raw services in a `c.t.f.client.BackupRequestFilter` is now public. ``PHAB_ID=D135484`` * 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. ``PHAB_ID=D139660`` ๐ Bug Fixes
finagle-core:
c.t.f.liveness.FailureAccrualFactory
takes no action onc.t.f.Failure.Ignorable
responses.PHAB_ID=D135435
finagle-core:
c.t.f.pool.WatermarkPool
is resilient to multiple closes on a service instance.PHAB_ID=D137198
finagle-core:
c.t.f.pool.CachingPool
service wrapper instances are resilient to multiple closes.PHAB_ID=D136781
finagle-core: Requeue module now closes sessions it prevented from propagating up the stack.
PHAB_ID=D142457
finagle-base-http:
c.t.f.http.Netty4CookieCodec.encode
now wraps Cookie values that would be wrapped inc.t.f.http.Netty3CookieCodec.encode
.PHAB_ID=D134566
0๏ธโฃ finagle-base-http:
c.t.f.http.Cookie.maxAge
returnsc.t.f.http.Cookie.DefaultMaxAge
(instead of null) if maxAge has been set to null or None in the copy constructorPHAB_ID=D138393
.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.
PHAB_ID=D136053
๐ฅ 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. ``PHAB_ID=D137538`` * ๐ finagle-base-http: Removed deprecated `c.t.f.http.Cookie.isDiscard` and `c.t.f.http.Cookie.isDiscard_=`, per RFC-6265. ``PHAB_ID=D138109`` * ๐ finagle-base-http: Removed deprecated `c.t.f.http.Cookie.ports` and `c.t.f.http.Cookie.ports_=`, per RFC-6265. ``PHAB_ID=D139243`` * ๐ 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`. ``PHAB_ID=D122227`` * ๐ finagle-base-http: Removed deprecated `c.t.f.Cookie.isSecure`; use `c.t.f.Cookie.secure` instead. Removed deprecated `c.t.f.Cookie.isSecure_=`. ``PHAB_ID=D140435`` * ๐ finagle-base-http: Removed deprecated `c.t.f.http.Cookie.version` and `c.t.f.http.Cookie.version_=`, per RFC-6265. ``PHAB_ID=D142672`` * ๐ finagle-base-http: Removed deprecated `c.t.f.Cookie.httpOnly_=`; use `c.t.f.Cookie.httpOnly` instead. ``PHAB_ID=D143177`` * ๐ finagle-base-http: Removed deprecated `c.t.f.Cookie.maxAge_=`; use `c.t.f.Cookie.maxAge` instead. ``PHAB_ID=D143177`` * finagle-core: `c.t.f.pool.WatermarkPool` was finalized. ``PHAB_ID=D137198`` * 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. ``PHAB_ID=D135908`` * ๐ 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. ``PHAB_ID=D135908`` * ๐ finagle-core: The deprecated `c.t.f.loadbalancer.DefaultBalancerFactory` has been removed. ``PHAB_ID=D139814`` * ๐ finagle-exp: The deprecated `c.t.f.exp.BackupRequestFilter` has been removed. Please use `c.t.f.client.BackupRequestFilter` instead. ``PHAB_ID=D143333`` * ๐ finagle-http: Removed the `c.t.f.Http.Netty3Impl`. Netty4 is now the only underlying HTTP implementation available. ``PHAB_ID=D136705`` * 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. ``PHAB_ID=D141940``
-
v18.2.0 Changes
๐ New Features
* finagle-core: Add orElse to allow composition of `FailureAccrualPolicy`s. ``PHAB_ID=D131156`` * 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. ``PHAB_ID=D131809`` * ๐ง finagle-thriftmux: Expose the underlying configured client `label` in the `c.t.finagle.thriftmux.MethodBuilder`. ``PHAB_ID=D129109`` ๐ Bug Fixes
- finagle-http2: http2 servers no longer leak ping bodies.
PHAB_ID=D130503
๐ 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. ``PHAB_ID=D129692`` ๐ฅ Breaking API Changes
๐ finagle-base-http:
c.t.f.h.codec.HttpCodec
has been moved to thefinagle-http
project.PHAB_ID=D116364
๐ finagle base-http:
c.t.f.h.Request.multipart
has been removed. Usec.t.f.h.exp.MultipartDecoder
instead.PHAB_ID=D129158
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.
PHAB_ID=D130988
โ Runtime Behavior Changes
* finagle-core: Finagle clients with retry budgets or backoffs should no longer have infinite hash codes. ``PHAB_ID=D128594`` * โก๏ธ finagle-core: `c.t.f.l.Balancer` no longer uses a `c.t.f.u.Updater` as its underlying concurrency primitive as it was found that in practice coalescing updates almost never happens and in the absence of that `Updater` imposes more overhead than simple synchronization while complicating the result of calling `rebuild()` since we don't know if the rebuild actually occurred by the time we attempt to use the distributor again. ``PHAB_ID=D126486``
- finagle-http2: http2 servers no longer leak ping bodies.
-
v18.1.0 Changes
๐ 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`` * 0๏ธโฃ 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 https://github.com/twitter/finagle/pull/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.Toggle
s 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 isjava.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 fromSSLSession
.PHAB_ID=D124815
๐ finagle-memcached:
ConcurrentLoadBalancerFactory
was removed and its behavior was replaced by a Stack.Param inside finagle-core'sLoadBalancerFactory
.PHAB_ID=D119394
finagle-netty4:
Netty4ClientEngineFactory
andNetty4ServerEngineFactory
were finalized.PHAB_ID=D128708
๐ 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``
-
v17.12.0 Changes
๐ 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. ``PHAB_ID=D118114`` * ๐ finagle-thrift, finagle-thriftmux: Add support for Scrooge `ReqRepServicePerEndpoint` functionality. ``PHAB_ID=D107397`` * ๐ finagle-thriftmux: Add support for Scrooge `ServicePerEndpoint` and `ReqRepServicePerEndpoint` functionality to `thriftmux.MethodBuilder`. ``PHAB_ID=D116081`` ๐ฅ Breaking API Changes
๐ finagle-base-http: Remove deprecated
[Request|Response].[encode|decode][Bytes|String]
methods. Use c.t.f.h.codec.HttpCodec methods instead.PHAB_ID=D116350
๐ finagle-memcached:
ConcurrentLoadBalancerFactory
was removed and its behavior was replaced by a Stack.Param inside finagle-core'sLoadBalancerFactory
.PHAB_ID=D119394
๐ finagle-serversets: Removed Guava dependency which broke some APIs.
PHAB_ID=D119555
c.t.f.common.zookeeper.ServerSets.TO_ENDPOINT
is now ajava.util.function.Function
.c.t.f.common.net.pool.DynamicHostSet.HostChangeMonitor.onChange
now takes ajava.util.Set
.c.t.f.common.zookeeper.ZooKeeperUtils.OPEN_ACL_UNSAFE
is is now ajava.util.List
.c.t.f.common.zookeeper.ZooKeeperUtils.EVERYONE_READ_CREATOR_ALL
is is now ajava.util.List
.c.t.f.common.zookeeper.ZooKeeperClient
constructor now takes ajava.util.Optional
.
๐ finagle-thrift: Move
ThriftRichClient
andThriftRichServer
toc.t.finagle.thrift
package.PHAB_ID=D115284
โ Runtime Behavior Changes
* ๐ finagle-core: Remove `NackAdmissionControl` from the default client stack. Add it to the finagle-{http,mux} client stacks; note that it is added to finagle-http2 via finagle-http and finagle-thriftmux via finalge-mux. It is no longer part of the finagle-{memcached,mysql,redis} client stacks. ``PHAB_ID=D116722`` * ๐ 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. ``PHAB_ID=D113424`` * ๐ finagle-thrift,thriftmux: Tracing of RPC method names has been removed. This concern has moved into Scrooge. ``PHAB_ID=D115294`` ๐ Deprecations
- ๐ finagle-core:
c.t.f.BackupRequestLost
has been deprecated. Please use ac.t.f.Failure
flaggedc.t.f.Failure.Ignorable
instead.PHAB_ID=D113466
-
v17.11.0 Changes
๐ New Features
* finagle-core: Add `ResponseClassifier`s, RetryOnTimeout and RetryOnChannelClosed, for exceptions that are commonly retried when building from ClientBuilder but had no MethodBuilder equivalents. ``PHAB_ID=D106706`` * finagle-netty4: `Netty4Transporter` and `Netty4Listener` are now accessible, which allows external users to create their own protocols for use with Finagle on Netty 4. ``PHAB_ID=D105627`` ๐ Bug Fixes
- ๐ค finagle-exp: Fix race condition in
LatencyHistogram
which could lead to the wrong value returned forquantile
.PHAB_ID=D106330
๐ฅ Breaking API Changes
* finagle-core: Numerous overloads of `c.t.f.Server.serve` have been marked final. ``PHAB_ID=D107280`` * 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. ``PHAB_ID=D107921``
- ๐ค finagle-exp: Fix race condition in
-
v17.10.0 Changes
๐ 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. ``PHAB_ID=D101244`` ๐ 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.
PHAB_ID=D94517
finagle-mysql: Add ability to toggle the
CLIENT_FOUND_ROWS
flag.PHAB_ID=D91406
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.
PHAB_ID=D94306
โ 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. ``PHAB_ID=D88664`` * finagle-netty4: `TrustCredentials.Insecure` now works with native SSL/TLS engines. ``PHAB_ID=D103766`` * โฌ๏ธ 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. ``PHAB_ID=D98069`` * finagle-http: Netty 3 `HeaderMap` was replaced with our own implementation. ``PHAB_ID=D99127`` ๐ Deprecations
finagle-base-http: With the intention to make
c.t.f.http.Cookie
immutable,set
methods onc.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 setdomain
,maxAge
,path
,value
,httpOnly
, andsecure
.comment
,commentUrl
,ports
,version
, anddiscard
have been removed per RFC-6265.PHAB_ID=D82164
.Alternatively, use the
domain
,maxAge
,path
,httpOnly
, andsecure
methods to create a newCookie
with the existing fields set, and the respective field set to a given value.PHAB_ID=D83226
- finagle-base-http:
c.t.f.http.Cookie.isSecure
andc.t.f.http.Cookie.isDiscard
have been deprecated. Usec.t.f.http.Cookie.secure
forc.t.f.http.Cookie.isSecure
.isDiscard
has been removed per RFC-6265.PHAB_ID=D82164
๐ฅ Breaking API Changes
* ๐ finagle-mysql: Moved `Cursors.cursor` method to `Client` trait, and removed `Cursors` trait. This allows cursor queries to used with transactions. ``PHAB_ID=D91789`` * finagle-mux: Expose transport contexts in mux.Request and mux.Response. ``PHAB_ID=D92998`` * ๐ 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. ``PHAB_ID=D100357``
-
v7.1.0 Changes
๐ New Features
* ๐ง finagle-core: If a `c.t.u.tunable.Tunable` request or total timeout has been configured on a client which uses a `c.t.f.client.DynamicTimeout` filter, the current value of tunable will be used in the case of no dynamic timeout set for a request. ``PHAB_ID=D81886`` * finagle-core: `FailFastException` now captures the throwable that caused it. ``PHAB_ID=D86396`` * finagle-redis: finagle interface for redis DBSIZE command. ``PHAB_ID=D85305`` ๐ Bug Fixes
finagle-core: Unregister
ServerRegistry
entry onStackServer#close
. A StackServer entry is registered in theServerRegistry
on serve of the server but never unregistered. It is now unregistered on close of the StackServer.PHAB_ID=D83200
finagle-mux: Fix two issues with mux leases. In one bug, a new lease wouldn't be sent to the client if it was issued within 1 second of when the existing lease was set to expire. In a second bug, the server would only nack if the issued lease was 0, but didn't consider whether the lease had expired.
PHAB_ID=D91645
finagle-netty4:
Netty4ClientEngineFactory
andNetty4ServerEngineFactory
now properly load all chain certificates when theSslClientConfiguration
orSslServerConfiguration
usesKeyCredentials.CertKeyAndChain
instead of just the first one in the file.PHAB_ID=D82414
๐ง finagle-thrift/thriftmux: Thrift/ThriftMux servers and clients now can be configured with
withMaxReusableBufferSize
to specify the max size of the reusable buffer for Thrift responses.PHAB_ID=D83190
โ Runtime Behavior Changes
* finagle-stats: Verbosity levels are now respected: debug-metrics aren't exported by default. ``PHAB_ID=D85278`` * finagle-netty4: `ChannelTransport` no longer considers the `Channel.isWritable` result when determining status. ``PHAB_ID=D82670`` ๐ Deprecations
finagle-base-http: Encoding/decoding methods on
c.t.f.http.Request
andc.t.f.http.Response
to/from Strings and arrays of bytes have been deprecated. Use the methods onc.t.f.http.codec.HttpCodec
instead:- For
c.t.f.http.Request.encodeString
, usec.t.f.Http.codec.HttpCodec.encodeRequestToString
- For
c.t.f.http.Request.encodeBytes
, usec.t.f.Http.codec.HttpCodec.encodeRequestToBytes
- For
c.t.f.http.Request.decodeString
, usec.t.f.Http.codec.HttpCodec.decodeStringToRequest
- For c.t.f.http.Request.decodeBytes
, use
c.t.f.Http.codec.HttpCodec.decodeBytesToRequest` - For
c.t.f.http.Response.encodeString
, usec.t.f.Http.codec.HttpCodec.encodeResponseToString
- For
c.t.f.http.Response.decodeString
, usec.t.f.Http.codec.HttpCodec.decodeStringToResponse
- For
c.t.f.http.Response.decodeBytes
, usec.t.f.Http.codec.HttpCodec.decodeBytesToResponse
- For
PHAB_ID=D81341
๐ฅ Breaking API Changes
* ๐ finagle-core: Remove deprecated method `httpProxyTo(String, Option[Transporter.Credentials])`. Use `httpProxyTo(String, Transporter.Credentials]` instead. ``PHAB_ID=D84077`` * ๐ finagle-\*-http: Netty 3 specific HTTP transport related code has been moved into its own project, finagle-netty3-http, in preparation for removing it from Finagle. ``PHAB_ID=D84101`` * ๐ finagle-memcached: Remove deprecated method `BaseClient.release()`. Use `BaseClient.close()` instead. ``PHAB_ID=D83168`` ๐ Deprecations
๐ finagle-memcached: Move
c.t.f.memcached.java.Client
toc.t.f.memcached.JavaClient
,c.t.f.memcached.java.ClientBase
toc.t.f.memcached.JavaClientBase
, andc.t.f.memcached.java.ResultWithCAS
toc.t.f.memcached.ResultWithCAS
.PHAB_ID=D83719
finagle-core: Added a new type member
Context
toTransport
, and a method that returns a context, which has most of the methods currently directly onTransport
. Also deprecates most of those methods--please start using the context instead of theTransport
directly. Also added type parameters toTransporter
,Listener
, and type members toStackClient
andStackServer
.PHAB_ID=D83972
finagle-core:
com.twitter.finagle.loadbalancer.DeterministicOrdering
was renamed tocom.twitter.finagle.loadbalancer.ProcessCoordinate
and the internalCoord
ADT was changed as well.PHAB_ID=D84452
๐ finagle-thrift: Move
Thrift.Server.param.MaxReusableBufferSize
toThrift.param.MaxReusableBufferSize
for both server and client use.PHAB_ID=D83190