Releases: twitter/finagle
Finagle 20.10.0
Breaking API Changes
- finagle-thrift: Change the partition locator function getLogicalPartitionId in
PartitioningStrategy from Int => Int to Int => Seq[Int], which supports many to many mapping
from hosts and logical partitions. ab641adc
Runtime Behavior Changes
- finagle-core: Disable eager connections for balancers with a non 1.0 weight. 11eae0d6
Finagle 20.9.0
New Features
- finagle-core: Add RelativeName field to Metric Metadata and populate it for
client and server metrics. de589ffa - finagle-scribe: Add c.t.finagle.scribe.Publisher for publishing messages to a
Scribe process. 7723a949
Runtime Behavior Changes
- finagle: Bump version of Jackson to 2.11.2. 6c6c882a
Bug Fixes
- finagle-core: The TraceId alternative constructor now forwards the traceIdHigh parameter to
the primary constructor. 567e8d66
Finagle 20.8.1
20.8.1
New Features
- finagle-thriftmux: Add MethodBuilder specific APIs for ThriftMux partition aware client.
e2f467c1
Finagle 20.8.0 (DO NOT USE)
20.8.0
Runtime Behavior Changes
- finagle-netty4-http: Post, Put, Patch non-streaming outbound requests with empty bodies will
be added the Content-Length header with value 0. 9ce18e85 - finagle-core: A ServiceFactory created by ServiceFactory.const/constant propagates the wrapped
service status. 3347c095 - finagle-http: c.t.f.http.filter.PayloadSizeFilter no longer adds an annotation on each
streaming chunk and instead aggregates the byte count and adds a single record on stream
termination. e87b1c35 - finagle-zipkin-scribe: zipkin scribe log_span prefix replaced with scribe. zipkin-scribe/scribe/<stats>. 5b100ee9
New Features
- finagle-core: introduce type-safe ReqRep variant 459daf68
- finagle-core: Added a new variant of Filter.andThenIf which allows passing the parameters
as individual parameters instead of a Scala tuple. fb071d9b - finagle-core: new metric (counter) for traces that are sampled. finagle/tracing/sampled 1d6503e0
- finagle-netty4: Add the c.t.f.netty4.Netty4Listener.MaxConnections param that can be used
to limit the number of connections that a listener will maintain. Connections that exceed
the limit are eagerly closed. 9991aae3 - finagle-thrift: Added java-friendly c.t.f.thrift.exp.partitioning.ClientHashingStrategy and
c.t.f.thrift.exp.partitioning.ClientCustomStrategy create methods, and added java-friendly
c.t.f.thrift.exp.partitioning.RequestMergerRegistry#addRequestMerger and
c.t.f.thrift.exp.partitioning.ResponseMergerRegistry#addResponseMerger to make partitioning
easier to use from Java. e0d78d14
Breaking API Changes
- finagle-core: ReqRep can no longer be created via new ReqRep(..). Please use
ReqRep.apply(..) instead.
459daf68 - finagle-thrift: Updated the c.t.f.thrift.exp.partitioning.ClientHashingStrategy and the
c.t.f.thrift.exp.partitioning.ClientCustomStrategy to take constructor arguments instead
of needing to override methods on construction. e0d78d14 - finagle-zipkin-core: Removed unused statsReceiver constructor argument from RawZipkinTracer. 5b100ee9
Finagle 20.7.0
20.7.0
Breaking API Changes
- finagle-core: Correct the spelling of Tracing.recordClientSendFrargmet() to
Tracing.recordClientSendFragment() 30726c01 - finagle-redis: Use StrictKeyCommand for XDEL d174f9d6
- finagle-toggle: Toggle.isDefinedAt(i: Int) has become Toggle.isDefined. Additionally, a new method Toggle.isUndefined has been added. 3bb78ce8
- finagle-zipkin-scribe: The scribe.thrift file was moved to finagle-thrift/src/main/thrift under a new
namespace. com.twitter.finagle.thrift.scribe.(thrift|thriftscala) 01a20b79
Bug Fixes
- finagle-zipkin-scribe: The scribe client should be configured using the NullTracer. Otherwise, spans
produced by the client stack will be sampled at initialSampleRate. 0446dd3e
Finagle 20.6.0
Runtime Behavior Changes
- finagle-core: FailFastFactory is now disabled at runtime when a client's destination has only
one endpoint, since the client cannot do anything meaningful by breaking the circuit early.
This is recommended as a best practice anyway, now it's the default behavior. Less things
to configure and worry about! f2c100e8 - finagle-core: namer annotations are prefixed with "clnt/". c8680fff
- finagle-core: namer.success & namer.failure are not annotated as they are not request based.
namer.tree annotation was also removed to reduce the size of traces. c8680fff - finagle-core: The offload filter client annotation is annotated under the child request span instead of
its parent. The offload filter annotations are also changed to be binary annotations with the key
(clnt|srv)/finagle.offload_pool_size and the value being the pool size 011f096d - finagle-memcached: The key in RetrievalCommand are ommited in traces. The total number of Hits
and Misses are annotated via a counter instead under clnt/memcached.(hits/misses) 6fd0e2c9
Breaking API Changes
- finagle-core: Migrated List[Tracer] to Seq[Tracer] in Tracing, and tracersCtx.
cb06890b - finagle-core: PayloadSizeFilter and WireTracingFilter are now public APIs.
fc1951a5 - finagle-zipkin-core: initialSampleRate flag will now fail if the sample rate is not in the range
[0.0, 1.0]. 180f333c - finagle-mysql: mysql client annos are prefixed with clnt/ 37d55c2a
New Features
- finagle-thrift: Expose c.t.f.thrift.exp.partitioning.PartitioningStrategy,
the bundled PartitioningStrategy APIs are public for experiments.
bf1d47be - finagle-http: Add LoadBalancedHostFilter to allow setting host header after LoadBalancer
5304ce69 - finagle-core: Trace the request's protocol identified by the ProtocolLibrary of the client
stack. This is annotated under clnt/finagle.protocol. 464bbeb6 - finagle-core: Add letTracers to allow setting multiple tracers onto the tracer stack.
cb06890b - finagle-core: DeadlineFilter now exposes a metric admission_control/deadline/remaining_ms
which tracks the remaining time in non-expired deadlines on the server side. An increase in this
stat, assuming request latency is constant and timeout configurations upstream have not changed,
may indicate that upstream services have become slower. 939f9a3e - finagle-redis: Make partitionedClient accessible. 7ba107e1
- finagle-core, finagle-http, finagle-thriftmux: introduce MethodBuilder maxRetries
configuration. A ThriftMux or HTTP method can now be configured to allow a specific number of
maximum retries per request, where the retries are gated by the configured RetryBudget. This
configuration can be applied via Http.client.methodBuilder(name).withMaxRetries(n) or
ThriftMux.client.methodBuilder(name).withMaxRetries(n). 4328896d - finagle-memcached: Annotate the shard id of the backend the request will reach. 6fd0e2c9
Bug Fixes
Finagle 20.5.0
Runtime Behavior Changes
- finagle: Bump jackson version to 2.11.0. 696bb515
Finagle 20.4.1
New Features
-
finagle-redis: Add
ConnectionInitCommand
stack to set database and password.
9fe05301 -
finagle-mysql: Add
ConnectionInitSql
stack to set connection init sql. bd4411dd
Runtime Behavior Changes
- finagle-core: Requeued reqeuests due to the
c.t.finagle.service.RequeueFilter
will generate
their own spanId. af490773
Bug Fixes
-
finagle-core: Restrict
OffloadFilter
from allowing interruption of the work performed in the worker pool. This is to ensure that the worker thread isn't interruptible, which is a
behavior of certainFuturePool
implementations. f0af6ad7 59f9f2b5 -
finagle-netty4: ChannelStatsHandler will now only count the first channel
close(..)
call when incrementing thecloses
counter. 3fa91944
Breaking API Changes
-
finagle-toggle: Removed abstract type for
c.t.finagle.Toggle
, all Toggles are of typeInt
.
This is to avoid Integer auto-boxing when callingToggle.apply
, thus to improve overall toggle performance. c81a87b0 -
finagle-core: Retried requests due to the
c.t.finagle.service.RetryFilter
will generate their
own spanId. 762471a0
Finagle 20.4.0 (DO NOT USE)
New Features
- finagle-thrift/thriftmux: Thrift and ThriftMux client side can set a sharable
TReusableBuffer bywithTReusableBufferFactory
. 9213ca35
Breaking API Changes
-
finagle-partitioning: Rename
c.t.finagle.partitioning.CacheNode
andCacheNodeMetadata
toc.t.finagle.partitioning.PartitionNode
andPartitionNodeMetadata
. d32f0c25 -
finagle-partitioning: Rename
c.t.finagle.partitioning.KetamaClientKey
toHashNodeKey
2d0cd33e
Bug Fixes
- finagle-base-http: RequestBuilder headers use SortedMap to equalize keys in different caps.
setHeader
keys are case insensitive, the last one wins. 535f324c
Finagle 20.3.0
New Features
- finagle-opencensus-tracing: Add support for providing a custom TextFormat for header
propagation. a02d377a
Runtime Behavior Changes
-
finagle-netty4: When not using the JDK implementation, the Netty reference counted SSL
types are used which move SSL cleanup out of the GC cycle, reducing pause durations.
466aa5bf -
finagle-base-http: Support for the
SameSite
cookie attribute is now on by default. This can
be manipulated via thecom.twitter.finagle.http.cookie.supportSameSiteCodec
flag. This means
that cookies that have a value other thanUnset
for thesameSite
field will have the
attribute encoded (by servers) and decoded (by clients). See this
Chromium blog post
for more information about theSameSite
attribute. f96c3729 -
finagle-core: The default NullTracer for ClientBuilder has been removed. Affected clients may
now see tracing enabled by default via the Java ServiceLoader, as described in the
Finagle User's Guide. 6b3f0940 -
finagle-http2: The HTTP/2 frame logging tools now log at level INFO. This is symmetric with
the behavior of theChannelSnooper
tooling which serves a similar purpose which is to aid
in debugging data flow and isn't intended to be enabled in production. 78e4596b
Bug Fixes
-
finagle-zipkin-scribe: add a logical retry mechanism to scribe's TRY_LATER response 23ff595b
-
finagle-http2: Initialize state in H2Pool before use in the gauge to avoid a
NullPointerException. 289de8a3 -
finagle-http2: HTTP/2 server pipeline now traps close calls to ensure that
events from the initial HTTP/1.x pipeline don't close the HTTP/2 session. For
example, the initial pipeline was subject to session timeouts even though the
tail of the socket pipeline was effectively dead. Closing of HTTP/2 server
pipelines is now handled through theH2ServerFilter
. 670dbf74 -
finagle-http2: HTTP/2 servers clean out unused channel handlers when upgrading
from a HTTP/1.x pipeline, removing some traps such as unintended timeouts.
3dfe8226 -
finagle-opencensus-tracing: Fixed internal server error when invalid or no propagation headers
are provided. a02d377a -
finagle-zipkin-scribe: export application metrics under a consistent
zipkin-scribe
scope. Finagle client
stats underclnt/zipkin-scribe
a17659dd
Breaking API Changes
-
finagle-zipkin-scribe: update the deprecated
FutureIface
toMethodPerEndpoint
23ff595b -
finagle-zipkin-scribe: Coalesce
ScribeRawZipkinTracer
apply methods into two simple ones. a17659dd -
finagle-zipkin-scribe:
DefaultSampler
moved toc.t.f.zipkin.core
in finagle-zipkin-core. ac9c7ec1 -
finagle-zipkin-scribe:
initialSampleRate
GlobalFlag is moved to finagle-zipkin-core, under the same package
scopec.t.f.zipkin
. ac9c7ec1