Skip to content

Releases: twitter/finagle

Finagle 7.1.0

06 Sep 21:55
Compare
Choose a tag to compare

New Features

  • finagle-core: If a c.t.u.tunable.Tunable request or total timeout has been configured
    on a client which uses a c.t.f.client.DynamicTimeout filter, the current value of tunable will
    be used in the case of no dynamic timeout set for a request. PHAB_ID=D81886

  • finagle-core: FailFastException now captures the throwable that caused it. PHAB_ID=D86396

  • finagle-redis: finagle interface for redis DBSIZE command. PHAB_ID=D85305

Bug Fixes

  • finagle-core: Unregister ServerRegistry entry on StackServer#close. A
    StackServer entry is registered in the ServerRegistry on serve of the
    server but never unregistered. It is now unregistered on close of
    the StackServer. PHAB_ID=D83200

  • finagle-netty4: Netty4ClientEngineFactory and Netty4ServerEngineFactory now
    properly load all chain certificates when the SslClientConfiguration or
    SslServerConfiguration uses KeyCredentials.CertKeyAndChain instead of just the
    first one in the file. PHAB_ID=D82414

Runtime Behavior Changes

  • finagle-stats: Verbosity levels are now respected: debug-metrics aren't exported
    by default. PHAB_ID=D85278

  • finagle-netty4: ChannelTransport no longer considers the Channel.isWritable result
    when determining status. PHAB_ID=D82670

Deprecations

  • finagle-base-http: Encoding/decoding methods on c.t.f.http.Request and c.t.f.http.Response
    to/from Strings and arrays of bytes have been deprecated. Use the methods on
    c.t.f.http.codec.HttpCodec instead:
    • For c.t.f.http.Request.encodeString, use c.t.f.Http.codec.HttpCodec.encodeRequestToString
    • For c.t.f.http.Request.encodeBytes, use c.t.f.Http.codec.HttpCodec.encodeRequestToBytes
    • For c.t.f.http.Request.decodeString, use c.t.f.Http.codec.HttpCodec.decodeStringToRequest
    • For c.t.f.http.Request.decodeBytes, use c.t.f.Http.codec.HttpCodec.decodeBytesToRequest`
    • For c.t.f.http.Response.encodeString, use c.t.f.Http.codec.HttpCodec.encodeResponseToString
    • For c.t.f.http.Response.decodeString, use c.t.f.Http.codec.HttpCodec.decodeStringToResponse
    • For c.t.f.http.Response.decodeBytes, use c.t.f.Http.codec.HttpCodec.decodeBytesToResponse
      PHAB_ID=D81341

Breaking API Changes

  • finagle-core: com.twitter.finagle.loadbalancer.DeterministicOrdering was renamed
    to com.twitter.finagle.loadbalancer.ProcessCoordinate and the internal Coord ADT
    was changed as well. PHAB_ID=D84452

  • finagle-core: Remove deprecated method httpProxyTo(String, Option[Transporter.Credentials]).
    Use httpProxyTo(String, Transporter.Credentials] instead. PHAB_ID=D84077

  • finagle-*-http: Netty 3 specific HTTP transport related code has been moved into its own
    project, finagle-netty3-http, in preparation for removing it from Finagle.
    PHAB_ID=D84101

  • finagle-memcached: Remove deprecated method BaseClient.release(). Use
    BaseClient.close() instead. PHAB_ID=D83168

  • finagle-memcached: Move c.t.f.memcached.java.Client to c.t.f.memcached.JavaClient,
    c.t.f.memcached.java.ClientBase to c.t.f.memcached.JavaClientBase, and
    c.t.f.memcached.java.ResultWithCAS to c.t.f.memcached.ResultWithCAS. PHAB_ID=D83719

  • finagle-core: Added a new type member Context to Transport, and a method that
    returns a context, which has most of the methods currently directly on Transport.
    Also deprecates most of those methods--please start using the context instead of the
    Transport directly. Also added type parameters to Transporter, Listener, and
    type members to StackClient and StackServer. PHAB_ID=D83972

Finagle 7.0.0

17 Aug 18:22
Compare
Choose a tag to compare

New Features

  • finagle-core: A StackClient can be configured with a c.t.u.tunable.Tunable
    request timeout using .withRequestTimeout(tunable); this facilitates changing
    the timeout at runtime, without server restart. See tunables for details.
    PHAB_ID=D80751.

  • finagle-core: SslClientSessionVerifier and SslServerSessionVerifier have been added
    as Stack params for executing custom SSL/TLS Session verification logic on the
    establishment of an SSL/TLS Session. PHAB_ID=D63256

  • finagle-core: tls methods which take an SslClientSessionVerifier have
    been added to ClientBuilder and ClientTransportParams
    (withTransport.tls). tls methods which take an SslServerSessionVerifier
    have been added to ServerBuilder and ServerTransportParams
    (withTransport.tls). PHAB_ID=D68645

  • finagle-core: Timer tasks submitted to the c.t.f.util.DefaultTimer can have their
    execution time monitored. Slow executing tasks may result in a log message at level WARN
    and a counter of slow tasks is kept under finagle/timer/slow. This can be enabled using
    the global flag c.t.f.util.defaultTimerProbeSlowTasks and the maximum allowed runtime
    and minimum duration between log messages can be tuned using the global flags
    c.t.f.util.defaultTimerSlowTaskMaxRuntime, and
    c.t.f.util.defaultTimerSlowTaskLogMinInterval, respectively. PHAB_ID=D70279

  • finagle-core: The JVM metrics for GC, allocations, memory, and more have moved
    here from TwitterServer. See the new JVM section in the user guide.
    PHAB_ID=D80883

  • finagle-http, finagle-thriftmux: MethodBuilder has been promoted out of experimental.
    MethodBuilder is a collection of APIs for client configuration at a higher level than
    the Finagle 6 APIs while improving upon the deprecated ClientBuilder.
    See the user guide for details. PHAB_ID=D60032

  • finagle-http: add withNoAutomaticContinue api to disable automatically sending 100 CONTINUE
    responses. PHAB_ID=D80017

  • finagle-http: The nack related logic in the c.t.f.h.c.HttpClientDispatcher has been
    moved into a filter, c.t.f.h.f.ClientNackFilter which has been added to the client
    stack and can now be removed based on its Stack.Role. PHAB_ID=D78902

  • finagle-init: Introduce a module to support service-loading initialization
    code. PHAB_ID=D75950

  • finagle-memcached: Added support for partitioned backends in finagle client. Introducing
    the new PartitioningService (PHAB_ID=D75143), KetamaPartitioningService (PHAB_ID=D77499)
    and MemcachedPartitioningService (PHAB_ID=D78927), which provide this support at different
    levels of abstraction. The c.t.f.Memcached util, that is used for creating new memcached
    clients, now creates a new partitioning client that utilizes these new services for the
    Memcached protocol. The new memcached client can be enabled by setting the toggle
    "com.twitter.finagle.memcached.UsePartitioningMemcachedClient" to 1.0. PHAB_ID=D80352

  • finagle-mux: Default to new more efficient decoder. PHAB_ID=D80225

  • finagle-mysql: IsolationLevel support was added with
    Transactions.transactionWithIsolation method, so the default level can be overridden
    at the transaction level. PHAB_ID=D68944

  • finagle-mysql: Add support for unsigned integers. When enabled, unsigned integers that do
    not fit into the existing signed representation are widened. For example an unsigned
    Int32 is represented as a Java Long, etc. Because this changes the c.t.f.mysql.Value
    variant returned by the row, it is disabled by default and must be enabled with the param
    c.t.f.Mysql.param.UnsignedColumns. PHAB_ID=D78721

  • finagle-netty4: Adds support for passing a chain file to the default TLS implementation.
    PHAB_ID=D59531

  • finagle-netty4: Netty 4 transports now use pooled allocators by default. PHAB_ID=D75014

  • finagle-netty4: KeyCredentials.CertKeyAndChain is now available to use with
    Netty4ServerEngineFactory. PHAB_ID=D80494

  • finagle-netty4: c.t.f.netty4.trackReferenceLeaks is now a CLI flag (default: disabled)
    rather than a toggle. PHAB_ID=D80654

  • finagle-stats: Metrics now report verbosity levels via MetricsView.verbosity.
    PHAB_ID=D78150

  • finagle-stats: JsonExporter now respects verbosity levels (current default behavior is
    to keep exporting "debug" metrics). Adjust com.twitter.finagle.stats.verbose tunable
    whitelist to change it. PHAB_ID=D79571

  • finagle-tunable: StandardTunableMap is now public. Users can access file-based, in-memory,
    and service-loaded tunable values using the map.
    See tunables for details.
    PHAB_ID=D80751.

  • finagle: Changed dependencies of Netty from 4.1.10 to 4.1.12. PHAB_ID=D60438

Bug Fixes

  • finagle-mysql: Fix decoding error for medium length integers. PHAB_ID=D78505

Breaking API Changes

  • finagle: Finagle is now decoupled from Netty 3. Depend on finagle-netty3
    explicitly if needed. PHAB_ID=D65268

  • finagle-base-http: The HTTP message model has been refactored to remove backing
    Netty 3 types. Additionally, the Request and Response classes now have private
    constructors to enforce a more appropriate inheritance model: Request.Proxy and
    Response.Proxy are now the point of entry for extending the HTTP model types. Along
    with the model changes the InputStream generated .getInputStream() method of HTTP
    messages no longer consumes the messages body. PHAB_ID=D74519

  • finagle-core: The Framer type has been transformed into a specialized version of a
    more generic abstraction, Decoder[T]. PHAB_ID=D59495

  • finagle-core: Replace the c.t.f.context.RemoteInfo.Available constructor
    which takes ClientId in favor of a version taking String. ClientId is
    Twitter's Thrift specific concept and this should be more generic.
    PHAB_ID=D60136

  • finagle-core: Remove the ability to set a global address sort. This is no longer
    necessary as setting this per client is sufficient. PHAB_ID=D60698

  • finagle-core: Remove global flag com.twitter.finagle.tracing.debugTrace.
    This functionality is better suited as a concrete Tracer implementation instead
    of mixed into the generic code. PHAB_ID=D63252

  • finagle-core: PHAB_ID=D63526

    • ClientBuilder.codec and ServerBuilder.codec have been removed. Use .stack instead.
    • ClientBuilder.channelFactory and ServerBuilder.channelFactory have been removed.
      Use .stack instead.
  • finagle-core: LoadBalancerFactory now takes Stack.Params which allows a client to
    more easily pass in the stack context. PHAB_ID=D73129

  • finagle-memcached: Add c.t.util.Closable trait to c.t.f.memcached.BaseClient.
    PHAB_ID=D63970

  • finagle-mysql: A number of implementation details were made private such as specific
    Row implementations and ResultSet builder functions that consume raw packets.
    PHAB_ID=D78721

  • finagle-netty4-http: HTTP/1.1 implementation based on Netty 4 is no longer experimental
    and is moved out of the exp package. PHAB_ID=D80181

  • finagle-serversets: Remove `ZkMetaData.AddressOrdering, it is no longer used. PHAB_ID=D60698``

  • finagle-stats: c.t.f.stats.MetricsStatsReceiver no longer has constructor variants
    which take a c.t.u.events.Sink as util-events is now deprecated. PHAB_ID=D64437

  • finagle-thrift: The Netty3 thrift implementation has been removed.
    PHAB_ID=D63670

  • finagle-zipkin-core: c.t.f.zipkin.core.SamplingTracer no longer has constructor
    which takes a c.t.u.events.Sink as util-events is now deprecated. PHAB_ID=D64437

  • finagle-zipkin: Zipkin Tracer now exports only three counters: requests, failures,
    success. PHAB_ID=D71965

