Finagle Versions Save

A fault tolerant, protocol-agnostic RPC system

finagle-20.10.0

3 years ago

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

3 years ago

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

3 years ago

20.8.1

New Features

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

finagle-20.8.0

3 years ago

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

3 years ago

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

3 years ago

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

3 years ago

Runtime Behavior Changes

  • finagle: Bump jackson version to 2.11.0. 696bb515

finagle-20.4.1

4 years ago

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

4 years ago

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

4 years ago

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