Christopher Coco


Posted October 9, 2019

October 2019 Release Notes - Version 19.10.0 🌕

In preparation for Halloween 👻 at the end of the month, we are very happy to announce our October 🕷️ release: no tricks 🎃 – all treats 🍬.


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-http2: H2ServerFilter will no longer swallow exceptions that fire via exceptionCaught in the Netty pipeline. PHAB_ID=D369185
  • 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



  • finatra-jackson: Update jackson reflection to use org.json.reflect instead of custom reflection. This enables support for parsing case classes defined over generic types, e.g., case class Page[T](data: T). As a result of this change, use of lazy val for trait members which are mixed into case classes for use in deserialization is no longer supported. This addresses issue #480. 83d3ed6d


  • finatra-jackson: Add support for parsing of case classes defined over generic types (even nested, and multiple), e.g., case class Page[T, U](data: List[T], column: U). Fixes issue #408. 83d3ed6d
  • finatra-kafka: Sanitize topic name in MonitoringConsumer stats scope 0df09c6b
  • inject-server: Fix printing of all stats from the underlying InMemoryStatsReceiver in the eventually loop for stat assertion. Address finatra/kafka test logging for finatra/kakfa-streams/kafka-streams and finatra/kafka. 32833de1
  • inject-logback: A NullReferenceException could be thrown during metrics collection due to an incorrect logback.xml configuration. This has been fixed. 82f0382f


Runtime Behavior Changes

  • util-core: When a computation from FuturePool is interrupted, its promise is set to the interrupt, wrapped in a j.u.c.CancellationException. This wrapper was introduced because, all interrupts were once CancellationExceptions. In RB_ID=98612, this changed to allow the user to raise specific exceptions as interrupts, and in the aid of compatibility, we wrapped this raised exception in a CancellationException. This change removes the wrapper and fails the promise directly with the raised exception. This will affect users that explicitly handle CancellationException. 9daad3d9

Bug Fixes

  • util-core: Fixed bug in where if the framer didn’t emit a List the emitted frames were skipped. aedc943e
  • util-hashing: Fix a bug where partitionIdForHash was returning incosistent values w.r.t entryForHash in KetamaDistributor. c66080b6


  • scrooge-generator: Make isset BitSet final in Java generated thrift classes. 19ca055e
  • scrooge-generator: Return Nil for exceptionFields when no exceptions declared in Scala service. e6c44930
  • scrooge-generator: Use empty instances as defaults for Seq, Map, Set for Scala generated code. 8904ba89
  • scrooge-generator: Use wrapper class valueOf in apachejavagen’s getFieldValue. 8d02a4f3
  • scrooge-linter: Warn when function names are reserved words. Add support for reserved words in Javascript and Go. ca2ae718

Twitter Server

No Changes