@roanta roanta released this Jun 9, 2017 · 923 commits to develop since this release

Assets 2

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.

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

  • finagle-core: Allow customization of load balancer behavior when no nodes
    are Status.Open. See the user guide for details:

  • 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.

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).

  • 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.

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

  • 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.

  • 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.

  • 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

  • finagle-mdns: Removed from the project. RB_ID=915216

  • 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.

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

  • 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
  • finagle-native: Removed from the project. RB_ID=915204

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

  • finagle-ostrich4: Removed from the project. RB_ID=915327

  • 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

  • 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