Finagle v18.4.0 Release Notes

  • ๐Ÿ†• New Features

    
    * finagle-core: `c.t.f.filter.NackAdmissionFilter` can now be disabled via a `with`-method.
      `$Protocol.client.withAdmissionControl.noNackAdmissionControl` ``PHAB_ID=D146873``
    
    * finagle-mysql: Exceptions now include the SQL that was being executed when possible.
      ``PHAB_ID=D150503``
    
    * finagle-mysql: Address `PreparedStatement` usability from Java via
      `PreparedStatement.asJava()`. Through this, you can use the API with
      varargs and Java 8 lambdas. ``PHAB_ID=D156755``
    
    * ๐Ÿ‘ finagle-mysql: Added support for `Option`\s to `Parameter` implicits. This
      allows for the natural representation of nullable columns with an `Option`
      where a `None` is treated as a `null`. ``PHAB_ID=D156186``
    
    * finagle-netty4: Add 'tls/connections' gauge for Finagle on Netty 4 which tracks the number
      of open SSL/TLS connections per Finagle client or server.
      ``PHAB_ID=D144184``
    
    * ๐Ÿ‘ finagle-redis: Support has been added for a number of new cluster commands
      introduced in Redis 3.0.0. ``PHAB_ID=D152186``
    
    ๐Ÿ› Bug Fixes
    ~~~~~~~~~
    
    * finagle-mysql: Fix handling of interrupts during transactions. ``PHAB_ID=D154441``
    
    ๐Ÿ’ฅ Breaking API Changes
    
    • ๐Ÿšš finagle-core: c.t.f.ssl.client.HostnameVerifier has been removed since it was using sun.security.util.HostnameChecker which is no longer accessible in JDK 9. PHAB_ID=D144149

    • โฌ†๏ธ finagle-thrift: Upgraded libthrift to 0.10.0, c.t.f.thrift.Protocols.TFinagleBinaryProtocol constructor now takes stringLengthLimit and containerLengthLimit, NO_LENGTH_LIMIT value changed from 0 to -1. PHAB_ID=D124620

    • ๐Ÿšš finagle-thrift: Move "stateless" methods in c.t.finagle.thrift.ThriftRichClient to c.t.finagle.thrift.ThriftClient. Then mix the ThriftClient trait into the ThriftMux and Thrift Client companions to make it clearer that these stateless methods are not affected by the changing state of the configured client instance but are instead simply utility methods which convert or wrap the incoming argument. PHAB_ID=D143185

    • ๐Ÿšš finagle-base-http: Removed deprecated c.t.f.Cookie.value_=; use c.t.f.Cookie.value instead. PHAB_ID=D148266

    • ๐Ÿšš finagle-base-http: Removed deprecated c.t.f.Cookie.domain_=; use c.t.f.Cookie.domain instead. PHAB_ID=D148266

    • ๐Ÿšš finagle-base-http: Removed deprecated c.t.f.Cookie.path_=; use c.t.f.Cookie.path instead. PHAB_ID=D148266

    โš™ Runtime Behavior Changes

    
    * finagle-core: Add minimum request threshold for `successRateWithinDuration` failure accrual.
      ``PHAB_ID=D154129``
    
    * finagle-core: `c.t.f.filter.NackAdmissionFilter` no longer takes effect when
      the client's request rate is too low to accurately update the EMA value or
      drop requests. ``PHAB_ID=D143996``
    
    * finagle-core: SSL/TLS client hostname verification is no longer performed by
      `c.t.f.ssl.client.HostnameVerifier`. The same underlying library
      `sun.security.util.HostnameChecker` is used to perform the hostname verification.
      However it now occurs before the SSL/TLS handshake has been completed, and the
      exception on failure has changes from a `c.t.f.SslHostVerificationException` to a
      `javax.net.ssl.CertificateException`. ``PHAB_ID=D144149``
    
    * finagle-core: Closing `c.t.f.NullServer` is now a no-op. ``PHAB_ID=D156098``
    
    * 0๏ธโƒฃ finagle-netty4: Netty ByteBuf leak tracking is enabled by default. ``PHAB_ID=D152828``
    
    ๐Ÿ—„ Deprecations
    ~~~~~~~~~~~~
    
    * ๐Ÿ—„ finagle-thrift: System property "-Dorg.apache.thrift.readLength" is deprecated. Use
      constructors to set read length limit for TBinaryProtocol.Factory and TCompactProtocol.Factory.
      ``PHAB_ID=D124620``