Finagle v6.42.0 Release Notes
-
๐ 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 aBuf
. The semantics of calling thewrite
method on chunked messages has changed from potentially throwing an exception based on the state of theWriter
to always throwing anIllegalStateException
. Existing users of thewrite(..)
methods on chunked messages should use theWriter
directly.RB_ID=900091
fingle-base-http:
HeaderMap.getAll(key)
now returns aSeq[String]
as opposed to aIterable[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 toapply
andisDefinedAt
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 asString.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 specificTooLongMessageException
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``