Releases: twitter/finagle
Finagle 18.7.0
New Features
-
finagle-core: There is now an implicit instance for Finagle's default timer:
DefaultTimer.Implicit
. 64963bd8 -
finagle-core: Introduce new command-line flag
c.t.f.tracing.enabled
to entirely
disable/enable tracing for a given process (default:true
). 5a5ceb63 -
finagle-mysql:
com.twitter.util.Time
can now be used with
PreparedStatement
s without converting thectu.Time
to ajava.sql.Timestamp
.
bbca48c7 -
finagle-stats: Adds a lint rule to detect when metrics with colliding names are used.
26a2c3bd
Breaking API Changes
-
finagle-core:
c.t.f.dispatch.ClientDispatcher.wrapWriteException
has been turned from a
partial function instance into a static total function. 9a3c9070 -
finagle-mux:
ClientDiscardedRequestException
now extendsFailureFlags
and is no longer
a case class. fe8c6496
Runtime Behavior Changes
-
finagle-core: Server-side rejections from
c.t.f.filter.RequestSempahoreFilter.module
are now
captured byc.t.f.service.StatsFilter
. They will roll up under "/failures",
"/failures/rejected", and "/failures/restartable" in stats. 3b755c8a -
finagle-core:
c.t.f.tracing.Trace.tracers
now returns only distinct tracers stored in
the local context (returned all tracers before). b96bb137 -
finagle-http: HTTP param decoding is no longer truncated to 1024 params.
24662bea -
finagle-mux: When mux propagates an interrupt started by
BackupRequestFilter
over the
network, theFailureFlags.Ignorable
status is propagated with it. fe8c6496
Finagle 18.6.0
Runtime Behavior Changes
-
finagle-core: By default, the deterministic aperture load balancer doesn't expand
based on the loadband. This is because the loadband is influenced by a degree of
randomness, and this breaks the deterministic part of deterministic aperture and
can lead to aggressive banding on backends. 3d84e297 -
finagle-http2: Unprocessed streams are retryable in case of GOAWAY.
2c89cb9e
New Features
-
finagle-core: Add
PropagateDeadlines
Stack.Param
toTimeoutFilter
for
disabling propagation of deadlines to outbound requests.
8041fbb9 -
finagle-core: Add
toString
implementations toc.t.finagle.Service
and
c.t.finagle.Filter
. Update inFilter#andThen
composition to expose a
usefultoString
for composed Filters and a composed Service (a Filter chain
with a terminal Service or ServiceFactory).The default implementation for
Filter
andService
isgetClass.getName
. When
composing filters, theandThen
composition method correctly tracks the composed
parts to produce a usefultoString
, e.g.,
package com.foo
import com.twitter.finagle.{Filter, Service}
import com.twitter.util.Future
class MyFilter1 extends Filter[Int, Int, Int, Int] {
def apply(request: Int, service: Service[Int, Int]): Future[Int] = ???
}
...
package com.foo
import com.twitter.finagle.{Filter, Service}
import com.twitter.util.Future
class MyFilter2 extends Filter[Int, Int, Int, Int] {
def apply(request: Int, service: Service[Int, Int]): Future[Int] = ???
}
val filters = (new MyFilter1).andThen(new MyFilter2)
filters.toString
would emit the String "com.foo.MyFilter1.andThen(com.foo.MyFilter2)"
If a Service (or ServiceFactory) were then added:
import com.twitter.finagle.{Filter, Service}
import com.twitter.finagle.service.ConstantService
import com.twitter.util.Future
...
val svc: Service[Int, Int] = filters.andThen(new ConstantService[Int, Int](Future.value(2)))
Then, svc.toString
would thus return the String:
"com.foo.MyFilter1.andThen(com.foo.MyFilter2).andThen(com.twitter.finagle.service.ConstantService(ConstFuture(2)))"
Filter implementations are permitted to override their toString
implementations which would
replace the default of getClass.getName
. 25474da1
-
finagle-core: Make
Filter.TypeAgnostic
an abstract class for Java usability.
6534e459 -
finagle-core:
c.t.f.filter.NackAdmissionFilter
is now public. 1855566d -
finagle-core: Extended
c.t.f.ssl.KeyCredentials
andc.t.f.ssl.TrustCredentials
to work
withjavax.net.ssl.KeyManagerFactory
andjavax.net.ssl.TrustManagerFactory
respectively.
c863ca0b
Breaking API Changes
- finagle-core: Rename
DeadlineFilter.Param(maxRejectFraction)
to
DeadlineFilter.MaxRejectFraction(maxRejectFraction)
to reduce confusion
when adding additional params.
cb6975af
Bug Fixes
-
finagle-http2:
StreamTransportFactory
now marks itself as dead/closed when it runs out of
HTTP/2 stream IDs instead of stalling. This allows the connection to be closed/reestablished in
accordance with the spec c5554673 -
finagle-netty4:
SslServerSessionVerifier
is now supplied with the proper peer address
rather thanAddress.failing
. 263e9786 -
finagle-thrift/thriftmux: Disabled client side per-endpoint stats by default for client
ServicePerEndpoint. It can be set viac.t.f.thrift.RichClientParam
or awith
-method
asThrift{Mux}.client.withPerEndpointStats
. 0f1ff3eb -
finagle-netty4: Avoid NoClassDefFoundError if netty-transport-native-epoll is not available
on the classpath. 940809af
Finagle 18.5.0
New Features
-
finagle-base-http: Added ability to add SameSite attribute to Cookies to
comply with https://tools.ietf.org/html/draft-west-first-party-cookies-07.
The attribute may be set in the constructor via thec.t.f.http.Cookie
sameSite
param or via thec.t.f.http.Cookie.sameSite
method.- Pass
SameSite.Lax
to theCookie
to add the "Lax" attribute. - Pass
SameSite.Strict
to theCookie
to add the "Strict" attribute.
4b0a58b0
- Pass
-
finagle-base-http: Introduced an API to extract query string params from a
c.t.f.http.Request
,c.t.f.http.Uri.fromRequest
andc.t.f.http.Uri#params
.
0dd0a425 -
finagle-mysql: Added APIs to
Row
which simplify the common access pattern.
For example,Row.stringOrNull(columnName: String): String
and
Row.getString(columnName: String): Option[String]
.
f3676d31, f3676d31 -
finagle-mysql: Added
read
andmodify
APIs toc.t.f.mysql.Client
and
c.t.f.mysql.PreparedStatement
for that return the specific type of
Result
for those operations,ResultSet
andOK
respectively.
2f3650cf -
finagle-serversets: Zk2Session's AsyncSemaphore which controls the maximum
concurrent Zk operations is configurable (GlobalFlag c.t.f.serverset2.zkConcurrentOperations).
[3160a815](https://github.com/twitter/finagle/commit/3160a815c2552773a67d834841b029dca5ba0122)
-
finagle-mysql: Address
CursoredStatement
usability from Java via
CursoredStatement.asJava()
. Through this, you can use the API with
varargs and Java 8 lambdas. f67978aa -
finagle-toggle: Improved Java compatiblity for
ToggleMap
andToggle
. 16dbe170 -
finagle-toggle:
StandardToggleMap.apply
andStandardToggleMap.registeredLibraries
now
useToggleMap.Mutable
to better support mutating the underlying mutableToggleMap
.
8b136a22
Breaking API Changes
-
finagle-mux: With the introduction of the push-based mux client, we've
removed the need for the optimizedc.t.f.Mux.Netty4RefCountingControl
MuxImpl, which has been removed. 35980463 -
finagle-mysql:
c.t.f.mysql.Client.ping
now returns aFuture[Unit]
instead of the broadFuture[Result]
ADT. 2f3650cf -
finagle-toggle: Changed
ToggleMap.Mutable
from a trait to an abstract class, and
ToggleMap.Proxy
no longer extendsToggleMap
, but now has a self-type that conforms to
ToggleMap
instead. 16dbe170
Runtime Behavior Changes
-
finagle-core: Add
c.t.f.SslException
to better model exceptions related to SSL/TLS.
Thec.t.f.ChannelException.apply
method will now wrapjavax.net.ssl.SSLException
s in
c.t.f.SslException
. 955a0b3e -
finagle-core: MethodBuilder metrics now include failures.
f58ab46f, f58ab46f -
finagle-http: ServerAdmissionControl is circumvented for HTTP requests that have
a body unless the request contains the header 'finagle-http-retryable-request' since
it cannot be known whether the client can actually retry them, potentially resulting
in depressed success rates during periods of throttling. 4377f02a -
finagle-http2: Clients and servers no longer attempt a cleartext upgrade if the
first request of the HTTP/1.1 session has a body. bf09dd4c -
finagle-thriftmux: The push-based client muxer is now the default muxer implementation.
The push-based muxer has better performance and a simpler architecture. cc333151 -
finagle-toggle:
ToggleMap.Proxy#underlying
is now public, andToggleMap.Proxy
participates inToggleMap.components
. 8b136a22
Bug Fixes
-
finagle-base-http: Concurrent modification of the
c.t.f.http.DefaultHeaderMap
could
result in an infinite loop due to HashMap corruption. Access is now synchronized to avoid
the infinite loop. aa73d24d -
finagle-core:
FailureFlags
that have their flags set modified will now
retain the original stack trace, suppressed Throwables, and cause when possible.
f4543472 -
finagle-memcached: Added the missing support for partial success for the batch
operations in the new PartitioningService based Memcached client. 970af633 -
finagle-thrift: Removed copied libthrift files. 9deb18b4
-
finagle-thrift/thriftmux: Server side per-endpoint statsFilter by default is disabled now.
It can be set viac.t.f.thrift.RichServerParam
or awith
-method as
Thrift{Mux}.server.withPerEndpointStats
. 7b0281c5
Finagle 18.4.0
New Features
-
finagle-core:
c.t.f.filter.NackAdmissionFilter
can now be disabled via awith
-method.
$Protocol.client.withAdmissionControl.noNackAdmissionControl
323a20f4 -
finagle-mysql: Exceptions now include the SQL that was being executed when possible.
5a54f45d -
finagle-mysql: Address
PreparedStatement
usability from Java via
PreparedStatement.asJava()
. Through this, you can use the API with
varargs and Java 8 lambdas. c5bd6b97 -
finagle-mysql: Added support for
Option
\s toParameter
implicits. This
allows for the natural represention of nullable columns with anOption
where aNone
is treated as anull
. 48f688d1 -
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.
911a01ce -
finagle-redis: Support has been added for a number of new cluster commands
introduced in Redis 3.0.0. 86b151bf
Bug Fixes
- finagle-mysql: Fix handling of interrupts during transactions. 1b9111eb
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.
1313d9ba -
finagle-thrift: Upgraded libthrift to 0.10.0,
c.t.f.thrift.Protocols.TFinagleBinaryProtocol
constructor now takesstringLengthLimit
andcontainerLengthLimit
,NO_LENGTH_LIMIT
value
changed from 0 to -1. 61c7a711 -
finagle-thrift: Move "stateless" methods in
c.t.finagle.thrift.ThriftRichClient
toc.t.finagle.thrift.ThriftClient
. Then mix theThriftClient
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. 7a175a98 -
finagle-base-http: Removed deprecated
c.t.f.Cookie.value_=
; usec.t.f.Cookie.value
instead. 4bdd261b -
finagle-base-http: Removed deprecated
c.t.f.Cookie.domain_=
; usec.t.f.Cookie.domain
instead. 4bdd261b -
finagle-base-http: Removed deprecated
c.t.f.Cookie.path_=
; usec.t.f.Cookie.path
instead. 4bdd261b
Runtime Behavior Changes
-
finagle-core: Add minimum request threshold for
successRateWithinDuration
failure accrual.
b6caf3dd -
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. 387d87d4 -
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 ac.t.f.SslHostVerificationException
to a
javax.net.ssl.CertificateException
. 1313d9ba -
finagle-core: Closing
c.t.f.NullServer
is now a no-op. 36aac62c -
finagle-netty4: Netty ByteBuf leak tracking is enabled by default. 24690b13
Deprecations
- finagle-thrift: System property "-Dorg.apache.thrift.readLength" is deprecated. Use
constructors to set read length limit for TBinaryProtocol.Factory and TCompactProtocol.Factory.
61c7a711
Finagle 18.3.0
New Features
-
finagle-core:
c.t.f.client.BackupRequestFilter.filterService
for wrapping raw services in a
c.t.f.client.BackupRequestFilter
is now public. b227d988 -
finagle-core: Introduce
c.t.f.Stacks.EMPTY_PARAMS
for getting an empty Param map from
Java, andc.t.f.Stack.Params.plus
for easily adding Params to a Param map from Java.
43e0f007
Bug Fixes
-
finagle-core:
c.t.f.liveness.FailureAccrualFactory
takes no action onc.t.f.Failure.Ignorable
responses. 512894cf -
finagle-core:
c.t.f.pool.WatermarkPool
is resilient to multiple closes on a service instance.
37c29e9e -
finagle-core:
c.t.f.pool.CachingPool
service wrapper instances are resilient to multiple closes.
ce779ec7 -
finagle-core: Requeue module now closes sessions it prevented from propagating up the stack.
f5cdda14 -
finagle-base-http:
c.t.f.http.Netty4CookieCodec.encode
now wraps Cookie values that would
be wrapped inc.t.f.http.Netty3CookieCodec.encode
. 78fdc9aa -
finagle-base-http:
c.t.f.http.Cookie.maxAge
returnsc.t.f.http.Cookie.DefaultMaxAge
(instead of null) if maxAge has been set to null or None in the copy constructor
17a32d44. -
finagle-http: The HTTP client will not attempt to retry nacked requests with streaming
bodies since it is likely that at least part of the body was already consumed and therefore
it isn't safe to retry. a787955b
Breaking API Changes
-
finagle-base-http: Removed
c.t.f.http.Cookie.comment_
,c.t.f.http.Cookie.comment_=
,
c.t.f.http.Cookie.commentUrl_
, andc.t.f.http.Cookie.commentUrl_=
.comment
andcommentUrl
per RFC-6265. NOT FOUND: D137538 -
finagle-base-http: Removed deprecated
c.t.f.http.Cookie.isDiscard
and
c.t.f.http.Cookie.isDiscard_=
, per RFC-6265. 0e03b630 -
finagle-base-http: Removed deprecated
c.t.f.http.Cookie.ports
and
c.t.f.http.Cookie.ports_=
, per RFC-6265. 0469f5b1 -
finagle-base-http:
c.t.f.http.RequestBuilder
has been moved to the finagle-http target
and the implicit evidence,RequestConfig.Yes
has been renamed toRequestBuilder.Valid
.
1632856c -
finagle-base-http: Removed deprecated
c.t.f.Cookie.isSecure
; usec.t.f.Cookie.secure
instead. Removed deprecatedc.t.f.Cookie.isSecure_=
. 33d75b95 -
finagle-base-http: Removed deprecated
c.t.f.http.Cookie.version
and
c.t.f.http.Cookie.version_=
, per RFC-6265. 6c9020cc -
finagle-core:
c.t.f.pool.WatermarkPool
was finalized. 37c29e9e -
finagle-core:
c.t.finagle.ssl.Ssl
and related classes have been
removed. They were replaced as the primary way of using SSL/TLS
within Finagle in release 6.44.0 (April 2017). Please migrate to using
c.t.f.ssl.client.SslClientEngineFactory
or
c.t.f.ssl.server.SslServerEngineFactory
instead. d10a42b8 -
finagle-core: Removed
newSslEngine
andnewFinagleSslEngine
from
ServerBuilder
. Please implement a class which extends
c.t.f.ssl.server.SslServerEngineFactory
with the previously passed in
function used as the implementation of theapply
method. Then use the
created engine factory with one of thetls
methods instead.
d10a42b8 -
finagle-core: The deprecated
c.t.f.loadbalancer.DefaultBalancerFactory
has been removed.
f6971d76 -
finagle-exp: The deprecated
c.t.f.exp.BackupRequestFilter
has been removed. Please use
c.t.f.client.BackupRequestFilter
instead. 350d8821 -
finagle-http: Removed the
c.t.f.Http.Netty3Impl
. Netty4 is now the only
underlying HTTP implementation available. ef9fedb1 -
finagle-zipkin-scribe: Renamed the finagle-zipkin module to finagle-zipkin-scribe, to
better advertise that this is just the scribe implementation, instead of the default.
c23ef398
Finagle 18.2.0
New Features
-
finagle-core: Add orElse to allow composition of
FailureAccrualPolicy
s.
8c1e718e -
finagle-core:
c.t.f.http.MethodBuilder
now exposes a methodnewService
without a
methodName
to create a client.c.t.f.thriftmux.MethodBuilder
now exposes a
methodservicePerEndpoint
without amethodName
to create a client. d8e010d6 -
finagle-thriftmux: Expose the underlying configured client
label
in the
c.t.finagle.thriftmux.MethodBuilder
. 653e2696
Bug Fixes
- finagle-http2: http2 servers no longer leak ping bodies. 02841dfd
Deprecations
- finagle-core:
c.t.finagle.ssl.Ssl
and related classes have been
deprecated. They were replaced as the primary way of using SSL/TLS
within Finagle in release 6.44.0 (April 2017). Please migrate to using
c.t.f.ssl.client.SslClientEngineFactory
or
c.t.f.ssl.server.SslServerEngineFactory
instead. 0b8a2890
Breaking API Changes
-
finagle-base-http:
c.t.f.h.codec.HttpCodec
has been moved to thefinagle-http
project. 350953ae -
finagle base-http:
c.t.f.h.Request.multipart
has been removed.
Usec.t.f.h.exp.MultipartDecoder
instead. b9d71e36 -
finagle-http: Split the toggle 'c.t.f.h.UseH2C' into a client-side toggle and a
server-side toggle, named 'c.t.f.h.UseH2CClients', and 'c.t.f.h.UseH2CServers',
respectively. 0d960398
Runtime Behavior Changes
- finagle-core: Finagle clients with retry budgets or backoffs should no
longer have infinite hash codes. 88e7bea9
Finagle 18.1.0
New Features
-
finagle-core:
FailureDetector
has a new method,onClose
, which provides
a Future that is satisfied when theFailureDetector
marks a peer as Closed.
PHAB_ID=D126840
-
finagle-core: Introduce trace logging of requests as they flow through a
Finagle client or server. These logs can be turned on at runtime by setting
the "com.twitter.finagle.request.Logger" logger to trace level.
PHAB_ID=D124352
-
finagle-http2: HTTP/2 clients now expose the number of currently opened streams under
the$client/streams
gauge.PHAB_ID=D127238
-
finagle-http2: HTTP/2 servers now expose the number of currently opened streams under
the$server/streams
gauge.PHAB_ID=D127667
-
finagle-memcached: By default, the Memcached client now creates two connections
to each endpoint, instead of 4.PHAB_ID=D119619
-
finagle-redis: Add support for redis Geo Commands.
PHAB_ID=D123167
based on the PR
#628 written by Mura-Mi [https://github.com/Mura-Mi] -
finagle-thrift: Add
c.t.f.thrift.service.ThriftServiceBuilder
and
c.t.f.thrift.service.ReqRepThriftServiceBuilder
for backwards compatibility
of creating higher-kinded method-per-endpoint clients.PHAB_ID=D127538
-
finagle-core:
c.t.f.http.MethodBuilder
andc.t.f.thriftmux.MethodBuilder
now
exposeidempotent
andnonIdempotent
methods, which can be used to configure
retries and the sending of backup requests.PHAB_ID=D122087
Bug Fixes
-
finagle-mysql: Fix a bug with transactions where an exception during a rollback
could leave the connection with a partially committed transaction.PHAB_ID=D122771
-
finagle-toggle:
c.t.f.toggle.Toggle
s are independent; that is, applying the same value to
two different toggles with the same fraction will produce independent true/false
values.PHAB_ID=D128172
Runtime Behavior Changes
-
finagle-core, finagle-netty4: When creating engines, SslClientEngineFactories now use
SslClientEngineFactory.getHostString
instead ofSslClientEngineFactory.getHostname
.
This no longer performs an unnecessary reverse lookup when a hostname is not supplied
as part of theSslClientConfiguration
.PHAB_ID=D124369
-
finagle-http2: Supplies a dependency on io.netty.netty-tcnative-boringssl-static,
which adds support for ALPN, which is necessary for encrypted http/2. To use a
different static ssl dependency, exclude the tcnative-boringssl dependency and
manually depend on the one you want to use.PHAB_ID=D119555
Breaking API Changes
-
finagle-base-http, finagle-http: Removed Apache Commons Lang dependency,
org.apache.commons.lang3.time.FastDateFormat
now isjava.time.format.DateTimeFormatter
.
PHAB_ID=D121479
-
finagle-base-http:
c.t.f.http.Message.headerMap
is now an abstract method.
PHAB_ID=D120931
-
finagle-core:
c.t.f.ssl.server.SslServerSessionVerifier
no longer uses the unauthenticated
host information fromSSLSession
.PHAB_ID=D124815
-
finagle-memcached:
ConcurrentLoadBalancerFactory
was removed and its behavior
was replaced by a Stack.Param inside finagle-core'sLoadBalancerFactory
.
PHAB_ID=D119394
-
finagle-thrift, finagle-thriftmux: Remove
ReqRep
specific methods. Since the "ReqRep"
builders are now subclasses of their non-"ReqRep" counterparts their is no longer a
need to expose "ReqRep" specific methods.PHAB_ID=D123341
Deprecations
-
finagle-exp:
c.t.f.exp.BackupRequestFilter
has been deprecated. Please use
c.t.f.client.BackupRequestFilter
instead.PHAB_ID=D122344
-
finagle-http:
c.t.f.http.Request.multipart
has been deprecated.
Usec.t.f.http.exp.MultipartDecoder
instead.PHAB_ID=D126013
Finagle 17.12.0
New Features
-
finagle-core: Expose Tunables for MethodBuilder timeout configuration. Update
the http.MethodBuilder and thriftmux.MethodBuilder to accept Tunables for
configuring total and per-request timeouts. c912dd4b -
finagle-thrift, finagle-thriftmux: Add support for Scrooge
ReqRepServicePerEndpoint
functionality. df5f10bd -
finagle-thriftmux: Add support for Scrooge
ServicePerEndpoint
and
ReqRepServicePerEndpoint
functionality tothriftmux.MethodBuilder
.
3abaa524
Breaking API Changes
-
finagle-base-http: Remove deprecated [Request|Response].[encode|decode][Bytes|String]
methods. Use c.t.f.h.codec.HttpCodec methods instead. 006de6a3 -
finagle-thrift: Move
ThriftRichClient
andThriftRichServer
to
c.t.finagle.thrift
package. fcf66bae
Runtime Behavior Changes
-
finagle-core: The "pipelining/pending" stat has been removed from protocols
usingc.t.f.dispatch.PipeliningClientDispatcher
. Refer to the "pending" stat
for the number of outstanding requests. 0d162d17 -
finagle-thrift,thriftmux: Tracing of RPC method names has been removed. This
concern has moved into Scrooge. df161758
Deprecations
- finagle-core:
c.t.f.BackupRequestLost
has been deprecated. Please use a
c.t.f.Failure
flaggedc.t.f.Failure.Ignorable
instead. fb37aed5
Finagle 17.11.0
New Features
-
finagle-core: Add
ResponseClassifier
s, RetryOnTimeout and RetryOnChannelClosed,
for exceptions that are commonly retried when building from ClientBuilder but had
no MethodBuilder equivalents. 3d292b49 -
finagle-netty4:
Netty4Transporter
andNetty4Listener
are now accessible, which
allows external users to create their own protocols for use with Finagle on Netty 4.
3ce475db
Bug Fixes
- finagle-exp: Fix race condition in
LatencyHistogram
which could lead to the wrong
value returned forquantile
. 947884f5
Breaking API Changes
-
finagle-core: Numerous overloads of
c.t.f.Server.serve
have been marked final.
ea543806 -
finagle-thrift: Correctly send
mux.Request#contexts
in all cases. There were some
cases in whichmux.Request#contexts
were not always propagated. The contexts are
now always written across the transport. Note that there may be duplicated contexts
between "local" context values and "broadcast" context values. Local values will
precede broadcast values in sequence. 45832aad
Finagle 17.10.0
Release Version Format
- From now on, release versions will be based on release date in the format of
YY.MM.x where x is a patch number. 8efc24b1
New Features
-
finagle-core: DeadlineFilter may now be created from the class and used as a
regular Filter in addition to a stack module as before. b80a1df4 -
finagle-mysql: Add ability to toggle the
CLIENT_FOUND_ROWS
flag. fae2e69d -
finagle-http: Separated the DtabFilter.Extractor from the ServerContextFilter into
a new module: ServerDtabContextFilter. While this is still enabled in the default
Http server stack, it can be disabled independently of the ServerContextFilter.
335d639f
Runtime Behavior Changes
-
finagle-netty4:
Netty4ClientEngineFactory
andNetty4ServerEngineFactory
now
validate loaded certificates in all cases to ensure that the current date
range is within the validity range specified in the certificate. dc3230e3 -
finagle-netty4:
TrustCredentials.Insecure
now works with native SSL/TLS engines.
6b822e94 -
finagle-http2: Upgraded to the new netty http/2 API in netty version 4.1.16.Final,
which fixes several long-standing bugs but has some bugs around cleartext http/2.
One of the work-arounds modifies the visibility of a private field, so it's incompatible
with security managers. This is only true for http/2--all other protocols will be unaffected.
bb01393f -
finagle-http: Netty 3
HeaderMap
was replaced with our own implementation.
199dc51c
Deprecations
-
finagle-base-http: With the intention to make
c.t.f.http.Cookie
immutable,
set
methods onc.t.f.http.Cookie
have been deprecated:comment_=
commentUrl_=
domain_=
maxAge_=
path_=
ports_=
value_=
version_=
httpOnly_=
isDiscard_=
isSecure_=
Use the
c.t.f.http.Cookie
constructor to setdomain
,maxAge
,path
,value
,httpOnly
,
andsecure
.comment
,commentUrl
,ports
,version
, anddiscard
have been removed
per RFC-6265. 71760096.Alternatively, use the
domain
,maxAge
,path
,httpOnly
, andsecure
methods to create a
newCookie
with the existing fields set, and the respective field set to a given value.
14beb975 -
finagle-base-http:
c.t.f.http.Cookie.isSecure
andc.t.f.http.Cookie.isDiscard
have been deprecated. Usec.t.f.http.Cookie.secure
forc.t.f.http.Cookie.isSecure
.
isDiscard
has been removed per RFC-6265. 71760096
Breaking API Changes
-
finagle-mysql: Moved
Cursors.cursor
method toClient
trait, and removedCursors
trait.
This allows cursor queries to used with transactions. 1224721c -
finagle-mux: Expose transport contexts in mux.Request and mux.Response. f0f46785
-
finagle-mux: The "leased" gauge has been removed from the mux client implementation since the
metric is reported as the sum of the value over all clients which is unlikely to be useful.
1c31e384