The October releases have arrived! For this release and hereafter, Finagle, Finatra, Scrooge, Util, and TwitterServer will be versioned as $year.$month.$patch, as opposed to $major.$minor.$patch. This means that all project versions will be in sync.
Finagle 17.10.0, Finatra 17.10.0, Scrooge 17.10.0, TwitterServer 17.10.0, and Util 17.10.0.
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
and Netty4ServerEngineFactory
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:
c.t.f.http.Cookie
immutable,
set
methods on c.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 set domain
, maxAge
, path
, value
, httpOnly
,
and secure
. comment
, commentUrl
, ports
, version
, and discard
have been removed
per RFC-6265. 71760096.Alternatively, use the domain
, maxAge
, path
, httpOnly
, and secure
methods to create a
new Cookie
with the existing fields set, and the respective field set to a given value.
14beb975
c.t.f.http.Cookie.isSecure
and c.t.f.http.Cookie.isDiscard
have been deprecated. Use c.t.f.http.Cookie.secure
for c.t.f.http.Cookie.isSecure
.
isDiscard
has been removed per RFC-6265. 71760096Breaking API Changes:
finagle-mysql: Moved Cursors.cursor
method to Client
trait, and removed Cursors
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
Added:
inject-core: Remove deprecated c.t.inject.TestMixin#resetMocks
. Properly
use c.t.inject.Mockito
trait in tests. Deprecate resetting of mocks and
resettables in c.t.inject.IntegrationTestMixin
. b8cfeb65
finatra-http: Parameterize @RouteParam
,@QueryParam
,@FormParam
, and
@Header
to allow specifying the field name to read from the params or
header map. Previously these annotations only looked for values by the
case class field name leading to possible ugliness when defining case
class fields (especially with @Header
). 9913a6cc
finatra: Add support for using a java.lang.annotation.Annotation
instance
with the #bind[T]
testing DSL. This adds a way to bind instances in tests
that use the @Named binding annotation. f9503c4c
finatra-http: Allow setting the content type of a Mustache view. 2009159f
Changed:
finatra-utils: Remove deprecated ExternalServiceExceptionMatcher
. 9c78117a
finatra-jackson: ScalaType’s isMap
and isCollection
methods now check that
the given object’s class is a subclass of scala.collection.Map[Any, Any]
and
scala.collection.Iterable[Any]
, respectively. Previously the superclasses’
packages were unspecified. This is a runtime behavior change.
15a4e529
finatra-http: Require that route URIs and prefixes begin with forward slash (/). 9bd53557
inject-utils: (BREAKING API CHANGE) RichOption toFutureOrFail, toTryOrFail, and toFutureOrElse signature changed to take the fail or else parameter by name. a1efd13f
inject-server: Remove usage of deprecated c.t.inject.logging.Slf4jBridgeUtility
.
Change usages to c.t.util.logging.Slf4jBridgeUtility
. 4cf842ba
finatra-http, inject-thrift-client: Remove netty3 specific types and dependency. In finatra-http, the code using these types is deprecated and can be removed allowing us to remove netty3-specific dependencies. In inject-thrift-client we can default to use the DefaultTimer for the backupRequestFilter method param instead of the HashedWheelTimer. d8fb15fe
Fixed:
IllegalArgumentException
from Validations to
be swallowed. A catch clause in the c.t.finatra.json.internal.caseclass.jackson.FinatraCaseClassDeserializer
is too broad as it catches thrown IllegalArgumentException
s from field validations
when the annotation is applied to a field of the incorrect type, e.g., when @Max
is
applied to a String field. 37ec7050API Changes:
Bug Fixes:
Runtime Behavior Changes:
util-core: c.t.io.Buf.ByteArray.Owned.Shared now validates its input arguments. 36377837
util-jvm: The jvm/mem/postGC/{poolName}/max
metric has been removed
because it is the same as the jvm/mem/current/{poolName}/max
metric.
357912da
util-security: Assert validity of X.509 certificates when read from a file.
Attempting to read a c.t.util.security.X509CeritificateFile
will now assert
that the certificate is valid, i.e., if the current date and time are within
the validity period given in the certificate. 9dc859ef
scrooge-generator: For generated scala $FinagleService, moved per-endpoint statsFilter to the outermost of filter chain so it can capture all exceptions, added per-endpoint response classification in statsFilter. 853323dc
scrooge-generator: Generated scala $FinagleClient takes a RichClientParam
for all
configuration params, such as TProtocolFactory
, ResponseClassifier
, maxReusableBufferSize
,
and StatsReceiver
, $FinagleService takes a RichServerParam
. 8bdf36cb
TwitterServer now uses the slf4j-api
for framework logging. Backwards compatibility is
supplied via the twitter-server/slf4j-jdk14
library.
See the TwitterServer documentation for more information. c458b881
All admin endpoints except ping + healthcheck are now by-default served outside the global worker pool. acf13a2a
Rename AdminHttpServer#defaultHttpPort to AdminHttpServer#defaultAdminPort. 15e35a3a