Runtime Behavior Changes

  • finagle-core: The AsyncSemaphore which sequences dispatches in GenSerialClientDispatcher
    is now failed with a retryable Failure so that the retry logic knows that requests that
    which failed to acquire the semaphore are safe to retry. PHAB_ID=D78904

  • finagle-http: serverErrorsAsFailuresV2 toggle is turned into a flag serverErrorsAsFailures.
    PHAB_ID=D73265

  • finagle-http: Dispatcher stats are now exported under the client scope like
    all other client stats.PHAB_ID=D72265

  • finagle-http: It's now possible to send a response from the HTTP server that has a
    Content-Length header so long as the 'Transfer-Encoding: chunked' isn't set on the response.
    PHAB_ID=D80087

  • finagle-http: Non-streaming servers strip 'expect' headers when a 100 CONTINUE
    response is sent. PHAB_ID=D80017

  • finagle-serversets: Stabilizer is no longer exporting pending_tasks and deviation_ms
    stats. See notify_ms instead. PHAB_ID=D65571

  • finagle-stats, finagle-zipkin-core: No longer publishing c.t.u.events as util-events
    is now deprecated. PHAB_ID=D64437

  • finagle-stats: No longer backed by commons metrics, now its own thing. PHAB_ID=D73497

  • finagle-netty4: Unset Netty's default timeout (10 seconds) for SSL handshake on clients.
    Use .withSession.acquisitionTimeout instead. PHAB_ID=D78500

Finagle 6.45.0

09 Jun 20:19
Compare
Choose a tag to compare

New Features

  • finagle: Changed dependencies of Netty from 4.1.9 to 4.1.10 and tcnative
    from 2.0.0 to 2.0.1. RB_ID=916056

  • finagle-core: c.t.f.n.ssl.SslConnectHandler is no longer exported publicly.
    It has also been renamed to c.t.f.n.ssl.client.SslClientConnectHandler.
    RB_ID=916932

  • finagle-core: c.t.f.factory.ServiceFactoryCache is now exported publicly.
    RB_ID=915064

  • finagle-core: Allow customization of load balancer behavior when no nodes
    are Status.Open. See the user guide for details:
    https://twitter.github.io/finagle/guide/Clients.html#behavior-when-no-nodes-are-available
    RB_ID=916145

  • finagle-core: The global c.t.f.naming.NameInterpreter can be optionally set using
    service loader. RB_ID=917082

  • finagle-redis: Support scanning over sets and sorted sets with SSCAN and ZSCAN.
    RB_ID=916484

Bug Fixes

  • finagle-mux: Disable Netty4RefCountingControl decoder when message fragmentation
    is enabled. PHAB_ID=D58153

  • finagle: Fixed Java API for withStack for Client and Server implementations.
    Java users now get the correct types for calls such as c.t.f.Http.client().withStack
    and c.t.f.Http.server().withStack. RB_ID=915440

  • finagle-thrift, finagle-thriftmux: Clients created using newServiceIface now use the
    configured c.t.f.service.ResponseClassifier (or c.t.f.service.ResponseClassifier.Default if
    not configured) for per-method stats and usage in c.t.f.liveness.FailureAccrualFactory and
    c.t.f.stats.StatsFilter. RB_ID=917010

