Happy New Year folks! Hopefully new years resolutions are still on pace. In the meantime, let’s kick off 2019 with a fresh new release of libraries.
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
finagle-stats-core: introduce flag to allow logging metrics on service shutdown. 4588bc1f
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
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
ServiceFactory.const propagates the close from the ServiceFactory
to the underlying service, instead of ignoring it. 6475680dfinatra-kafka-streams: SumAggregator and CompositeSumAggregator only support enhanced window aggregations for the sum operation. Deprecate SumAggregator and CompositeSumAggregator and create an AggregatorTransformer class that can perform arbitrary aggregations. f588970e
finatra-streams: Open-source Finatra Streams. Finatra Streams is an integration between Kafka Streams and Finatra which we’ve been using internally at Twitter for the last year. The library is not currently open-source. 47cce546
inject-server: Add lint rule to alert when deprecated util-logging JUL flags from the
c.t.inject.server.DeprecatedLogging trait are user defined. This trait was mixed-in
only for backwards compatibility when TwitterServer was moved to the slf4j-api and the flags are
not expected to be configured. By default, util-app based applications will fail to start if
they are passed a flag value at startup which they do not define. Users should instead configure
their chosen slf4j-api logging implementation directly. 388bf8f9
finatra-thrift: c.t.finatra.thrift.Controllers now support per-method filtering and
access to headers via c.t.scrooge.{Request, Response} wrappers. To use this new
functionality, create a Controller which extends the
c.t.finatra.thrift.Controller(SomeThriftService) abstract class instead of constructing a
Controller that mixes in the SomeThriftService.BaseServiceIface trait. With this, you can now
provide implementations in form of c.t.scrooge.Request/c.t.scrooge.Response wrappers by calling
the handle(ThriftMethod) method. Note that a Controller constructed this way cannot also
extend a BaseServiceIface.
handle(SomeMethod).filtered(someFilter).withFn { req: Request[SomeMethod.Args] =>
val requestHeaders = req.headers
// .. implementation here
// response: Future[Response[SomeMethod.SuccessType]]
}
Note that if Request/Response based implementations are used the types on any
existing ExceptionMappers should be adjusted accordingly. Also, if a DarkTrafficFilterModule
was previously used, it must be swapped out for a ReqRepDarkTrafficFilterModule
9d891cd1
inject-core, inject-server: Remove deprecated @Bind support from test mixins. Users should
instead prefer using the bind[T]
DSL in tests. 841f6974
inject-app: Remove deprecated bind\[T\] DSL methods from c.t.inject.app.BindDSL.
Instead of:
injector.bind[T](instance)
injector.bind[T, Ann](instance)
injector.bind[T](ann, instance)
Users should instead use the more expressive forms of these methods, e.g.,:
injector.bind[T].toInstance(instance)
injector.bind[T].annotatedWith[Ann].toInstance(instance)
injector.bind[T].annotatedWith(ann).toInstance(instance)
which more closely mirrors the scala-guice binding DSL. 2690003d
finatra-thrift: For services that wish to support dark traffic over
c.t.scrooge.Request/c.t.scrooge.Response-based services, a new dark traffic module is
available: c.t.finatra.thrift.modules.ReqRepDarkTrafficFilterModule 9d891cd1
finatra-thrift: Creating a c.t.finatra.thrift.Controller that extends a
ThriftService.BaseServiceIface has been deprecated. See the related bullet point in “Added” with
the corresponding PHAB_ID to this one for how to migrate. 9d891cd1
inject-core, inject-server: Remove deprecated WordSpec testing utilities. The framework
default ScalaTest testing style is FunSuite though users are free to mix their testing
style of choice with the framework provided test mixins as per the
documentation.
41767c6e
finatra-thrift: Instead of failing (potentially silently)
c.t.finatra.thrift.routing.ThriftWarmup now explicitly checks that it is
using a properly configured c.t.finatra.thrift.routing.Router e2dc8b30
finatra-inject: c.t.finatra.inject.server.PortUtils has been modified to
work with c.t.f.ListeningServer only. Methods which worked with the
now-removed c.t.f.b.Server have been modified or removed.
642d7260
finatra-kafka-streams: Finatra Queryable State methods currently require the window size to be passed into query methods for windowed key value stores. This is unnecessary, as the queryable state class can be passed the window size at construction time. We also now save off all FinatraKeyValueStores in a global manager class to allow query services (e.g. thrift) to access the same KeyValueStore implementation that the FinatraTransformer is using. c51e174b
fromFuture()
and value() in the Reader object to construct a new Reader. ac15ad8butil-core: The implicit conversions classes in c.t.conversions.SomethingOps have been
renamed to have unique names. This allows them to be used together with wildcard imports.
See Github issue (https://github.com/twitter/util/issues/239). 2d5d6da9
util-core: Both c.t.io.Writer.FailingWriter and c.t.io.Writer.fail were removed. Build your
own instance should you need to. 63815225