finagle:一个支持容错,协议无关的RPC系统
finagle:一个支持容错,协议无关的RPC系统 finaglehelper released this
Breaking API Changes
- finagle-thrift: Change the partition locator function getLogicalPartitionId in
PartitioningStrategy from Int => Int to Int => Seq[Int], which supports many to many mapping
from hosts and logical partitions. ab641adc
Runtime Behavior Changes
- finagle-core: Disable eager connections for balancers with a non 1.0 weight. 11eae0d6
Assets
2
finaglehelper released this
New Features
- finagle-core: Add RelativeName field to Metric Metadata and populate it for
client and server metrics. de589ffa - finagle-scribe: Add c.t.finagle.scribe.Publisher for publishing messages to a
Scribe process. 7723a949
Runtime Behavior Changes
- finagle: Bump version of Jackson to 2.11.2. 6c6c882a
Bug Fixes
- finagle-core: The TraceId alternative constructor now forwards the traceIdHigh parameter to
the primary constructor. 567e8d66
Assets
2
finaglehelper released this
20.8.1
New Features
- finagle-thriftmux: Add MethodBuilder specific APIs for ThriftMux partition aware client.
e2f467c1
Assets
2
20.8.0
Runtime Behavior Changes
- finagle-netty4-http: Post, Put, Patch non-streaming outbound requests with empty bodies will
be added the Content-Length header with value 0. 9ce18e85 - finagle-core: A ServiceFactory created by ServiceFactory.const/constant propagates the wrapped
service status. 3347c095 - finagle-http: c.t.f.http.filter.PayloadSizeFilter no longer adds an annotation on each
streaming chunk and instead aggregates the byte count and adds a single record on stream
termination. e87b1c35 - finagle-zipkin-scribe: zipkin scribe log_span prefix replaced with scribe. zipkin-scribe/scribe/<stats>. 5b100ee9
New Features
- finagle-core: introduce type-safe ReqRep variant 459daf68
- finagle-core: Added a new variant of Filter.andThenIf which allows passing the parameters
as individual parameters instead of a Scala tuple. fb071d9b - finagle-core: new metric (counter) for traces that are sampled. finagle/tracing/sampled 1d6503e0
- finagle-netty4: Add the c.t.f.netty4.Netty4Listener.MaxConnections param that can be used
to limit the number of connections that a listener will maintain. Connections that exceed
the limit are eagerly closed. 9991aae3 - finagle-thrift: Added java-friendly c.t.f.thrift.exp.partitioning.ClientHashingStrategy and
c.t.f.thrift.exp.partitioning.ClientCustomStrategy create methods, and added java-friendly
c.t.f.thrift.exp.partitioning.RequestMergerRegistry#addRequestMerger and
c.t.f.thrift.exp.partitioning.ResponseMergerRegistry#addResponseMerger to make partitioning
easier to use from Java. e0d78d14
Breaking API Changes
- finagle-core: ReqRep can no longer be created via new ReqRep(..). Please use
ReqRep.apply(..) instead.
459daf68 - finagle-thrift: Updated the c.t.f.thrift.exp.partitioning.ClientHashingStrategy and the
c.t.f.thrift.exp.partitioning.ClientCustomStrategy to take constructor arguments instead
of needing to override methods on construction. e0d78d14 - finagle-zipkin-core: Removed unused statsReceiver constructor argument from RawZipkinTracer. 5b100ee9
Assets
2
finaglehelper released this
20.7.0
Breaking API Changes
- finagle-core: Correct the spelling of Tracing.recordClientSendFrargmet() to
Tracing.recordClientSendFragment() 30726c01 - finagle-redis: Use StrictKeyCommand for XDEL d174f9d6
- finagle-toggle: Toggle.isDefinedAt(i: Int) has become Toggle.isDefined. Additionally, a new method Toggle.isUndefined has been added. 3bb78ce8
- finagle-zipkin-scribe: The scribe.thrift file was moved to finagle-thrift/src/main/thrift under a new
namespace. com.twitter.finagle.thrift.scribe.(thrift|thriftscala) 01a20b79
Bug Fixes
- finagle-zipkin-scribe: The scribe client should be configured using the NullTracer. Otherwise, spans
produced by the client stack will be sampled at initialSampleRate. 0446dd3e
Assets
2
finaglehelper released this
Runtime Behavior Changes
- finagle-core: FailFastFactory is now disabled at runtime when a client's destination has only
one endpoint, since the client cannot do anything meaningful by breaking the circuit early.
This is recommended as a best practice anyway, now it's the default behavior. Less things
to configure and worry about! f2c100e8 - finagle-core: namer annotations are prefixed with "clnt/". c8680fff
- finagle-core: namer.success & namer.failure are not annotated as they are not request based.
namer.tree annotation was also removed to reduce the size of traces. c8680fff - finagle-core: The offload filter client annotation is annotated under the child request span instead of
its parent. The offload filter annotations are also changed to be binary annotations with the key
(clnt|srv)/finagle.offload_pool_size and the value being the pool size 011f096d - finagle-memcached: The key in RetrievalCommand are ommited in traces. The total number of Hits
and Misses are annotated via a counter instead under clnt/memcached.(hits/misses) 6fd0e2c9
Breaking API Changes
- finagle-core: Migrated List[Tracer] to Seq[Tracer] in Tracing, and tracersCtx.
cb06890b - finagle-core: PayloadSizeFilter and WireTracingFilter are now public APIs.
fc1951a5 - finagle-zipkin-core: initialSampleRate flag will now fail if the sample rate is not in the range
[0.0, 1.0]. 180f333c - finagle-mysql: mysql client annos are prefixed with clnt/ 37d55c2a
New Features
- finagle-thrift: Expose c.t.f.thrift.exp.partitioning.PartitioningStrategy,
the bundled PartitioningStrategy APIs are public for experiments.
bf1d47be - finagle-http: Add LoadBalancedHostFilter to allow setting host header after LoadBalancer
5304ce69 - finagle-core: Trace the request's protocol identified by the ProtocolLibrary of the client
stack. This is annotated under clnt/finagle.protocol. 464bbeb6 - finagle-core: Add letTracers to allow setting multiple tracers onto the tracer stack.
cb06890b - finagle-core: DeadlineFilter now exposes a metric admission_control/deadline/remaining_ms
which tracks the remaining time in non-expired deadlines on the server side. An increase in this
stat, assuming request latency is constant and timeout configurations upstream have not changed,
may indicate that upstream services have become slower. 939f9a3e - finagle-redis: Make partitionedClient accessible. 7ba107e1
- finagle-core, finagle-http, finagle-thriftmux: introduce MethodBuilder maxRetries
configuration. A ThriftMux or HTTP method can now be configured to allow a specific number of
maximum retries per request, where the retries are gated by the configured RetryBudget. This
configuration can be applied via Http.client.methodBuilder(name).withMaxRetries(n) or
ThriftMux.client.methodBuilder(name).withMaxRetries(n). 4328896d - finagle-memcached: Annotate the shard id of the backend the request will reach. 6fd0e2c9
Bug Fixes
Assets
2
finaglehelper released this
Runtime Behavior Changes
- finagle: Bump jackson version to 2.11.0. 696bb515
Assets
2
New Features
-
finagle-redis: Add
ConnectionInitCommand
stack to set database and password.
9fe05301 -
finagle-mysql: Add
ConnectionInitSql
stack to set connection init sql. bd4411dd
Runtime Behavior Changes
- finagle-core: Requeued reqeuests due to the
c.t.finagle.service.RequeueFilter
will generate
their own spanId. af490773
Bug Fixes
-
finagle-core: Restrict
OffloadFilter
from allowing interruption of the work performed in the worker pool. This is to ensure that the worker thread isn't interruptible, which is a
behavior of certainFuturePool
implementations. f0af6ad7 59f9f2b5 -
finagle-netty4: ChannelStatsHandler will now only count the first channel
close(..)
call when incrementing thecloses
counter. 3fa91944
Breaking API Changes
-
finagle-toggle: Removed abstract type for
c.t.finagle.Toggle
, all Toggles are of typeInt
.
This is to avoid Integer auto-boxing when callingToggle.apply
, thus to improve overall toggle performance. c81a87b0 -
finagle-core: Retried requests due to the
c.t.finagle.service.RetryFilter
will generate their
own spanId. 762471a0
Assets
2
finaglehelper released this
New Features
- finagle-thrift/thriftmux: Thrift and ThriftMux client side can set a sharable
TReusableBuffer bywithTReusableBufferFactory
. 9213ca35
Breaking API Changes
-
finagle-partitioning: Rename
c.t.finagle.partitioning.CacheNode
andCacheNodeMetadata
toc.t.finagle.partitioning.PartitionNode
andPartitionNodeMetadata
. d32f0c25 -
finagle-partitioning: Rename
c.t.finagle.partitioning.KetamaClientKey
toHashNodeKey
2d0cd33e
Bug Fixes
- finagle-base-http: RequestBuilder headers use SortedMap to equalize keys in different caps.
setHeader
keys are case insensitive, the last one wins. 535f324c
Assets
2
finaglehelper released this
New Features
- finagle-opencensus-tracing: Add support for providing a custom TextFormat for header
propagation. a02d377a
Runtime Behavior Changes
-
finagle-netty4: When not using the JDK implementation, the Netty reference counted SSL
types are used which move SSL cleanup out of the GC cycle, reducing pause durations.
466aa5bf -
finagle-base-http: Support for the
SameSite
cookie attribute is now on by default. This can
be manipulated via thecom.twitter.finagle.http.cookie.supportSameSiteCodec
flag. This means
that cookies that have a value other thanUnset
for thesameSite
field will have the
attribute encoded (by servers) and decoded (by clients). See this
Chromium blog post
for more information about theSameSite
attribute. f96c3729 -
finagle-core: The default NullTracer for ClientBuilder has been removed. Affected clients may
now see tracing enabled by default via the Java ServiceLoader, as described in the
Finagle User's Guide. 6b3f0940 -
finagle-http2: The HTTP/2 frame logging tools now log at level INFO. This is symmetric with
the behavior of theChannelSnooper
tooling which serves a similar purpose which is to aid
in debugging data flow and isn't intended to be enabled in production. 78e4596b
Bug Fixes
-
finagle-zipkin-scribe: add a logical retry mechanism to scribe's TRY_LATER response 23ff595b
-
finagle-http2: Initialize state in H2Pool before use in the gauge to avoid a
NullPointerException. 289de8a3 -
finagle-http2: HTTP/2 server pipeline now traps close calls to ensure that
events from the initial HTTP/1.x pipeline don't close the HTTP/2 session. For
example, the initial pipeline was subject to session timeouts even though the
tail of the socket pipeline was effectively dead. Closing of HTTP/2 server
pipelines is now handled through theH2ServerFilter
. 670dbf74 -
finagle-http2: HTTP/2 servers clean out unused channel handlers when upgrading
from a HTTP/1.x pipeline, removing some traps such as unintended timeouts.
3dfe8226 -
finagle-opencensus-tracing: Fixed internal server error when invalid or no propagation headers
are provided. a02d377a -
finagle-zipkin-scribe: export application metrics under a consistent
zipkin-scribe
scope. Finagle client
stats underclnt/zipkin-scribe
a17659dd
Breaking API Changes
-
finagle-zipkin-scribe: update the deprecated
FutureIface
toMethodPerEndpoint
23ff595b -
finagle-zipkin-scribe: Coalesce
ScribeRawZipkinTracer
apply methods into two simple ones. a17659dd -
finagle-zipkin-scribe:
DefaultSampler
moved toc.t.f.zipkin.core
in finagle-zipkin-core. ac9c7ec1 -
finagle-zipkin-scribe:
initialSampleRate
GlobalFlag is moved to finagle-zipkin-core, under the same package
scopec.t.f.zipkin
. ac9c7ec1
Assets
2
New Features
- finagle-memcached: Upgrade to Bijection 0.9.7. de0ec2c6
- finagle-opencensus-tracing: Enables cross-build for 2.13.0. fee83b10
- finagle-thriftmux: Add support for automatically negotiating compression between a client
and server. Off by default, clients and servers must be configured to negotiate.
d42c87a9 - finagle-stats: Enables cross-build for 2.13.0. 4144d73c
- finagle-stats-core: Enables cross-build for 2.13.0. 4144d73c
- finagle-serversets: Add generic metadata support in ServerSet. Add support for announcing the
generic metadata via ZkAnnouncer. Add support to resolve the generic metadata via Zk2Resolver
180bb925
Breaking API Changes
Assets
2
New Features
- finagle-core, finagle-exp: Add annotations to
DarkTrafficFilter
to identify which span
is dark, as well as which light span it correlates with. ba351f4d - finagle-core: Introduce Trace#traceLocal for creating local spans within a trace context.
1c6d5d24
Runtime Behavior Changes
- finagle: Upgrade to jackson 2.9.10 and jackson-databind 2.9.10.1 e333c839
- finagle-core: Per-method metrics on MethodBuilder are now created lazily, so if you have
methods that you don't use, the associated metrics won't be exported. 6be5dc48 - finagle-mysql: The RollbackFactory no longer attempts to roll back if the underlying
session is closed since it is highly unlikely to succeed. It now simply poisons the
session and calls close. 99135e00 - finagle-netty4: Change the 'connection_requests' metric to debug verbosity.
a6dc1296 - finagle-serversets: Ensure ZkSession#retrying is resilient to ZK host resolution failure.
7125026a - finagle-thrift: Per-method metrics are now created lazily, so if you have methods on a Thrift
service that you don't use, the associated metrics won't be exported. 6be5dc48 - finagle-zipkin-core: Tracing produces microsecond resolution timestamps in JDK9 or later.
08a926c6 - finagle-core: Trace#time and Trace#timeFuture no longer generate timestamped annotations or
silently discard timing information. They now instead generate a BinaryAnnotation containing
the timing information. In order to also get timestamped Annotations for when the operation
began and ended, use in conjunction with Trace#traceLocal. 1c6d5d24
Breaking API Changes
- finagle-core: The RetryPolicy companion object is no longer a JavaSingleton.
9ffb3d13 - finagle-thrift: The RichClientParam constructors are now all either
deprecated, so to construct it, you must call one of the RichClientParam.apply
methods. 6be5dc48
Deprecations
- finagle-core: Deprecate Tracing#record(message, duration) as it does not have the intended
effect and silently discards any duration information in the resulting trace. Instead you should
use either Tracing#recordBinary or a combination of Trace#traceLocal and Trace#time.
1c6d5d24
Bug Fixes
- finagle-core: ClosableService client stack module that prevents the reuse of closed services
when FactoryToService is not set. This is important for clients making use of the newClient
api. c64bea09
Assets
2
finaglehelper released this
New Features
- finagle-base-http: The Uri class now provides access publicly to its
path, which is the request uri without the query parameters.
f40fe447 - finagle-mysql: Adding native support to finagle-mysql for MySQL JSON Data Type. A client
can now use jsonAsObjectOrNull[T] or getJsonAsObject[T] APIs on c.t.f.mysql.Row to
read the underlying json value as type T or use jsonBytesOrNull API to get a raw byte
array of the the json column value. 4d403051 - MySQL integration tests can now run on a port other than the default (3306). Add a port
property to .finagle-mysql/integration-test.properties to customize the value.
4d403051
Runtime Behavior Changes
- finagle: Upgrade to Netty 4.1.43.Final and netty-tcnative 2.0.26.Final. cfaaa471
- finagle: Add initial support for JDK 11 compatibility. 04def84b
- finagle: Upgrade to caffeine 2.8.0 c335b29e
- finagle-http2: Nacks in the form of RST(STREAM_REFUSED | ENHANCE_YOUR_CALM) no
longer surface as a RstException, instead opting for a generic Failure to be
symmetric with the HTTP/1.x nack behavior. cb67fa33 - finagle-mux: The mux handshake latency stat has be changed to Debug
verbosity. 0eb2cfb6 - finagle-serversets: finagle/serverset2/stabilizer/notify_ms histogram has been downgraded to
debug verbosity. 30d3d0ea
Breaking API Changes
- finagle-base-http: c.t.f.http.codec.HttpContext moved into c.t.f.http.codec.context.HttpContext
cc29b265
Assets
2
finaglehelper released this
New Features
- finagle-partition: Enables cross-build for 2.13.0. 89f06885
- finagle-exception: Enables cross-build for 2.13.0. d90ae646
- finagle-exp: Enables cross-build for 2.13.0. 32bc9f48
- finagle-mysql: Enables cross-build for 2.13.0. ef31c99b
- finagle-{mux,thrift,thrift-mux}: Enables cross-build for 2.13.0. 47ee31fd
- finagle-redis: Enables cross-build for 2.13.0. d90ae646
- finagle-tunable: Enables cross-build for 2.13.0. 69ded534
- finagle-grpc-context: Enables cross-build for 2.13.0. 65963f58
- finagle-thrift: Pass a factory to create a TReusableBuffer as the parameter of a finagle client
to allow multiple clients share one TReusableBuffer. 05b2ec71
Runtime Behavior Changes
- finagle-base-http: Better performance for the default HeaderMap.add method for headers with
the same name. 1fab9386 - finagle-http2: H2ServerFilter will no longer swallow exceptions that fire via
exceptionCaught in the Netty pipeline. 12621ff8 - finagle-http: Remove legacy HTTP/2 client implementation and make the MultiplexHandler-based
implementation the default HTTP/2. b6d0aa19
Breaking API Changes
- finagle-core: c.t.f.l.FailureAccrualFactory's didMarkDead() changed to didMarkDead(Duration).
The Duration is the length of time the endpoint is marked dead. fe2f43a3
Bug Fixes
- finagle-mux: Mux now properly propagates Ignorable failures multiple levels for superseded
backup requests. This allows for more accurate success rate metrics for downstream services,
when using backup requests.
21b181e8
Assets
2
finaglehelper released this
New Features
- finagle-{core,init,toggle,netty4}: Enables cross-build for 2.13.0. f21a54e0
- finagle-base-http: Add None as a valid SameSite header value. 0c43561a
Breaking API Changes
- finagle-core: The constructor on c.t.f.filter.NackAdmissionFilter used for testing that
took an Ema.Monotime has been removed. 38fae802 - finagle-core: The Adddress.ServiceFactory variant has been promoted from experimental
status and moved to be properly part of c.t.f.Address. 68cf34b8 - finagle-http: improve performance of c.t.f.http.filter.StatsFilter. This results in two notable
API changes: 1. There is a private[filter] constructor which can take a () => Long for
determining the current time in milliseconds (the existing StatsFilter(StatsReceiver)
constructor defaults to using Stopwatch.systemMillis for determining the current time in
milliseconds. 2. The protected count(Duration, Response) method has been changed to
private[this] count(Long, Response) and is no longer part of the public API.
f6ce4529 - finagle-partitioning: the hash-based routing that memcached uses has been relocated to a new
top-level module so that it can be used more broadly across protocols. This results
in several classes moving to the c.t.f.partitioning package: 1. The Memcached.param.EjectFailedHost, KeyHasher, and NumReps parameters are now
available under c.t.f.partitioning.param 2. The FailureAccrualException and CacheNode definitions are now in the c.t.f.paritioning
package. 3. The ZkMetadata class has moved to c.t.f.p.zk and the finagle-serverset module now depends
on finagle-partitioning.
f27073dc
Runtime Behavior Changes
- finagle-http: c.t.f.http.service.NotFoundService has been changed to no longer
use Request.response. Use of Request.response is deprecated and discouraged.
acac9c38 - finagle-mysql: Handshaking for the MySQL 'Connection Phase' now occurs as part of session
acquisition. As part of this change, the
com.twitter.finagle.mysql.IncludeHandshakeInServiceAcquisition toggle
has been removed and it no longer applies. cd4877c1 - finagle: Upgrade to Netty 4.1.39.Final. 001b0940
- finagle-http: Enable Ping Failure Detection for MultiplexHandler based HTTP/2 clients. Note that
the Ping Failure Detection implementation has been removed completely from the
non-MultiplexHandler based HTTP/2 client. 8af32742 - finagle: Added a dependency on Scala Collections Compat 2.1.2. f21a54e0
Bug Fixes
- finagle-base-http: Removes the Cookie header of a c.t.f.http.Message whenever its cookie map
becomes empty. f9b76a0f
Assets
2
finaglehelper released this
Breaking API Changes
- finagle-core: The contents of the
c.t.f.dispatch.GenSerialClientDispatcher
object have been
moved to the newc.t.f.dispatch.ClientDispatcher
object. The stats receiver free constructors
ofGenSerialClientDispatcher
andSerialClientDispatcher
have been removed.
4b0493c6 - finagle-thrift: The deprecated
ReqRepThriftServiceBuilder
object has been
removed. Users should migrate toReqRepMethodPerEndpointBuilder
. f1c4d589
Runtime Behavior Changes
Assets
2
New Features
-
finagle-http: Measure streaming (message.isChunked) chunk payload size with two new histograms:
stream/request/chunk_payload_bytes
andstream/response/chunk_payload_bytes
, they are
published with a debug verbosity level. These chunk payload sizes are also traced via the same
trace keys. 11f4e32 -
finagle-base-http: Add support for new "b3" tracing header. 8721837
-
finagle-core: Allow to not bypass SOCKS proxy for localhost by using the GlobalFlag
-com.twitter.finagle.socks.socksProxyForLocalhost
5521bc8 -
finagle-core: OffloadFilter flag to reduce network contention. 2bd4d61
-
finagle-exp: Add private
c.t.f.exp.ConcurrencyLimitFilter
for rejecting requests
that exceed estimated concurrency limit e331491
Runtime Behavior Changes
-
finagle-http:
c.t.f.http.Cors
has been changed to no longer use thec.t.f.http.Response
associated with the passed inc.t.f.http.Request
. 455718a -
finagle-http:
c.t.f.http.filter.ExceptionFilter
has been changed to no longer
use thec.t.f.http.Response
associated with the passed in. 54d4acf -
finagle-http: Optimize creation of new Http Dispatchers by re-using created metrics and loggers.
9156f0f
Breaking API Changes
-
finagle-base-http: Removed the methods
setStatusCode
andgetStatusCode
from
c.t.f.http.Response
which have been deprecated since 2017. 20b37b0 -
finagle-core: All deprecated
c.t.f.builder.ServerBuilder#build
methods have
been removed. Users should migrate to using thebuild
method which takes a
ServiceFactory[Req, Rep]
as a parameter. 7ae208d -
finagle-core: The
c.t.f.ssl.client.SslClientEngineFactory#getHostname
method has been removed.
All uses should be changed to use thegetHostString
method ofSslClientEngineFactory
instead. -
finagle-http: The
setOriginAndCredentials
,setMaxAge
,setMethod
, andsetHeaders
methods
ofc.t.f.http.Cors.HttpFilter
are no longer overridable. 455718a -
finagle-http: The details of the
c.t.f.Http.HttpImpl
class are meant to be implementation
details so the class constructor was made private along with the fields. Along these same lines
thec.t.f.Http.H2ClientImpl.transporter
method has been moved to a private location.
1338e50
Bug Fixes
Assets
2
finaglehelper released this
New Features
- finagle-core: SSL/TLS session information has been added to
c.t.f.ClientConnection
.
69a28c10 - finagle-core: Add a
Stack
Module with 7 parameters for convenience sake. 6f9d7f0d - finagle-core: For both, servers and clients, introduce a way to shift application-level future
callbacks off of IO threads, into a givenFuturePool
orExecutorService
.
UsewithExecutionOffloaded
configuration method (on a client or a server) to access
new functionality. 40431bb4 - finagle-http: Added counters for request/response stream as:
stream/request/closed
,
stream/request/failures
,stream/request/failures/<exception_name>
,stream/request/opened
,
stream/request/pending
andstream/response/closed
,stream/response/failures
,
stream/response/failures/<exception_name>
,stream/response/opened
,stream/response/pending
.
The counters will be populated when isChunked is set to true, the failures counters will be
populated when isChunked is set to true and the stream fails before it has been fully read in the
request and response respectively. d9b69bdc - finagle-http: Add two new API variants in
CookieMap
: addAll and removeAll that allow for
adding and removing cookies in bulk, without triggering a header rewrite on each item.
4127cf6d - finagle-mysql: finagle-mysql now supports using SSL/TLS with MySQL. SSL/TLS can be turned on by
callingwithTransport.tls(sslClientConfiguration)
with a specified
c.t.f.ssl.client.SslClientConfiguration
. 0b6c20ac
Runtime Behavior Changes
- finagle: Upgrade to Netty 4.1.35.Final and netty-tcnative 2.0.25.Final.
9ffbf7a7 - finagle-core: The default failure accrual policy has been changed from one
which uses only consecutive failures to a hybrid model which uses both
success rate over a window and consecutive failures. Previously this was
changeable via toggle. The toggle has been removed, and the hybrid version
has been made the default. 6f85c56e - finagle-http: Rename
request_stream_duration_ms
tostream/request/duration_ms
and
response_stream_duration_ms
tostream/response/duration_ms
. The stats will be
populated when isChunked is set to true in the request and response respectively.
d9b69bdc - finagle-http2: Disable ping-based failure detector in HTTP/2 client as it seems to do
more harm than good. ea5b0c77 - finagle-http2: Frame logging is now disabled by default for clients. To enable,
use thec.t.f.http2.param.FrameLogging.Enabled
Stack
Param. For example:
Http.client.configured(FrameLogging.Enabled)
. 0b2ec201 - finagle-netty4: When using a Netty
LocalChannel
, the value of theBackPressure
stack param is effectively changed tobackPressureDisabled
so that other functionality
(e.g. SSL/TLS) works as expected. 3a8e5c19 - finagle-netty4:
finagle/netty/pooling/used
now includes the size of the buffers in the
thread-local caches. 824596f0 - finagle-core: Stats and retry modules use a ResponseClassifier to give hints
for how to handle failure (e.g., Is this a success or is it a failure? If
it's a failure, may I retry the request?). The stats module increments a
success counter for successes, and increments a failure counter for failures.
But there isn't a way to tell the stats module to just do nothing. And, this
is exactly what the stats module should do (nothing) in the case of ignorable
failures (e.g. backup request cancellations). To represent these cases, we
introduce a newResponseClass
:Ignorable
. 256b79b8
Bug Fixes
- finagle-core:
UsingSslSessionInfo
would fail to be constructed properly when
SSLSession.getLocalCertificates
returns 'null'. 8d984963 - finagle-http: Finagle now properly sets the
Transport.peerCertificate
local context
when using HTTP/2. a661fef4 - finagle-http:
c.t.f.http.collection.RecordSchema.Record
is now thread-safe.
4e343f0e - finagle-zipkin-core: Fix a race condition which could cause a span to get logged
missing some annotations. 53901a28 - finagle-mysql: Don't log
c.t.f.ChannelClosedException
when rolling back a transaction
fails. 29cfffe6
Breaking API Changes
- finagle-core: The exceptions
c.t.f.SslHandshakeException
and
c.t.f.SslHostVerificationException
were no longer used and have
been removed. 2a53531d - finagle-mysql: The structure of
c.t.f.mysql.Request
has changed. It is now based on
a higher levelc.t.f.mysql.ProtocolMessage
and the cmd field must contain a value.
Additionally, the syntheticCommand.COM_NO_OP
has been removed, as due to the
restructuring it was no longer necessary. d6e4042f - finagle-mysql: Uses of the abbreivation 'cap' have been renamed to the full
word: 'capabilities', including for the baseCapabilities ofCapability
.
4c57afda
Deprecations
- finagle-http: Removed deprecated
response_size
in Finagle Http stats. This is a duplicate stat
ofresponse_payload_bytes
. 1286c438
Assets
2
finaglehelper released this
No Changes
Assets
2
finaglehelper released this
New Features
- finagle-http: Add two new methods to com.twitter.finagle.http.MediaType,
MediaType#typeEquals for checking if two media types have the same type and
subtype, ignoring their charset, and MediaType#addUtf8Charset for easily
setting a utf-8 charset. ec0953f1
Bug Fixes
- finagle-http: Ensure server returns 400 Bad Request when
non-ASCII characters are present in the HTTP request URI path. a7dae7ea
Runtime Behavior Changes
- finagle-core: Deterministic aperture (d-aperture) load balancers no longer export
"loadband" scoped metrics: "widen", "narrow", "offered_load_ema". These were not
necessary as d-aperture does not change the aperture size at runtime. 20029ac5 - finagle-core: Request logging now defaults to disabled. Enable it by configuring the
RequestLogger Stack parameter on your Client or Server. ee9cb4ec - finagle-core: Subtree binding failures in NameTree.Union's are ignored in the
final binding result. 2fde4d2d
Breaking API Changes
- finagle-core: The c.t.f.client.EndpointerModule and c.t.f.pushsession.PushStackClient public
and protected APIs have been changed to use the abstract java.net.SocketAddress instead of the
concrete java.net.InetSocketAddress as relying on the concrete implementation was not
necessary. 77a3cdfd - finagle-http: For Finagle HTTP clients, the withMaxRequestSize(size) API
method has been removed. For Finagle HTTP servers, the
withMaxResponseSize(size) method has been removed. The underlying Stack
params which are set by these methods are respectively HTTP server and HTTP
client side params only. Using these removed methods had no effect on the
setup of Finagle HTTP clients and servers. 5eb3ae24 - finagle-mysql: HandshakeResponse has been removed from finagle-mysql's public
API. It is expected that users of the library are relying entirely on
finagle-mysql for handshaking. f0ab09a6
Assets
2
finaglehelper released this
19.4.0
New Features
- finagle-core: Make maxDepth in Namer configurable. 03cc3197
- namerMaxDepth in Namer now configurable through a global flag (namerMaxDepth)
- finagle-core: The newly renamed SslSessionInfo is now public. It is
intended for providing information about a connection's SSL/TLS session.
811fe004 - finagle-core: Added the c.t.finagle.DtabFlags trait which defines a Flag and function for
appending to the "base" c.t.finagle.Dtab delegation table. 675630df - finagle-http: Finagle HTTP implementation now supports trailing headers (trailers). Use
c.t.f.http.Message.trailers to access trailing headers on a fully-buffered message
(isChunked == false) or c.t.f.http.Message.chunkReader on a message with chunked payload
(isChunked == true). 351c43c1 - finagle-http,thriftmux: Added tracing annotations to backup requests. 48f54e82
- Binary annotation "srv/backup_request_processing", when servers are processing backup requests.
- finagle-http: Added new server metrics to keep track of inbound requests that are rejected due to
their headers containing invalid characters (as seen by RFC-7230): rejected_invalid_header_names
and rejected_invalid_header_values. 41bd061a - finagle-http: Added stats of the duration in milliseconds of request/response streams:
request_stream_duration_ms and response_stream_duration_ms. They are enabled by using
.withHttpStats on Http.Client and Http.Server 916f4a26 - finagle-mysql: A new toggle, "com.twitter.finagle.mysql.IncludeHandshakeInServiceAcquisition", has
been added. Turning on this toggle will move MySQL session establishment (connection phase) to be
part of service acqusition. fe4d8919
Runtime Behavior Changes
- finagle-core: Client-side nacking admission control now defaults on. See the documentation
on c.t.f.filter.NackAdmissionFilter for details. This can be disabled by setting the
global flag, com.twitter.finagle.client.useNackAdmissionFilter, to false.
aa36f56b - finagle-core: LatencyCompensation now applies to service acquisition. 1ec020a5
- finagle-http: HTTP headers validation on the outbound path is now in compliance with RFC7230.
5b2e9f95 - finagle-netty4: Netty's reference leak tracking now defaults to disabled.
Set the flag com.twitter.finagle.netty4.trackReferenceLeaks to true to enable.
f63d7f7a
Breaking API Changes
-
finagle: Dropped a dependency on Netty 3:
-
finagle-netty3 sub-project has been removed
-
finagle-http-cookie sub-project has been removed
-
c.t.f.http.Cookie no longer takes Netty's DefaultCookie in the constructor
03c773a5
-
-
finagle-core: The peerCertificate methods of c.t.f.t.TransportContext and
c.t.f.p.PushChannelHandle have been replaced with the more robust
sslSessionInfo. Users looking for just the functional equivalence of
peerCertificate can use sslSessionInfo.peerCertificates.headOption.
dc4bfbcf -
finagle-core: The com.twitter.finagle.core.UseClientNackAdmissionFilter toggle
has been replaced by a global flag, com.twitter.finagle.client.useNackAdmissionFilter.
aa36f56b -
finagle-thrift: Allow users to specify stringLengthLimit and containerLengthLimit 233150a9
- method parameter readLength in com.twitter.finagle.thrift.Protocols#binaryFactory renamed to stringLengthLimit to reflect usage
- method parameter containerLengthLimit added to com.twitter.finagle.thrift.Protocols#binaryFactory
Assets
2
finaglehelper released this
New Features
- finagle-core: Added tracing annotations to backup requests. 5201f623
- Timestamped annotation "Client Backup Request Issued"
- Timestamped annotation "Client Backup Request Won" or "Client Backup Request Lost"
- Binary annotation "clnt/backup_request_threshold_ms", with the current value of the
latency threshold, in milliseconds - Binary annotation "clnt/backup_request_span_id", with the span id of the backup request
Breaking API Changes
- finagle-core: Deprecated multi-param legacy
tls
methods have been removed in
c.t.f.param.ServerTransportParams
andc.t.f.builder.ServerBuilder
. Users should migrate to
using thetls(SslServerConfiguration)
method instead. ca646bd8
Runtime Behavior Changes
- finagle-core: The tracing annotations from
MkJvmFilter
have been enhanced. 0586f657- Timestamped annotations "GC Start" and "GC End" for each garbage collection event
that occurred during the request. - Binary annotation "jvm/gc_count", with the total number of garbage collection events
that occurred during the request. - Binary annotation "jvm/gc_ms", with the total milliseconds of garbage collection events
that occurred during the request.
- Timestamped annotations "GC Start" and "GC End" for each garbage collection event
Assets
2
finaglehelper released this
New Features
- finagle-core: Added gauge
is_marked_dead
as an indicator of whether the host is marked
as dead(1) or not(0) inFailFastFactory
. 068a15e6 - finagle-core:
KeyCredentials.CertsAndKey
has been added as an option for
c.t.f.ssl.KeyCredentials
for when the certificate and certificate chain are
contained within the same file. b4a9e8cd - finagle-thriftmux: Additional information is now annotated in traces for clients
using Scrooge generated Thrift bindings. c69a22f8, 32d9b56b,
6283c6ce.
This includes:- RPC method name
- Request serialization time, in nanoseconds
- Request deserialization time, in nanoseconds
- Response serialization time, in nanoseconds
- Response deserialization time, in nanoseconds
Breaking API Changes
-
finagle-http: Removed
Http.Client.withCompressionLevel
because it wasn't doing anything.
To migrate your client, simply remove the configuration--it had absolutely no effect.
87944371 -
finagle-http:
c.t.f.dispatch.ExpiringServerDispatcher
was dead code. We removed it.
ae0571c9 -
finagle-thrift: Removed
newIface
andnewServiceIface
methods from
c.t.f.thrift.ThriftRichClient.MultiplexedThriftClient
, which are deprecated in November 2017.
773b6e57 -
finagle-thrift: Removed deprecated APIs located in Thrift.scala:
1. c.t.f.Thrift.Client.stats => use c.t.f.Thrift.Client.clientParam.clientStats
2. c.t.f.Thrift.withProtocolFactory => use c.t.f.Thrift.client.withProtocolFactory
3. c.t.f.Thrift.withClientId => usec.t.f.Thrift.client.withClientId
4. c.t.f.Thrift.Server.serverLabel => use c.t.f.Thrift.Server.serverParam.serviceName
5. c.t.f.Thrift.Server.serverStats => use c.t.f.Thrift.Server.serverParam.serverStats
6. c.t.f.Thrift.Server.maxThriftBufferSize => use c.t.f.Thrift.Server.serverParam.maxThriftBufferSize
c6eb2020 -
finagle-thrift:
c.t.f.thrift.ThriftServiceIface.Filterable
is removed, use
c.t.f.thrift.service.Filterable
instead. 23affacc -
finagle-thrift:
c.t.f.thrift.ThriftServiceIface
is removed, use
c.t.f.thrift.service.ThriftServicePerEndpoint
instead. 23affacc -
finagle-thriftmux: Removed deprecated APIs located in ThriftMux.scala:
1. c.t.f.ThriftMux.Client.stats => use c.t.f.ThriftMux.Clien.clientParam.clientStats
2. c.t.f.ThriftMux.Server.serverLabel => use c.t.f.ThriftMux.Server.serverParam.serviceName
3. c.t.f.ThriftMux.Server.serverStats => use c.t.f.ThriftMux.Server.serverParam.serverStats
4. c.t.f.ThriftMux.Server.maxThriftBufferSize => use c.t.f.ThriftMux.Server.serverParam.maxThriftBufferSize
c6eb2020 -
finagle-thriftmux:
ThriftMux.Client.pushMuxer
is removed. UseThriftMux.Client.standardMuxer
instead. 90333b1a -
finagle-thriftmux:
ThriftMux.serverMuxer
is removed. UseThriftMux.Server.defaultMuxer
instead. 90333b1a -
finagle-base-http: Removed the
c.t.f.http.Statuses
java helper, which was deprecated two years
ago in favor of usingc.t.f.http.Status
directly. 75a4a209 -
finagle-base-http: Removed the
c.t.f.http.Versions
java helper, which was deprecated two years
ago in favor of usingc.t.f.http.Version
directly. f191f1db -
finagle-base-http: Removed the
c.t.f.http.Methods
java helper, which was deprecated two years
ago in favor of usingc.t.f.http.Method
directly. ccf10dbc -
finagle-http:
c.t.f.http.Response.Ok
was removed. Use justResponse()
orResponse.Proxy
if you need to mock it. d93bb1c9 -
finagle-core:
Drv.Aliased
andDrv.newVose
are now private, please
construct aDrv
instance usingDrv.apply
orDrv.fromWeights
.
9c810dd3 -
finagle-core:
c.t.f.BackupRequestLost
is now removed. Please usec.t.f.Failure.ignorable
instead. 02d3d524
Bug Fixes
- finagle-http: Fix for a bug where HTTP/2 clients could retry requests that had a chunked
body even if the request body was consumed. b031e757 - finagle-http: Fix for a bug where HTTP clients could assume connections are reusable, despite
having streaming requests in flight. 88a2d0ba
Runtime Behavior Changes
- finagle-core: Faster
Filters
. Removes unnecessaryService.rescue
proxies from
the intermediateandThen
-edFilters
. Previously in rare cases you might have seen
a rawException
not wrapped in aFuture
if theFilter
threw. These will now
consistently be lifted into aFuture.exception
. a2ddc727 - finagle-core: MethodBuilder metrics filtering updated to now report rolled-up
logical failures. 6e3bf33f - finagle-http: Disabling Netty3 cookies in favor of Netty4 cookies. fccd92c6
- finagle-http: Removed the debug metrics
http/cookie/dropped_samesites
and
http/cookie/flagless_samesites
. 2de928ce
Deprecations
- finagle-core: Multi-param legacy
tls
methods have been deprecated in
c.t.f.param.ServerTransportParams
andc.t.f.builder.ServerBuilder
. Users should migrate
to using thetls(SslServerConfiguration)
method instead. fbfc6d1a - finagle-core:
$client.withSession.maxIdleTime
is now deprecated; use
$client.withSessionPool.ttl
instead to set the maximum allowed duration a connection may be
cached for. 0f060e37 - finagle-serversets:
c.t.f.zookeeper.ZkResolver
has been deprecated in favor
ofc.t.f.serverset2.Zk2Resolver
. 9878a9ec
Assets
2
finaglehelper released this
Assets
2
New Features
- finagle-core: c.t.f.s.StackBasedServer has been changed to extend the
c.t.f.Stack.Transformable trait. This brings StackBasedServer into parity
with c.t.f.c.StackBasedClient, which already extends the
Stack.Transformable trait. 9f637b5e - finagle-http: HttpMuxer propagates the close signal to the underlying handlers.
6475680d
Breaking API Changes
- finagle-core: The deprecated c.t.f.b.ServerBuilder.stack method which takes a function
has been removed. Uses of this method should be changed to use the c.t.f.b.ServerBuilder.stack
method which takes a c.t.f.s.StackBasedServer instead. a05e5e7b - finagle-core: The type of c.t.f.b.ServerConfig.nilServer has been changed from
Server[Req, Rep] to StackBasedServer[Req, Rep]. 4be953d4 - finagle-core: The access level of the c.t.f.b.ServerBuilder.copy method has changed
from protected to private. 4be953d4 - finagle-core: The bridge type c.t.f.b.Server has been removed. Users should
change to use c.t.f.ListeningServer instead. Uses of the previously
deprecated Server.localAddress should use ListeningServer.boundAddress
instead. eb66ee71 - finagle-core: The deprecated c.t.f.t.Transport.localAddress and
c.t.f.t.Transport.remoteAddress methods are now final and can no longer
be extended. Users should migrate to the respective c.t.f.t.TransportContext
methods. b85f43a0 - finagle-thrift: The c.t.f.t.ThriftRichClient.protocolFactory and
c.t.f.t.ThriftRichServer.protocolFactory methods have been removed. Users should
switch to using ThriftRichClient.clientParam.protocolFactory and
ThriftRichServer.serverParam.protocolFactory instead. In addition, implementations
of the protocolFactory method have been removed from the concrete c.t.f.Thrift
and c.t.f.ThriftMux client and server. e33baf82
Bug Fixes
- finagle-core: Failed writes on Linux due to a remote peer disconnecting should now
be properly seen as a c.t.f.ChannelClosedException instead of a
c.t.f.UnknownChannelException. 8f5774cb - finagle-http: Compression level of 0 was failing on the server-side when speaking h2c.
Updated so that it can handle a request properly. 5f96fcb2 - finagle-thriftmux: A Java compatibility issue for users trying to call withOpportunisticTls
on ThriftMux clients and servers has been fixed. e57d2a91
Runtime Behavior Changes
- finagle-core: ServiceFactory.const propagates the close from the ServiceFactory
to the underlying service, instead of ignoring it. 6475680d
finaglehelper released this
Assets
2
18.12.0
New Features
- finagle-redis: Add support for the new stream API released in Redis 5.0. ba578c14
- finagle-core: Add Java compatibility for c.t.f.Filter.TypeAgnostic.Identity
via c.t.f.Filter.typeAgnosticIdentity(). cff9aedd - finagle-core: Add Java compatibility for c.t.f.Name through Names.
30a8000c - finagle-core: Introduce a StackServer.withStack overload that
makes modifying the existing Stack easier when using method chaining.
f1a980cf - finagle-thrift: Add c.t.finagle.thrift.MethodMetadata which provides a LocalContext Key
for setting information about the current Thrift method and an accessor for retrieving
the currently set value. 7b22e4ef - finagle-thrift: Update c.t.finagle.thrift.MethodMetadata to provide an
asCurrent method to set the current c.t.finagle.thrift.MethodMetadata in the
LocalContext. f46e1f77
Breaking API Changes
- finagle-core: The c.t.u.Closable trait has been removed from
c.t.f.t.TransportContext, as well as the close and onclose methods. Uses of
these methods within TransportContext should be changed to use the corresponding
methods on c.t.f.t.Transport instead. b8b850bb - finagle-core: The deprecated c.t.f.t.Transport.peerCertificate method on the Transport class
(not the Transport.peerCertificate Finagle context) has been removed. Uses of this
method should be changed to use c.t.f.t.TransportContext.peerCertificate instead.
ab0432b4 - finagle-core: The deprecated c.t.f.t.TransportContext.status method has been removed
from TransportContext. Uses of this method should be changed to use
c.t.f.t.Transport.status instead. fd97536f - finagle-mysql: c.t.f.m.Charset has been renamed to c.t.f.m.MysqlCharset to resolve
any ambiguity between it and the Charset Stack parameter. 05354cd5 - finagle-mysql: All Stack params (Charset, Credentials, Database, FoundRows,
MaxConcurrentPrepareStatements, UnsignedColumns) have been moved to the
com.twitter.finagle.mysql.param namespace. d30c5549 - finagle-mysql: The deprecated c.t.f.m.Client.apply(factory, statsReceiver) method
has been removed. 17747e1a - finagle-mysql: The c.t.f.m.Handshake class and companion object have been made
private. 20c8d50f - finagle-http: Rename the toggle 'c.t.f.h.UseH2CClients' to 'c.t.f.h.UseH2CClients2'.
43c0b69c
Runtime Behavior Changes
finaglehelper released this
Assets
2
New Features
- finagle-base-http: Add Message.httpDateFormat(millis) to format the epoch millis into
an RFC 7231 formatted String representation. eb9bec0e - finagle-core: Introduce an StackClient.withStack overload that
makes modifying the existing Stack easier when using method chaining.
8f69e833 - finagle-mysql: Introduce session to be able to perform multiple operations that require
session state on a guaranteed single connection. a06f7d67 - finagle-netty4: When using the native epoll transport, finagle now publishes the TCP window size
and number of retransmits based on the tcpInfo provided by from the channel. These stats are
published with a debug verbosity level. 16071088 - finagle-http: HTTP clients and servers now accept fixedLengthStreamedAfter param in their
withStreaming configuration (default: 5 MB when streaming is enabled). This new parameter
controls the limit after which Finagle will stop aggregating messages with known Content-Length
(payload will be available at .content) and switch into a streaming mode (payload will be
available at .reader). Note messages with Transfer-Encoding: chunked never aggregated.
842e5e1a
Breaking API Changes
- finagle-http: c.t.f.http.param.MaxChunkSize has been removed. There is no good reason to
configure it with anything but Int.MaxValue (unlimited). 990c8650 - finagle-exp: Update DarkTrafficFilter#handleFailedInvocation to accept the request type
for more fidelity in handling the failure. b247f941
Runtime Behavior Changes
- finagle-http: Unset maxChunkSize limit in Netty HTTP codecs. Now both clients and servers
emit all available data as a single chunk so we can put it into use quicker.
990c8650 - finagle-http: Streaming clients (withStreaming(true)) now aggregate inbound messages with known
Content-Length if their payloads are less than 5mb (8k before). Use withStreaming(true, 32.kb)
to override it with a different value. 24271b29 - finagle-http2: HTTP/2 servers perform a more graceful shutdown where an initial
GOAWAY is sent with the maximum possible stream id and waits for either the client
to hang up or for the close deadline, at which time a second GOAWAY is sent with
the true last processed stream and the connection is then closed.
93fee499
Deprecations
- finagle-core: Deprecate
EndpointerStackClient.transformed(Stack[ServiceFactory[Req, Rep]] => Stack[ServiceFactory[Req, Rep]])
in favor of the withStack variant. 8f69e833
finaglehelper released this
Assets
2
Deprecations
- finagle-core: Deprecation warnings have been removed from the 'status', 'onClose',
and 'close' methods onc.t.f.t.Transport
, and added to the corresponding methods
onc.t.f.t.TransportContext
. 9ae6d978
Runtime Behavior Changes
- finagle-netty3: Implementations for 'status', 'onClose', and 'close' methods have
been moved fromc.t.f.n.t.ChannelTransportContext
toc.t.f.n.t.ChannelTransport
.
9ae6d978
Finagle 18.8.0
finaglehelper released this
18.8.0
New Features
-
finagle-core: Introducing the new
c.t.f.tracing.Tracing
API for more efficient tracing
(dramatically reduces the number of context lookups; see scaladoc forc.t.f.tracing.Trace
).
547cd864 -
finagle-core:
c.t.f.tracing.Trace
facade API now provides forwardingrecord
methods for
all kinds of annotations and is a preffered way of recording traces. 50c00d88 -
finagle-thriftmux: Promote the push-based ThriftMux implementation out of experimental
status.eedd1fd8
Breaking API Changes
-
finagle-base-http:
c.t.f.http.cookie.exp.supportSameSiteCodec
has been moved out of the
exp package toc.t.f.http.cookie.supportSameSiteCodec
. 5e5ea390 -
finagle-core: Parameter-less annotation classes (
c.t.f.tracing.Annotation
) have been
promoted to objects for efficiency reasons. 50c00d88 -
finagle-core:
c.t.f.tracing.Trace.record(Record)
now accepts the record argument by
value (previously by name). 33841d21 -
finagle-core:
c.t.f.Failure.{Restartable, Interrupted, Ignorable, DeadlineExceeded, Wrapped, Rejected, NonRetryable}
are deprecated in favor of thec.t.f.FailureFlags
analogs. 0e0c7b43 -
finagle-core:
c.t.f.Leaf
andc.t.f.Node
are now private; useStack.leaf
and
Stack.node
instead. cc49ee83 -
finagle-core: Marked
transform
incom.twitter.finagle.Stack
as protected. It is too
powerful and unnecessary for users, and should be for implementor use only. 99479f32 -
finagle-mysql:
c.t.f.mysql.CanBeParameter
's implicit conversionstimestampCanBeParameter
,
sqlDateCanBeParameter
, andjavaDateCanBeParameter
have been consolidated into a single
implicit,dateCanBeParameter
. b486772d
Bug Fixes
- finagle-http2: Fixed a race condition caused by c.t.f.http.transport.StreamTransports being
closed, but that status not being reflected right away, causing a second request to fail.
68f1035f
Runtime Behavior Changes
-
finagle-core:
c.t.f.tracing.Trace
API is no longer guardingTrace.record
calls behind
Trace.isActivelyTracing
. AddTrace.isActivelyTracing
guards on the call sites if
materializing tracing annotations is a performance concern. 33841d21 -
finagle-mysql: Clients will now issue a ROLLBACK each time a service is checked back
into the connection pool. This can be disabled viaMysql.Client.withNoRollback
.
e3221597 -
finagle-thriftmux: The push-based server muxer is now the default. In both synthetic tests
and production it has shown signifcant performance benefits and is simpler to maintain.
735a6bae -
finagle-mysql: Remove deprecated
TimestampValue.apply(Timestamp)
and
TimestampValue.unapply(value)
methods. UseTimestampValue.apply(TimeZone, TimeZone)
instead. e01f02f5
Deprecations
- finagle-mux: The pull based mux implementation, c.t.f.Mux, has been deprecated in favor of
the push-based mux implementation, c.t.f.pushsession.MuxPush. 735a6bae
Finagle 18.7.0
finaglehelper released this
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
finaglehelper released this
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
finaglehelper released this
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
finaglehelper released this
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
finaglehelper released this
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
finaglehelper released this
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
cacoco released this
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
Watchers:577 |
Star:7854 |
Fork:1370 |
创建时间: 2010-10-20 06:10:09 |
最后Commits: 4天前 |
762bc85
Compare
20.12.0
New Features
offload queue. This instrumentation is sampled at the given interval (100ms by default) that
can be overridden with a global flag com.twitter.finagle.offload.statsSampleInterval.
a7ebf2e1
put bounds on the offload queue. Any excess work that can't be offloaded due to a queue overflow
is run on IO (Netty) thread instead. Put this way, this flag enables the simplest form of
backpressure on the link between Netty and OffloadFilter. af228ca6
SslClientEngineFactory acts as a better example of how to build custom client and server engine
factories in order to reuse SSL contexts for performance concerns. 931785d9
display the bound Name for a given client in metrics metadata. 67be8e1e
by Finagle clients, and will allow generic configuration of all sets of parameters.
b7bb5afc
Breaking API Changes
finagle-exp to supported finagle-core. The package containing these classes changed from
c.t.finagle.exp to c.t.finagle.filter. 0ecaa5e7
from the experimental finagle-exp to supported finagle-core, and finagle-thrift, respectively.
The package containing ForwardingWarmUpFilter changed from c.t.finagle.exp to
c.t.finagle.filter, and the package containing ThriftForwardingWarmUpFilter changed from
c.t.finagle.exp to c.t.finagle.thrift.filter. e725bc86
def classify(ReqRep): ResponseClass to allow expressing that a failure should be ignored.
d586bd24
Runtime Behavior Changes
ServiceFactoryProxy. c473b395
before failing over to the AbstractQueuedSynchronizer slow path in NonReentrantReadWriteLock
for Arm64. d45dfb02
Bug Fixes
java.lang.UnsupportedOperationException: tail of empty stream when a c.t.f.s.RetryPolicy
is converted to a String for showing. e7ec247d