Releases: twitter/finagle
Finagle 20.1.0
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 19.12.0
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
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
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
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
Breaking API Changes
- finagle-core: The contents of the
c.t.f.dispatch.GenSerialClientDispatcher
object have been
moved to the newc.t.f.dispatch.ClientDispatcher
object. The stats receiver free constructors
ofGenSerialClientDispatcher
andSerialClientDispatcher
have been removed.
4b0493c6 - finagle-thrift: The deprecated
ReqRepThriftServiceBuilder
object has been
removed. Users should migrate toReqRepMethodPerEndpointBuilder
. f1c4d589
Runtime Behavior Changes
Finagle 19.7.0
New Features
-
finagle-http: Measure streaming (message.isChunked) chunk payload size with two new histograms:
stream/request/chunk_payload_bytes
andstream/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 thec.t.f.http.Response
associated with the passed inc.t.f.http.Request
. 455718a -
finagle-http:
c.t.f.http.filter.ExceptionFilter
has been changed to no longer
use thec.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
andgetStatusCode
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 thebuild
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 thegetHostString
method ofSslClientEngineFactory
instead. -
finagle-http: The
setOriginAndCredentials
,setMaxAge
,setMethod
, andsetHeaders
methods
ofc.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
thec.t.f.Http.H2ClientImpl.transporter
method has been moved to a private location.
1338e50
Bug Fixes
Finagle 19.6.0
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 givenFuturePool
orExecutorService
.
UsewithExecutionOffloaded
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
andstream/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
callingwithTransport.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
tostream/request/duration_ms
and
response_stream_duration_ms
tostream/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 thec.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 theBackPressure
stack param is effectively changed tobackPressureDisabled
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 newResponseClass
: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 levelc.t.f.mysql.ProtocolMessage
and the cmd field must contain a value.
Additionally, the syntheticCommand.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 ofCapability
.
4c57afda
Deprecations
- finagle-http: Removed deprecated
response_size
in Finagle Http stats. This is a duplicate stat
ofresponse_payload_bytes
. 1286c438
Finagle 19.5.1
No Changes
Finagle 19.5.0
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