Runtime Behavior Changes

  • finagle: Add a floor of 8 to the default values of the flags c.t.f.netty3.numWorkers
    and c.t.f.netty4.numWorkers. RB_ID=916465

  • finagle-core: c.t.f.util.DefaultTimer is decoupled from Netty 3 and is loaded via the
    LoadService machinery. If no timers are available on the class path, the JavaTimer
    instead is used instead. This ony affects direct usages of DefaultTimer as all Finagle
    protocols are using Netty 4 HashedWheelTimer at this point. RB_ID=915924

  • finagle-core: The load balancer implementations no longer close the endpoint
    resources when they are closed. Instead, they treat them as externally
    managed resources and expect the layers above to manage them. No change
    is required if using the Balancers in the context of a Finagle client.
    If that's not the case, however, managing the life cycle of the passed
    in endpoints is necessary. RB_ID=916415

  • finagle-core: Aperture load balancers now expire idle sessions which fall
    out of the aperture window. RB_ID=916508

  • finagle-http: Uses Netty 4 as the default transport implementation.
    Use .configured(Http.Netty3Impl) to switch implementation over to Netty 3.
    PHAB_ID=D58698 RB_ID=917936

  • finagle-memcached: If the client decoder detects a protocol failure, the ClientTransport
    will close the connection. RB_ID=917685

  • finagle-netty4: poolReceiveBuffers toggle is removed (suppressed by UsePooling).
    RB_ID=917912

  • finagle-http: To conform to RFC 2616, a message body is NO LONGER sent when 1xx, 204
    and 304 responses are returned. To conform with RFC 7230, a Content-Length header field
    is NOT sent for 1xx and 204 responses. Both rules are enforced even if users intentionally
    add body data or the header field for these responses. If violation of these rules is
    detected then an error message is logged. RB_ID=917827

