Finagle v6.36.0 Release Notes

  • ๐Ÿ—„ 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 <https://finagle.github.io/blog/2016/04/20/scala-210-and-java7/>_ 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-core: Simplified and unified the constructors for FailureAccrualFactory into a single constructor. RB_ID=849660

    • ๐Ÿ—„ 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-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-memcached: c.t.f.memcached.Client now uses c.t.bijection.Bijection instead of c.t.u.Bijection. RB_ID=834383

    • ๐Ÿšš 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

    • 0๏ธโƒฃ 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``