Finagle v18.8.0 Release Notes

  • ๐Ÿ†• New Features

    
    * finagle-core: Introducing the new `c.t.f.tracing.Tracing` API for more efficient tracing
      (dramatically reduces the number of context lookups; see scaladoc for `c.t.f.tracing.Trace`).
      ``PHAB_ID=D190670``
    
    * finagle-core: `c.t.f.tracing.Trace` facade API now provides forwarding `record` methods for
      all kinds of annotations and is a preffered way of recording traces. ``PHAB_ID=D192598``
    
    * finagle-thriftmux: Promote the push-based ThriftMux implementation out of experimental
      status.``PHAB_ID=D189187``
    
    ๐Ÿ’ฅ Breaking API Changes
    
    • ๐Ÿšš finagle-base-http: c.t.f.http.cookie.exp.supportSameSiteCodec has been moved out of the exp package to c.t.f.http.cookie.supportSameSiteCodec. PHAB_ID=D196517

    • finagle-core: Parameter-less annotation classes (c.t.f.tracing.Annotation) have been promoted to objects for efficiency reasons. PHAB_ID=D192598

    • finagle-core: c.t.f.tracing.Trace.record(Record) now accepts the record argument by value (previously by name). PHAB_ID=D193300

    • finagle-core: c.t.f.Failure.{Restartable, Interrupted, Ignorable, DeadlineExceeded, Wrapped, Rejected, NonRetryable} are deprecated in favor of the c.t.f.FailureFlags analogs. PHAB_ID=D195647

    • finagle-core: c.t.f.Leaf and c.t.f.Node are now private; use Stack.leaf and Stack.node instead. PHAB_ID=D195924

    • finagle-core: Marked transform in com.twitter.finagle.Stack as protected. It is too powerful and unnecessary for users, and should be for implementor use only. PHAB_ID=D195938

    • finagle-mysql: c.t.f.mysql.CanBeParameter's implicit conversions timestampCanBeParameter, sqlDateCanBeParameter, and javaDateCanBeParameter have been consolidated into a single implicit, dateCanBeParameter. PHAB_ID=D195351

    ๐Ÿ› Bug Fixes

    
    * ๐Ÿ›  finagle-http2: Fixed a race condition caused by c.t.f.http.transport.StreamTransports being
      closed, but that status not being reflected right away, causing a second request to fail.
      ``PHAB_ID=D198198``
    
    โš™ Runtime Behavior Changes
    
    • finagle-core: c.t.f.tracing.Trace API is no longer guarding Trace.record calls behind Trace.isActivelyTracing. Add Trace.isActivelyTracing guards on the call sites if materializing tracing annotations is a performance concern. PHAB_ID=D193300

    • โช finagle-mysql: Clients will now issue a ROLLBACK each time a service is checked back into the connection pool. This can be disabled via Mysql.Client.withNoRollback. PHAB_ID=D196673

    • โœ… finagle-thriftmux: The push-based server muxer is now the default. In both synthetic tests and production it has shown signifcant performance benefits and is simpler to maintain. PHAB_ID=D193630

    • ๐Ÿšš finagle-mysql: Remove deprecated TimestampValue.apply(Timestamp) and TimestampValue.unapply(value) methods. Use TimestampValue.apply(TimeZone, TimeZone) instead. PHAB_ID=D182920

    ๐Ÿ—„ Deprecations

    
    * ๐Ÿ—„ finagle-mux: The pull based mux implementation, c.t.f.Mux, has been deprecated in favor of
      the push-based mux implementation, c.t.f.pushsession.MuxPush. ``PHAB_ID=D193630``