Breaking API Changes

  • finagle: $protocol.Client.params/stack and $protocol.Server.params/stack are removed,
    use similar methods on instances instead: $protocol.client.params/stack and
    $protocol.server.params/stack instead. RB_ID=915703

  • finagle-core: Remove deprecated c.t.f.builder.ClientBuilder.tracerFactory.
    Use c.t.f.builder.ClientBuilder.tracer instead. Remove deprecated
    c.t.f.tracing.Tracer.Factory. Use c.t.f.tracing.Tracer instead.
    RB_ID=915481

  • finagle-core: Remove deprecated c.t.f.Deadline. Use c.t.f.context.Deadline instead.
    RB_ID=915550

  • finagle-core: Remove deprecated c.t.f.builder.ClientBuilder.cluster and
    c.t.f.builder.ClientBuilder.group. Use c.t.f.builder.ClientBuilder.dest instead.
    RB_ID=915098

  • finagle-core: Remove deprecated c.t.f.tracing.Trace.recordRpcName. Use
    c.t.f.tracing.Trace.recordRpc and c.t.f.tracing.Trace.recordServiceName instead.
    RB_ID=916426

  • finagle-core: Remove deprecated c.t.f.builder.Cluster. Use com.twitter.finagle.Name to
    represent clusters instead. RB_ID=916162

  • finagle-core: LoadBalancerFactory now takes an EndpointFactory which is an
    extension of ServiceFactory that carries an address and has the ability to
    be rebuilt. RB_ID=916956

  • finagle-base-http: Remove deprecated c.t.f.http.Message.ContentTypeWwwFrom.
    Use c.t.f.http.Message.ContentTypeWwwForm instead. ``RB_ID=915543`

  • finagle-exception: Remove deprecated c.t.f.exception.Reporter.clientReporter and
    c.t.f.exception.Reporter.sourceReporter. Use c.t.f.exception.Reporter.monitorFactory
    instead. RB_ID=916403

  • finagle-http: Remove deprecated c.t.f.http.HttpMuxer.pattern. Specify a route
    using c.t.f.http.HttpMuxer.route(pattern, this) instead. RB_ID=915551

  • finagle-http: Remove deprecated c.t.f.http.filter.ValidateRequestFilter. Create a custom
    filter if this behavior is needed. RB_ID=915548

  • finagle-kestrel: Remove deprecated methods on c.t.f.kestrel.MultiReader:

    • apply(cluster: Cluster[SocketAddress], queueName: String)
    • apply(clients: Seq[Client], queueName: String)
    • apply(handles: ju.Iterator[ReadHandle])
    • newBuilder(cluster: Cluster[SocketAddress], queueName: String)
    • merge(readHandleCluster: Cluster[ReadHandle])
      Use the c.t.f.Var[Addr]-based apply methods on c.t.f.kestrel.MultiReaderMemcache or c.t.f.kestrel.MultiReaderThriftMux instead. RB_ID=914910
  • finagle-kestrel: Removed from the project. RB_ID=915221
    https://finagle.github.io/blog/2017/04/06/announce-removals/

  • finagle-mdns: Removed from the project. RB_ID=915216
    https://finagle.github.io/blog/2017/04/06/announce-removals/

  • finagle-memcached: Remove deprecated c.t.f.memcached.BaseClient.cas methods.
    Use c.t.f.memcached.BaseClient.checkAndSet instead. RB_ID=914678

  • finagle-memcached: c.t.f.memcached.protocol.text.Encoder object is now private.
    RB_ID=917214

  • finagle-memcached: Make memcached Response subtypes with no fields case objects.
    RB_ID=917137

  • finagle-mysql: Remove deprecated methods on c.t.f.Mysql:

    • withCredentials; use c.t.f.Mysql.client.withCredentials instead
    • withDatabase; use c.t.f.Mysql.client.withDatabase instead
    • withCharset; use c.t.f.Mysql.client.withCharset instead
    • configured; use c.t.f.Mysql.client.configured instead
      RB_ID=916418
  • finagle-native: Removed from the project. RB_ID=915204
    https://finagle.github.io/blog/2017/04/06/announce-removals/

  • finagle-netty4: AnyToHeapInboundHandler is gone. Use BufCodec while designing
    new Finagle protocols. RB_ID=915251

  • finagle-ostrich4: Removed from the project. RB_ID=915327
    https://finagle.github.io/blog/2017/04/06/announce-removals/

  • finagle-redis: ChannelBuffer methods and converters are removed. Use Buf-based API
    instead. Removed APIs: RB_ID=916015

    • c.t.f.redis.NettyConverters
    • c.t.f.redis.util.StringToChannelBuffer
    • c.t.f.redis.Client.watch(Seq[ChannelBuffer])
  • finagle-stream: Removed from the project. RB_ID=915200
    https://finagle.github.io/blog/2017/04/06/announce-removals/

  • finagle-thrift: Remove deprecated c.t.f.thrift.transport.netty3.ThriftServerBufferedCodec
    and c.t.f.thrift.transport.netty3.ThriftServerBufferedCodecFactory. Use the c.t.f.Thrift
    object to build a server. RB_ID=915656

  • finagle-thriftmux: Remove deprecated c.t.f.ThrifMux.withClientId. Use
    c.t.f.ThriftMux.client.withClientId. Remove deprecated c.t.f.ThrifMux.withProtocolFactory.
    Use c.t.f.ThriftMux.client.withProtocolFactory. RB_ID=915655

Finagle 6.44.0

21 Apr 21:15
Compare
Choose a tag to compare

New Features

  • finagle-core: FailureAccrual is now production ready. It has been promoted out of
    experimental and moved from com.twitter.finagle.service.exp to
    com.twitter.finagle.liveness. RB_ID=914662

  • finagle-core: SSL/TLS APIs have been changed to include methods which work
    based on an SSL configuration, and an SSL configuration and an SSL engine factory.
    RB_ID=911209

  • finagle-core: LoadBalancerFactory now exposes a mechanism to order the collection
    of endpoints passed to the balancer implementations. This allows a consistent ordering
    of endpoints across process boundaries. RB_ID=910372

  • finagle-core: Introduce c.t.f.client.EndpointerStackClient, a mechanism for
    making clients that don't need a transporter and dispatcher. This simplifies
    making non-netty clients. RB_ID=912889

  • finagle-http2: Add support for liveness detection via pings. It can be configured
    the same way as it is in mux. RB_ID=913341

  • finagle-toggle: Standard toggles now track the last value produced from apply.
    These values are visible via TwitterServer's /admin/toggles endpoint. RB_ID=913925

Breaking API Changes

  • finagle-mysql: Support for Netty 3 has been removed, making Netty 4 the only transport
    implementation. RB_ID=914661

  • finagle-core: com.twitter.finagle.service.exp.FailureAccrualPolicy has been promoted to
    com.twitter.finagle.liveness.FailureAccrualPolicy

  • finagle-commons-stats: Remove finagle-commons-stats, which was a compatibility layer
    for a deprecated stats library. Please move to finagle-stats instead. RB_ID=910964

  • finagle-core: SSL/TLS stack params for Finagle running Netty 4 have changed.

    • The TlsConfig param in Transport has been removed.
    • For client engines, the same two parameters as Finagle running Netty 3 are now used:
      • ClientSsl in Transport, which is used for configuring a client Engine's hostname,
        key credentials, trust credentials, cipher suites, protocols, and application protocols.
      • SslClientEngineFactory in SslClientEngineFactory, which determines how the Engine
        is created based off of an Address and an SslClientConfiguration.
    • For server engines, the same two parameters as Finagle running Netty 3 are now used:
      • ServerSsl in Transport, which is used for configuring a server Engine's key
        credentials, trust credentials, cipher suites, protocols, application protocols, and
        where the server supports or requires client authentication.
      • SslServerEngineFactory in SslServerEngineFactory, which determines how the Engine
        is created based off of an SslServerConfiguration.
    • Note: Not all client and server configurations work with all engine factories. Each engine
      factory should document what is not supported by that specific engine factory.
    • Note: By default, Finagle on Netty 4 will use the Netty4ClientEngineFactory and
      Netty4ServerEngineFactory respectively.
      RB_ID=910500
  • finagle-core: Change the API to LoadBalancerFactory to a more concrete
    Activity[IndexedSeq[ServiceFactory[Req, Rep]]] since the majority of the
    load balancer implementations don't need the properties of a Set but instead
    need ordering guarantees and efficient random access. RB_ID=910372

  • finagle-core: Balancers.aperture now has a new parameter useDeterministicOrdering,
    which is set to false by default. This feature is still experimental and under
    construction. This will break the Java API and require the additional param to
    be passed in explicitly. RB_ID=911541

  • finagle-core: The logic for tracking sessions that was in StdStackServer has been lifted into
    a new template, ListeningStackServer where implementations define the creation of a
    ListeningServer from a ServiceFactory, SocketAddress, and a function that tracks accepted
    sessions. RB_ID=914124

  • finagle-core: Change the AddressOrdering param to no longer take a StatsReceiver,
    since orderings were simplified and are no longer composite. RB_ID=914113

  • finagle-core: Remove deprecated methods on c.t.f.Client:

    • newClient(dest: Group[SocketAddress])
    • newService(dest: Group[SocketAddress])
      RB_ID=914787
  • finagle-core: c.t.f.ListeningServer no longer extends c.t.f.Group. Use
    c.t.f.ListeningServer.boundAddress to extract the address from the server.
    RB_ID=914693

  • finagle-core: Remove deprecated c.t.f.group.StabilizingGroup. Use
    c.t.f.addr.StabilizingAddr instead. RB_ID=914823

  • finagle-core: Constructors for c.t.f.ChannelException and its subclasses now have
    overloads that take Option\s instead of allowing null. While the existing
    constructors remain, and forward to the new ones, this can still cause compilation
    failures when the arguments are ambiguous. RB_ID=914800

  • finagle-core: Remove MimimumSetCluster since it has been deperecated for quite
    some time. Instead, use finagle logical destinations via Names. RB_ID=914849

  • finagle-core: Remove deprecated c.t.f.Resolver.resolve. Use c.t.f.Resolver.bind
    instead. Remove deprecated c.t.f.BaseResolver.resolve. Use c.t.f.Resolver.eval
    instead. RB_ID=914986

  • finagle-http: c.t.f.http.Http codec has disappeared as part of Netty 4 migration. Use
    c.t.f.Http.client or c.t.f.Http.server stacks instead. RB_ID=912427

  • finagle-kestrel: Remove c.t.f.kestrel.param.KestrelImpl. Kestrel clients and servers
    now use Netty 4 and cannot be configured for Netty 3. RB_ID=911031

  • finagle-memcached: Remove c.t.f.memcached.param.MemcachedImpl. Memcached clients and servers
    now use Netty 4 and cannot be configured for Netty 3. RB_ID=911031

  • finagle-kestrel: Remove commands that are not supported by the client:

    • com.twitter.finagle.kestrel.protocol.DumpConfig
    • com.twitter.finagle.kestrel.protocol.DumpStats
    • com.twitter.finagle.kestrel.protocol.FlushAll
    • com.twitter.finagle.kestrel.protocol.Reload
    • com.twitter.finagle.kestrel.protocol.ShutDown
    • com.twitter.finagle.kestrel.protocol.Stats
    • com.twitter.finagle.kestrel.protocol.Version
      RB_ID=911206
  • finagle-memcached: Remove deprecated c.t.f.memcached.KetamaClientBuilder. Use
    c.t.f.Memcached.client to create a Memcached client. RB_ID=907352

  • finagle-memcached: Remove deprecated c.t.f.memcached.replication.ReplicationClient. Use
    c.t.f.memcached.replication.BaseReplicationClient with clients created using
    c.t.f.Memcached.client. RB_ID=907352

  • finagle-memcached: Remove deprecated methods on c.t.f.memcached.Client:

    • apply(name: Name)
    • apply(host: String)

    Use c.t.f.Memcached.client to create a Memcached client. RB_ID=908442

  • finagle-memcached: Remove deprecated c.t.f.memcached.protocol.text.Memcached object.
    Use c.t.f.Memcached.client to create Memcached clients. RB_ID=908442

  • finagle-memcached: Remove deprecated c.t.f.memcached.Server class. Use
    c.t.f.memcached.integration.TestMemcachedServer for a quick test server.
    RB_ID=914827

  • Remove deprecated c.t.f.memcached.PartitionedClient object. Use
    c.t.f.memcached.CacheNodeGroup.apply instead of
    c.t.f.memcached.PartitionedClient.parseHostWeights. RB_ID=914827

  • Remove deprecated c.t.f.memcached.util.ParserUtils.DIGITS. Use "^\d+$" instead.
    Remove deprecated c.t.f.memcached.util.ParserUtils.DigitsPattern. Use Pattern.compile(^\d+$)
    instead. RB_ID=914827

  • finagle-memcached: Remove old c.t.f.memcached.replicated.BaseReplicationClient and
    c.t.f.memcached.migration.MigrationClient, and most c.t.f.memcached.CachePoolCluster
    methods. RB_ID=910986

  • finagle-memcached: Remove old c.t.f.memcached.migration.DarkRead, and
    c.t.f.memcached.migration.DarkWrite. RB_ID=911367

  • finagle-memcached: Remove c.t.f.memcached.CachePoolConfig. RB_ID=914623

  • finagle-mux: Netty 3 implementation of Mux is removed. Default is
    Netty 4. RB_ID=914239

  • finagle-netty4: DirectToHeapInboundHandler was renamed to AnyToHeapInboundHandler
    and now copies any inbound buffer (not just directs) on heap. RB_ID=913984

  • finagle-thrift, finagle-thriftmux: Remove rich client/server support for prior
    versions of Scrooge generated code. RB_ID=911515

  • finagle-core: c.t.f.client.Transporter no longer has a close method, which
    was introduced in 6.43.0. It was sort of a hack, and we saw the opportunity
    to do it properly. RB_ID=912889

  • finagle-core, finagle-mux: Move FailureDetector from c.t.f.mux to c.t.f.liveness.
    This also means that the sessionFailureDetector flag is now
    c.t.f.liveness.sessionFailureDetector. RB_ID=912337

Bug Fixes

  • finagle-exp: DarkTrafficFilter now respects the log level when HasLogLevel,
    and otherwise defaults the level to warning instead of error. RB_ID=914805

  • finagle-netty4: Fixed connection stall on unsuccessful proxy handshakes in Finagle clients
    configured with HTTP proxy (Transporter.HttpProxyTo). RB_ID=913358

Runtime Behavior Changes

  • finagle-netty4: Finagle is no longer logging the failed proxy handshake response.
    RB_ID=913358

  • finagle-netty4: SOCKS5 proxies are now bypassed if the connect destination is
    localhost. This matches Finagle's prior behavior from when Netty 3 was the default
    transport implementation. ``RB_ID=914494...

Read more

Finagle 6.43.0

11 Mar 07:49
Compare
Choose a tag to compare

New Features

  • finagle-base-http: c.t.f.http.Message now has a Java friendly method to set the
    HTTP version: Message.version(Version). RB_ID=906946

  • finagle-base-http: Added Java friendly methods to the HTTP model including
    c.t.f.http.Message.contentLength(Long), c.t.f.http.Message.contentLengthOrElse(Long): Long,
    and c.t.f.http.Request.method(Method). RB_ID=907501

  • finagle-base-http: c.t.f.http.HeaderMap now has a method, HeaderMap.newHeaderMap for
    creating new empty HeaderMap instances. RB_ID=907397

  • finagle-core: SSL/TLS client and server configurations and engine factories have
    been added for finer grained control when using TLS with Finagle. RB_ID=907191

Breaking API Changes

  • finagle-base-http: c.t.f.http.MapHeaderMap has been made private. Please use
    HeaderMap.apply or HeaderMap.newHeaderMap to construct a new HeaderMap instance.
    RB_ID=907397

  • finagle-base-http: c.t.f.http.Version is no longer represented by case objects
    and has been replaced by val instances of a case class. RB_ID=906946

  • finagle-base-http: The common HTTP methods are no longer modeled by case objects but
    as instances of a single c.t.f.http.Method class. The string representation of the HTTP
    method is now available via the Method.name method. RB_ID=906697

  • finagle-core: Move the java.net.SocketAddress argument from the apply method
    on com.twitter.finagle.client.Transporter to the newTransporter method of
    com.twitter.finagle.client.StackClient. RB_ID=907544

  • finagle-core: Load Balancer implementations no longer mix-in the OnReady trait and
    OnReady was removed. RB_ID=908863

  • finagle-core: HeapBalancer, ApertureLoadBalancer, and RoundRobinBalancer classes were
    made package private. To construct load balancers for use within a Finagle client,
    use the com.twitter.finagle.loadbalancer.Balancers object. RB_ID=909245

  • finagle-core: The aperture constructor on the Balancers object no longer takes
    a Timer since it was unused. RB_ID=909245

  • finagle-core: The load balancer algorithm is now further scoped under "algorithm".
    RB_ID=909309

  • finagle-core: Remove Ring from Finagle core's util since it is unused
    internally. RB_ID=909718

  • finagle-core: SSL/TLS stack params for Finagle running Netty 3 have changed.

    • The TLSClientEngine param in Transport has been replaced by two parameters:
      • ClientSsl in Transport, which is used for configuring a client Engine's hostname,
        key credentials, trust credentials, cipher suites, protocols, and application protocols.
      • SslClientEngineFactory in SslClientEngineFactory, which determines how the Engine
        is created based off of an Address and an SslClientConfiguration.
    • The TLSHostname param in Transporter has been removed. Hostnames should be set as
      part of the SslClientConfiguration now.
    • The TLSServerEngine param in Transport has been replaced by two parameters:
      • ServerSsl in Transport, which is used for configuring a client Engine's key
        credentials, trust credentials, cipher suites, protocols, application protocols, and
        whether the server supports or requires client authentication.
      • SslServerEngineFactory in SslServerEngineFactory, which determines how the Engine
        is created based off of an SslServerConfiguration.
    • Note: Not all client and server configurations work with all engine factories. Each engine
      factory should document what is not supported by that specific engine factory.
    • Note: Users using Finagle-Native should in the short term use LegacyServerEngineFactory
      and in the long term move to using Netty4ServerEngineFactory.
    • Note: With this change, private keys are expected to explicitly be PKCS#8 PEM-encoded keys.
      Users using PKCS#1 keys should in the short term use LegacyKeyServerEngineFactory and in
      the longer term switch to using PKCS#8 keys, or use your own SslServerEngineFactory which
      can explicitly handle those type of keys.
    • Note: By default, Finagle on Netty 3 will use the JdkClientEngineFactory and
      JdkServerEngineFactory respectively.
      RB_ID=907923
  • finagle-core: withLoadBalancer.connectionsPerEndpoint was removed and moved
    into finagle-memcached, which was the only client that uses the feature. RB_ID=908354

  • finagle-core: ClientBuilder.expHttpProxy and ClientBuilder.expSocksProxy are removed.
    Use $Protocol.withTransport.httpProxyTo instead (requires Netty 4 transport). RB_ID=909739

  • finagle-kestrel: Remove the deprecated codec method on c.t.f.kestrel.MultiReaderMemcache.
    Use .stack(Kestrel.client) on the configured c.t.f.builder.ClientBuilder instead.
    RB_ID=907184

  • finagle-kestrel: Removed c.t.f.kestrel.Server. A local Kestrel server is preferred for
    testing. RB_ID=907334

  • finagle-kestrel: Removed deprecated c.t.f.kestrel.protocol.Kestrel. To create a Finagle
    Kestrel client, use c.t.f.Kestrel.client. RB_ID=907422

  • finagle-serversets: Removed the unapply method and modified the signature of
    fromAddrMetadata method in c.t.f.serverset2.addr.ZkMetadata. Instead of pattern
    matching use the modified fromAddrMetadata method. RB_ID=908186

  • finagle-stats: Remove the com.twitter.finagle.stats.exportEmptyHistograms toggle
    which has defaulted to 0.0 for quite some time. Change the default value of the
    com.twitter.finagle.stats.includeEmptyHistograms flag to false to retain the
    behavior. RB_ID=907186

  • finagle-thrift: ThriftServiceIface was refactored to be in terms of ThriftMethod.Args
    to ThriftMethod.SuccessType instead of ThriftMethod.Args to ThriftMethod.Result.
    RB_ID=908846

Runtime Behavior Changes

  • finagle-http: Responses with a server error status code (500s) are now classified
    as a failure. This effects success rate metrics and failure accrual.
    See the com.twitter.finagle.http.serverErrorsAsFailuresV2 toggle for opting
    out of this behavior. RB_ID=909315

  • finagle-netty4: Servers no longer set SO_LINGER=0 on sockets. RB_ID=907325

Deprecations

  • finagle-base-http: The c.t.f.http.Response methods getStatusCode() and setStatusCode()
    have been deprecated. Use the methods statusCode and statusCode(Int) instead.
    RB_ID=908409

  • finagle-http: Now that c.t.f.http.Method and c.t.f.http.Version are represented by
    instances and thus easier to use from Java, the Java helpers c.t.f.http.Versions,
    c.t.f.http.Statuses, and c.t.f.http.Methods have been deprecated. RB_ID=907680

  • finagle-memcached: c.t.f.memcached.replication.ReplicationClient is now deprecated. Use
    c.t.f.memcached.replication.BaseReplicationClient with clients created using
    c.t.f.Memcached.client. RB_ID=907384

  • finagle-thrift: As part of the Netty 4 migration, all c.t.f.Codec and c.t.f.CodecFactory
    types in finagle-thrift are now deprecated. Use the c.t.f.Thrift object to make clients
    and servers. RB_ID=907626

Bug Fixes

  • finagle-http: The HTTP/1.x Client will no longer force-close the socket after receiving
    a response that lacks content-length and transfer-encoding headers but is required per
    RFC 7230 to not have a body. RB_ID=908593

  • finagle-redis: The HSCAN and SCAN commands take an optional argument for pattern matching.
    This argument has been fixed to use the correct name of 'MATCH' instead of the incorrect
    'PATTERN'. RB_ID=908817

  • finagle-thrift: Properly locate sub-classed MethodIface services to instantiate for serving
    BaseServiceIface implemented thrift services. RB_ID=907608

Dependencies

  • finagle: Bump guava to 19.0. RB_ID=907807

Finagle 6.42.0

06 Feb 16:49
Compare
Choose a tag to compare

New Features

  • finagle-commons-stats: Provide a TwitterServer exporter for commons stats.
    This simplifies migration for folks who don't want to switch to
    commons metrics and TwitterServer in one go. It will export stats on the
    /vars.json endpoint. RB_ID=902921
  • finagle-http: Introduce HeaderMap.getOrNull(header), a Java-friendly variant of
    HeaderMap.get(header).orNull. RB_ID=904093

Breaking API Changes

  • finagle: finagle-http-compat has been removed as part of migration off Netty 3. Use
    finagle-http types/APIs directly. RB_ID=903647

  • finagle: finagle-spdy has been removed as part of the migration off Netty 3. Please
    use finagle-http2 as a replacement. RB_ID=906033

  • finagle-base-http: Message.write(ChannelBuffer) has been replaced with a method that
    receives a Buf. The semantics of calling the write method on chunked messages has
    changed from potentially throwing an exception based on the state of the Writer to
    always throwing an IllegalStateException. Existing users of the write(..) methods
    on chunked messages should use the Writer directly. RB_ID=900091

  • fingle-base-http: HeaderMap.getAll(key) now returns a Seq[String] as opposed to a
    Iterable[String]. RB_ID=905019

  • finagle-core: The ChannelTransport implementations which transforms a Netty pipeline into
    a finagle Transport[Req, Rep] have been specialized to Transport[Any, Any] to avoid the
    illusion of a runtime checked cast. Transport.cast has been changed to receive either a
    Class[T] or an implicit Manifest[T] in order to check the inbound cast at runtime. For users
    of the ChannelTransport types, use the Transport.cast method to get a Transport of the right
    type. RB_ID=902053

  • finagle-memcached: Remove deprecated methods on c.t.f.memcached.Client:

    • apply(group: Group[SocketAddress])
    • apply(cluster: Cluster[SocketAddress])

    Use c.t.f.Memcached.client to create a Memcached client. RB_ID=899331

  • finagle-toggle: ToggleMap Toggles now rehash the inputs to
    apply and isDefinedAt in order to promote a relatively even
    distribution even when the inputs do not have a good distribution.
    This allows users to get away with using a poor hashing function
    such as String.hashCode. RB_ID=899195

Deprecations

  • finagle-base-http: Deprecate c.t.f.http.MapHeaderMap as it will
    soon be private. Use c.t.f.http.HeaderMap.apply(..) to get a HeaderMap
    instance. RB_ID=906497

  • finagle-base-http: Deprecate c.t.f.http.HeaderMap += (String, Date).
    Use c.t.f.http.HeaderMap.set(String, Date) instead. RB_ID=906497

  • finagle-base-http: Deprecate c.t.f.http.Message.ContentTypeWwwFrom.
    Use c.t.f.http.Message.ContentTypeWwwForm instead. RB_ID=901041

  • finagle-base-http: Deprecate c.t.f.http.Message.headers(). Use
    c.t.f.http.Message.headerMap instead. RB_ID=905019

  • finagle-base-http: Deprecate the lazy response: Response field on the Request type.
    This field is potentially hazardous as it's not necessarily the Response that will
    be returned by a Service but it is often used as such. Construct a Response using
    the static constructor methods. RB_ID=899983

  • finagle-base-http: Numerous protected[finagle] methods on http.Request and
    http.Response that deal in Netty 3 types have been deprecated as part of the
    migration to Netty 4. RB_ID=905761

  • finagle-http: Deprecate ValidateRequestFilter which now has limited utility.
    See entry in Runtime Behavior Changes. If this is still needed, copy the remaining
    behavior into a new filter. RB_ID=899895

  • finagle-memcached: Deprecate methods on c.t.f.memcached.Client:

    • apply(name: Name)
    • apply(host: String)

    Use c.t.f.Memcached.client to create a Memcached client. `RB_ID=899331``

  • finagle-memcached: Deprecate c.t.f.memcached.protocol.text.Memcached object.
    Use c.t.f.Memcached.client to create Memcached clients. RB_ID=899009

  • finagle-memcached: Deprecations on c.t.f.memcached.util.ParserUtils:

    • For isDigits(ChannelBuffer) use ParserUtils.isDigits(Buf) instead.
    • DIGITS
    • DigitsPattern

    RB_ID=905253

