Skip to content

Releases: twitter/finagle

Finagle 20.10.0

27 Oct 17:59
Compare
Choose a tag to compare

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

25 Sep 02:52
Compare
Choose a tag to compare

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

27 Aug 17:39
Compare
Choose a tag to compare

20.8.1

New Features

  • finagle-thriftmux: Add MethodBuilder specific APIs for ThriftMux partition aware client.
    e2f467c1

Finagle 20.8.0 (DO NOT USE)

12 Aug 15:50
Compare
Choose a tag to compare

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

22 Jul 17:17
Compare
Choose a tag to compare

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

24 Jun 22:18
Compare
Choose a tag to compare

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-zipkin-core: Remove flush and late-arrival annotations, which artificially extend
    trace durations. 967ef1fc
  • finagle-core: namer annotations are added at the Service level instead of ServiceFactory as
    traces are intended to be request based c8680fff

Finagle 20.5.0

29 May 21:07
Compare
Choose a tag to compare

Runtime Behavior Changes

  • finagle: Bump jackson version to 2.11.0. 696bb515

Finagle 20.4.1

26 Apr 06:57
Compare
Choose a tag to compare

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 certain FuturePool implementations. f0af6ad7 59f9f2b5

  • finagle-netty4: ChannelStatsHandler will now only count the first channel close(..) call when incrementing the closes counter. 3fa91944

Breaking API Changes

  • finagle-toggle: Removed abstract type for c.t.finagle.Toggle, all Toggles are of type Int.
    This is to avoid Integer auto-boxing when calling Toggle.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)

02 Apr 18:24
Compare
Choose a tag to compare

New Features

  • finagle-thrift/thriftmux: Thrift and ThriftMux client side can set a sharable
    TReusableBuffer by withTReusableBufferFactory. 9213ca35

Breaking API Changes

  • finagle-partitioning: Rename c.t.finagle.partitioning.CacheNode and CacheNodeMetadata
    to c.t.finagle.partitioning.PartitionNode and PartitionNodeMetadata. d32f0c25

  • finagle-partitioning: Rename c.t.finagle.partitioning.KetamaClientKey to HashNodeKey
    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

08 Mar 19:29
Compare
Choose a tag to compare

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 the com.twitter.finagle.http.cookie.supportSameSiteCodec flag. This means
    that cookies that have a value other than Unset for the sameSite field will have the
    attribute encoded (by servers) and decoded (by clients). See this
    Chromium blog post
    for more information about the SameSite 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 the ChannelSnooper 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 the H2ServerFilter. 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 under clnt/zipkin-scribe a17659dd

Breaking API Changes

  • finagle-zipkin-scribe: update the deprecated FutureIface to MethodPerEndpoint 23ff595b

  • finagle-zipkin-scribe: Coalesce ScribeRawZipkinTracer apply methods into two simple ones. a17659dd

  • finagle-zipkin-scribe: DefaultSampler moved to c.t.f.zipkin.core in finagle-zipkin-core. ac9c7ec1

  • finagle-zipkin-scribe: initialSampleRate GlobalFlag is moved to finagle-zipkin-core, under the same package
    scope c.t.f.zipkin. ac9c7ec1