Skip to content

Finagle 6.36.0

Compare
Choose a tag to compare
@cacoco cacoco released this 08 Jul 18:29
· 3565 commits to develop since this release

Deprecations

  • finagle-http: Removed DtabFilter.Finagle in favor of DtabFilter.Extractor.
    RB_ID=840600
  • finagle-zipkin: Deprecate ZipkinTracer in favor of ScribeZipkinTracer.
    RB_ID=840494

Breaking API Changes

  • finagle: Builds are now only for Java 8 and Scala 2.11. See the
    blog post for details. RB_ID=828898
  • finagle: Finagle is no longer depending on Twitter's clone of JSR166e, JDK 8
    API is used instead. RB_ID=833652
  • finagle-cacheresolver: package contents merged into finagle-memcached.
    RB_ID=833602
  • finagle-core: Renamed DeadlineFilter to DeadlineStatsFilter, which now only
    records stats for the number of requests with exceeded deadlines, the
    remaining deadline budget, and the transit latency of requests. It no longer
    rejects requests and has no configuration. We have decided not to pursue
    Deadline Admission Control at this time. RB_ID=829372
  • finagle-core: ClientBuilder.socksProxy(SocketAddress) is removed.
    Use command line flags (see c.t.f.socks.SocksProxyFlags.scala) instead.
    RB_ID=834634
  • finagle-core: Removed "closechans" and "closed" counters from ChannelStatsHandler.
    RB_ID=835194
  • finagle-core: Removed the "load" gauge from StatsFilter as it was duplicated
    by the "pending" gauge. RB_ID=835199
  • finagle-core: c.t.finagle.NoStacktrace is removed. Use scala.util.control.NoStackTrace
    instead. RB_ID=833188
  • finagle-core: c.t.finagle.Failure.withStackTrace is removed. Use system property
    scala.control.noTraceSuppression instead to fill stacktraces in Finagle's failures.
    RB_ID=833188
  • finagle-core: c.t.f.filter.RequestSerializingFilter is removed.
    Use c.t.f.filter.RequestSemaphoreFilter instead. RB_ID=839372
  • finagle-core: SessionParams no longer contains acquisitionTimeout. Instead, it
    was extracted into ClientSessionParams. RB_ID=837726
  • finagle-core: Changed visibility of PipeliningDispatcher to private[finagle]. Clients should
    not be affected, since it's not a part of the end-user API. RB_ID=843153.
  • finagle-http: Deprecate channelBufferUsageTracker in favor of maxRequestSize.
    RB_ID=831233
  • finagle-http: HttpClientDispatcher, HttpServerDispatcher, and
    ConnectionManager are no longer public. RB_ID=830150
  • finagle-redis: Deprecated methods have been removed from the client API.
    RB_ID=843455
  • finagle-redis: c.t.f.redis.*Commands traits are now package-private.
    RB_ID=843455
  • finagle-redis: Replace ChannelBuffer with Buf in client's:
    • HashCommands: RB_ID=843596
    • ListCommands: RB_ID=844596
    • BtreeSortedSetCommands: RB_ID=844862
    • HyperLogLogCommands: RB_ID=844945
    • PubSubCommands: RB_ID=845087
    • SetCommands: RB_ID=845578
    • SortedSetCommands: RB_ID=846074
  • finagle-memcached: c.t.f.memcached.Client now uses c.t.bijection.Bijection
    instead of c.t.u.Bijection. RB_ID=834383
  • finagle-thrift: As part of the migration off of Codec, remove
    c.t.f.thrift.ThriftClientBufferedCodec and c.t.f.thrift.ThriftClientBufferedCodecFactory
    which were used by ClientBuilder.codec and ServerBuilder.codec. Replace usage
    with ClientBuilder.stack(Thrift.client.withBufferedTransport)
    or ServerBuilder.stack(Thrift.server.withBufferedTransport). RB_ID=838146
  • finagle-zipkin: Moved case classes and companion objects Span, ZipkinAnnotation,
    BinaryAnnotation, Endpoint, Sampler and SamplingTracer to finagle-zipkin-core.
    RB_ID=840494
  • finagle-mysql: Removed c.t.f.exp.mysql.transport.MysqlTransporter, as it was not useful for it
    to be public. RB_ID=840718

Bug Fixes

  • finagle-core: PipeliningDispatcher now serializes "write and enqueue Promise" so it's no longer
    possible for the wrong response to be given to a request. RB_ID=834927
  • finagle-http: Servers which aggregate content chunks (streaming == false) now return a 413
    response for streaming clients who exceed the servers' configured max request size.
    RB_ID=828741
  • finagle-mysql: c.t.f.exp.mysql.PreparedCache now closes prepared statements when no one holds
    a reference to the cached future any longer. This fixes a race condition where the cached
    future could be evicted and the prepared statement closed while a user tries to use that
    prepared statement. RB_ID=833970
  • finagle-netty4-http: Servers now see the correct client host address for requests. RB_ID=844076

New Features

  • finagle-core: Added gauge, "scheduler/blocking_ms" measuring how much time,
    in milliseconds, the com.twitter.concurrent.Scheduler is spending doing blocking
    operations on threads that have opted into tracking. This also moves the
    "scheduler/dispatches" gauge out of TwitterServer into Finagle. RB_ID=828289
  • finagle-core: Added a FailureAccrualPolicy that marks an endpoint
    dead when the success rate in a specified time window is under the
    required threshold. RB_ID=829984
  • finagle-core: StackServer now installs an ExpiringService module by default. This
    allows servers to have control over session lifetime and brings the StackServer to
    feature parity with ServerBuilder. RB_ID=837726
  • finagle-exp: Changed DarkTrafficFilter to forward interrupts to dark service. RB_ID=839286
  • finagle-http: ContextFilter and Dtab-extractor/injector logic has been moved from
    the http dispatchers into the client and server stacks. RB_ID=840600
  • finagle-mysql: Added a withMaxConcurrentPreparedStatements method to the client which lets you
    specify how many prepared statements you want to cache at a time. RB_ID=833970
  • finagle-redis: Adds support for scripting commands. RB_ID=837538
  • finagle-netty4: SOCKS5 proxy support. RB_ID=839856
  • finagle-zipkin-core: A new module containing most of the functionality
    from finagle-zipkin, leaving finagle-zipkin with only Scribe specific code
    and a service loader. This allows for other transports to be implemented
    in separate modules. For example the upcoming finagle-zipkin-kafka.
    RB_ID=840494
  • finagle-thriftmux: Introduce a Netty4 implementation of mux and thrift-mux.
    RB_ID=842869

Runtime Behavior Changes

  • finagle-core: For SSLEngine implementations supplied via configuration or
    created by Finagle, the setEnableSessionCreation method is no longer called.
    The supplied value, true, is the default for JSSE implementations, and for
    other engines this can be an unsupported operation. RB_ID=845765
  • finagle-core: Pipelined protocols (memcached, redis) no longer prevent
    connections from being cut by interrupts. Instead, interrupts are masked
    until a subsequent ten second timeout has expired without a response in the
    pipeline. RB_ID=843153
  • finagle-core: MonitorFilter now installs the parameterized monitor, and will
    no longer fail the request automatically if any exception is thrown
    synchronously (like if an exception is thrown in an onSuccess or onFailure
    block). This removes a race, and makes Finagle more deterministic.
    RB_ID=832979