Runtime Behavior Changes

  • finagle-http: The HTTP client will no longer emit a Netty 3/4 TooLongFrameException when
    a response exceeds the specified MaxResponseSize parameter, and instead emits a Finagle
    specific TooLongMessageException which wraps the Netty exception. RB_ID=905567
  • finagle-http: ValidateRequestFilter doesn't look for the uri "/bad-http-request" which
    had been indicative of the netty3 http codec giving up on decoding a http request. These
    events are caught lower in the pipeline and should not bubble up to the level of this
    filter. RB_ID=899895
  • finagle-netty4: DirectToHeapHandler is now aware of ByteBufHolder types hence can copy
    them on to heap. RB_ID=906602
  • finagle-redis: Transport implementation is now based on Netty 4 (instead of Netty 3).
    RB_ID=895728

Bug Fixes

  • finagle-core: Properly compute length when converting a Buf.ByteArray
    to a Netty 4 ByteBuf. RB_ID=901605
  • finagle-memcached: AtomicMap change lock function to synchronize on map
    object. DIFF_ID=D18735
  • finagle-netty4: Fixed connection stall in Finagle clients configured with
    both HTTP proxy (Transporter.HttpProxyTo) and TLS/SSL enabled. RB_ID=904831
  • finagle-netty4: Fixed connection stall in Finagle clients configured with
    both HTTP proxy (Transporter.HttpProxy) and TLS/SSL enabled. RB_ID=904803

Finagle 6.41.0

21 Dec 01:47
Compare
Choose a tag to compare

New Features

  • finagle-core: Added stat "pending_requests/rejected" for the number of requests
    rejected by c.t.f.PendingRequestFilter. RB_ID=898184

Breaking API Changes

  • finagle-core: Remove the Filter#andThen(Req1 => Future[Rep1]): Req2 => Future[Rep2]
    method. This overload is no longer usable in scala 2.12, because Service
    is a SAM. Because of the order in which SAMs get resolved, literal
    functions in scala will get confused about which method they should use.
    Instead of passing a Function directly, wrap the Function with a Service.mk.
    RB_ID=896524.
  • finagle-core: CancelledWriteException was removed as it is no longer used.
    RB_ID=896757
  • finagle-kestrel: The codec method has been removed from the kestrel
    MultiReader object. Configure a ClientBuilder protocol using the default
    thrift StackClient, Thrift.client, via the stack method of ClientBuilder.
    RB_ID=894297

Runtime Behavior Changes

  • finagle-core: c.t.f.builder.ClientBuilder remove deprecated methods.
    The same functionality is available through the Stack-based APIs or
    ClientBuilder.configured, with the exception of channelFactory, which
    has no analog because it exposes a Netty 3 API. RB_ID=893147
    • channelFactory
    • expHostConnectionBufferSize
    • hostConnectionIdleTime
    • hostConnectionMaxIdleTime
    • hostConnectionMaxLifeTime
    • hostConnectionMaxWaiters
    • readerIdleTimeout
    • recvBufferSize
    • sendBufferSize
    • writerIdleTimeout
  • finagle-core: Lower logging level used in c.t.f.util.DefaultMonitor for expected
    exceptions: CancelledRequestException, TooManyWaitersException,
    CancelledConnectionException, FailedFastException. RB_ID=895702
  • finagle-core: c.t.f.util.DefaultMonitor now logs most exceptions at
    WARNING level instead of FATAL. RB_ID=895983
  • finagle-core: c.t.f.util.DefaultMonitor works harder to find the appropriate
    log level by walking the exception's causes to find c.t.util.TimeoutExceptions
    and c.t.logging.HasLogLevel. RB_ID=896695
  • finagle-core: The c.t.f.service.Retries module will now flag a response as
    NonRetryable if either the retry limit is reached or the retry budget is exhausted.
    RB_ID=897800
  • finagle-mdns: Uses only one implementation backed by jmdns instead of trying
    to use a platform specific implementation of DDNS if present. RB_ID=897917
  • finagle-netty4: Client initiated TLS/SSL session renegotiations are now rejected
    by default. RB_ID=895871
  • finagle-netty4: ChannelTransport no longer interrupts netty write operations
    in order to temporarily unblock rollout of netty4. This reverts netty4 back
    to netty3 semantics for writes. RB_ID=896757

Deprecations

  • finagle-kestrel: Deprecate the codec method on c.t.f.kestrel.MultiReaderMemcache.
    Use .stack(Kestrel.client) on the configured c.t.f.builder.ClientBuilder instead.
    RB_ID=895989

Finagle 6.40.0

23 Nov 03:02
Compare
Choose a tag to compare

New Features

  • finagle: Most libraries (excluding finagle-thrift{,mux}) no longer need to
    add an additional resolver that points to maven.twttr.com. RB_ID=878967
  • finagle: Introducing a new Finagle module finagle-base-http that provides
    a common ground for both Netty 3 (finagle-http) and Netty 4 (finagle-netty4-http)
    HTTP implementations. Netty 3 is still a default transport used in Finagle's
    Http.client and Http.server. RB_ID=884614
  • finagle-core: Introduce the c.t.f.client.DynamicTimeout module allowing clients
    to specify call-site specific timeouts. RB_ID=885005
  • finagle-memcached: Introduce c.t.f.memcached.CasResult.replaced: Boolean
    to help transition usage off of the deprecated cas client method to
    checkAndSet. RB_ID=891628
  • finagle-thrift: We now depend on a fork of libthrift hosted in the Central Repository.
    The new package lives in the 'com.twitter' organization. This removes the necessity of
    depending on maven.twttr.com. This also means that eviction will not be automatic and
    using a newer libthrift library requires manual eviction if artifacts are being pulled
    in transitively. RB_ID=885879

Runtime Behavior Changes

  • finagle-core: Monitor logging is improved in Finagle. RB_ID=878890
    • All exceptions caught in the stack are now logged by Finagle's DefaultMonitor
      (previously Util's RootMonitor) such that Twitter's logging
      framework is used instead of JDK logging.
    • DefaultMonitor is now installed implicitly such that it will be composed
      (via orElse) with the monitor passed by a user through the stack param.
      The logic behind this compostion is quite straightforward: exceptions that
      are't handled by a user-defined monitor propagated to the default monitor.
    • DefaultMonitor now logs upstream socket address, downstream socket address,
      and a client/server label if those are available.
    • RootMonitor is still used to handle fatal exceptions from pending side-effect-only
      closures (i.e., onFailure, onSuccess) on a service future/promise.
  • finagle-mux: com.twitter.finagle.Failures are now sent over the wire with
    their flags intact via com.twitter.finagle.mux.transport.MuxFailure in the
    previously unused Rdispatch context. This allows for greater signaling along
    a chain of services. See the "MuxFailure Flags" section of the mux protocol
    spec in finagle-mux/src/main/scala/c/t/f/mux/package.scala RB_ID=882431
  • finagle-netty4: The netty4 listener + transporter no longer manage direct byte
    buffers by default. c.t.f.netty4.channel.DirectToHeapInboundHandler is introduced
    to help protocol builders manage them. RB_ID=881648
  • finagle-stats: Changed the default behavior of empty histograms to only export
    the count. Thus the com.twitter.finagle.stats.exportEmptyHistograms toggle
    now defaults to 0.0. RB_ID=882522

Breaking API Changes

  • finagle: Some APIs around configuring TLS/SSL on Finagle clients have changed to
    unblock Netty 4 adoption. RB_ID=890935
    • c.t.f.Http.client.withTls(Netty3TransporterTLSConfig) is removed. Use
      variations of c.t.f.Http.client.withTransport.tls instead.
    • c.t.f.netty3.Netty3TransporterTLSConfig is removed.
  • finagle: Some APIs around configuring TLS/SSL on Finagle servers have changed to
    unblock Netty 4 adoption. RB_ID=891270
    • c.t.f.Http.server.withTls(Netty3ListenerTLSConfig) is removed. Use
      variations of c.t.f.Http.server.withTransport.tls instead.
    • c.t.f.netty3.Netty3ListenerTLSConfig is removed.
  • finagle-core: Removed the protected and unused method read(permit: Permit): Future[Rep]
    from SerialClientDispatcher. RB_ID=881978
  • finagle-core: Removed a gauge, idle, from c.t.f.factory.ServiceFactoryCache.
    RB_ID=884210
  • finagle-core: ServiceTimeoutException now extends NoStackTrace. RB_ID=886809
  • finagle-core: Marked com.twitter.finagle.util.ConcurrentRingBuffer as
    private. It doesn't fit the typical programming model we encourage for
    users of finagle, and so we found it was rarely used. RB_ID=888801
  • finagle-core: Marked transform in com.twitter.finagle.Stack as protected. It is
    too powerful and unnecessary for users, and should be used by implementors only.
  • finagle-core: Removed the StatsReceiver argument from TimeoutFilter. RB_ID=891380
  • finagle-core: Stopped exporting a few metrics related to deadlines, and replaced with a simpler
    one. There was a per-TimeoutFilter one named timeout/expired_deadline_ms, and a per-server
    one named admission_control/deadline/deadline_budget_ms. We added instead a per-server one
    named admission_control/deadline/exceeded_ms. RB_ID=891380
  • finagle-http: HttpMuxer now takes in a Seq[Route] instead of a
    Seq[(String, Service[Request, Response])]. RB_ID=886829
  • finagle-http: As part of the first step towards restructuring Finagle HTTP modules
    required for Netty 4 adoption, HTTP params are moved from the inner object c.t.f.Http.param
    into their own package c.t.f.http.param. RB_ID=885155
  • finagle-redis: A couple of methods had to be renamed (and return type changed) to
    unblock Netty 4 adoption. RB_ID=882622
    • Command.toChannelBuffer renamed to Command.toBuf and return
      type changed from N3 ChannelBuffer to Finagle Buf.
    • Command.toByteArray is removed.
    • Both Command.key and Command.value now implemented in terms of Bufs
      (no ChannelBuffers).
  • finagle-redis: An API around c.t.f.redis.protocol.Command was modernized as part of
    major restructuring required for the Netty 4 adoption. RB_ID=885811
    • RedisMessage (a common parent for both Command and Reply) has been removed.
    • The encoding machinery was restructured to eliminate duplicated and dead code.
  • finagle-thrift: Removed deprecated ThriftRichClient.newServiceIface methods
    which did not take a label. Use the versions that take a String label.
    RB_ID=891004
  • finagle-thrift: Removed deprecated ThriftRichClient.newIface methods based
    on Groups. Use the versions that a dest or Name. RB_ID=891004
  • finagle-thriftmux: Removed deprecated classes ThriftMuxClient, ThriftMuxClientLike,
    ThriftMuxServer, and ThriftMuxServerLike. RB_ID=880924

Bug Fixes

  • finagle-core: The withTlsWithoutValidation and tlsWithoutValidation
    APIs have been fixed for an issue on Java 8 where certificate validation
    was being attempted instead of bypassed. RB_ID=881660
  • finagle-http: The toggle implementation for com.twitter.finagle.http.serverErrorsAsFailures
    had a bug when toggled on. That toggle is no longer used and is superseded by
    com.twitter.finagle.http.serverErrorsAsFailuresV2. RB_ID=882151
  • finagle-netty4: Connecting to a Socks 5 proxy using Finagle with Netty 4
    now works properly. This previously resulted in a timeout and
    ProxyConnectException. RB_ID=884344
  • finagle-netty4: Don't swallow bind failures. RB_ID=892217

Deprecations

  • finagle-core: c.t.f.builder.ClientBuilder deprecate some seldom used methods.
    The same functionality is available through the Stack-based APIs or
    ClientBuilder.configured. RB_ID=881612
    • hostConnectionIdleTime
    • hostConnectionMaxIdleTime
    • hostConnectionMaxLifeTime
    • hostConnectionMaxWaiters

Finagle 6.39.0

12 Oct 00:32
Compare
Choose a tag to compare

New Features

  • finagle-thriftmux: Allow ThriftMux.Clients to be filtered. This is supported
    in the the StdStackClient but ThriftMux.Client is a StackBasedClient. RB_ID=874560
  • finagle-netty4: Add boolean flag com.twitter.finagle.netty4.poolReceiveBuffers that
    enables/disables pooling of receive buffers (disabled by default). When enabled, lowers
    the CPU usage and allocation rate (GC pressure) with the cost of increased memory
    footprint at the startup. RB_ID=872940
  • finagle-netty4: Add new histogram receive_buffer_bytes (only enabled with pooling)
    to keep track of the receive buffer sizes (useful for tuning pooling). RB_ID=877080
  • finagle: Most libraries (excluding finagle-thrift{,mux}) no longer need to
    add an additional resolver that points to maven.twttr.com. RB_ID=878967

Deprecations

  • finagle-core: c.t.f.builder.ClientBuilder deprecate some seldom used methods.
    The same functionality is available through the Stack-based APIs or
    ClientBuilder.configured. RB_ID=878009
    • readerIdleTimeout
    • writerIdleTimeout
    • recvBufferSize
    • sendBufferSize
    • channelFactory
    • expHostConnectionBufferSize
  • finagle-kestrel: Deprecate c.t.f.kestrel.protocol.Kestrel(),
    c.t.f.kestrel.protocol.Kestrel(failFast), and c.t.f.kestrel.protocol.Kestrel.get().
    To create a Kestrel client using ClientBuilder, use .stack(c.t.f.Kestrel.client).
    RB_ID=870686

Breaking API Changes

  • finagle-core: The constructors for both c.t.f.netty3.Netty3Listener and
    c.t.f.netty3.Netty3Transporter now take Stack.Params instead of
    individual parameters. RB_ID=871251
  • finagle-thrift: The c.t.f.thrift.legacy package has been removed which included
    the public types ThriftCall, ThriftReply, and ThriftCallFactory.
    RB_ID=873982

Runtime Behavior Changes

  • finagle-core: Tolerate TraceIds that are greater than 64 bits in preparation of
    moving to 128 bit ids. RB_ID=874365
  • finagle-http: c.t.f.http.service.HttpResponseClassifier.ServerErrorsAsFailures now
    classifies a retryable nack as a ResponseClass.RetryableFailure. RB_ID=869182
  • finagle-http: c.t.f.Http.{Client,Server} is moving towards treating HTTP
    5xx status codes as failures via
    c.t.f.http.service.HttpResponseClassifier.ServerErrorsAsFailures. This can
    be disabled by setting the toggle "com.twitter.finagle.http.serverErrorsAsFailures"
    to 0.0 or explicitly setting it using withResponseClassifier.
    RB_ID=869303, RB_ID=875367
  • finagle-thrift: Also track response failures in the
    c.t.finagle.thrift.ThriftServiceIface#statsFilter in addition to successful
    responses that encode an Error or Exception. RB_ID=879075

Bug Fixes

  • finagle-http: Fix issue in c.t.finagle.http.RequestBuilder when the URI host contains
    underscores. RB_ID=870978
  • finagle-http: A connection for HTTP/1.0 or non-keep-alive requests is now closed
    gracefully so that all requests that have been issued received responses.
    RB_ID=868767
  • finagle-netty4: ChannelTransport now drains messages before reading more data off the
    transport which should reduce memory pressure in streaming protocols. RB_ID=872639

Finagle 6.38.0

08 Sep 01:29
Compare
Choose a tag to compare

New Features

  • finagle-http: HttpNackFilter now handles both retryable and non-retryable nacks via a new
    header: "finagle-http-nonretryable-nack". These are converted to non-retryable c.t.f.Failures
    and counted by a new counter "nonretryable_nacks". RB_ID=865468
  • finagle-toggle: Is no longer considered experimental. RB_ID=868819

Breaking API Changes

  • finagle-netty4: Move numWorkers flag out of the package object so it gets a
    user friendly name: c.t.f.netty4.numWorkers instead of c.t.f.netty4$.package$.numWorkers.
    RB_ID=123567
  • finagle-core: c.t.f.netty3.WorkerPool is no longer visible outside of c.t.f.netty3.
    RB_ID=123567
  • finagle-core: The content parameter of the ClientSslContext and
    ClientSslContextAndHostname TlsConfig options has been renamed to context.
    RB_ID=868791

Runtime Behavior Changes

  • finagle-thriftmux: Removed "<server_label>/thriftmux/downgraded_connections" and
    "<server_label>/thriftmux/connections" gauges. Counters are still available at
    "<server_label>/thrifmux/connects" and "<server_label>thriftmux/downgraded_connects".
    RB_ID=867459