Neuman Vong

@neuman

Posted October 18, 2018

Fall Update πŸ‚

Fall is here! If you live in Boulder, you might take a 🚢and watch coyotes hunt prairie dogs. The new season brings about a change of clothes, but what about a change of code? Upgrade to the latest Finagle version and enjoy the new features, APIs, and bug fixes! Here’s a breakdown of what’s new.

Developer experience

  • We continue evolving Reader/Writer APIs to make them more friendly for application-level development. This part is nearly done and our next step is to adopt said APIs in both Finagle and Finatra, providing their users with a seamless developer experience. (1)
  • Tunables are now observable via Vars. (1)
  • Lots of examples of how to use Future. (1, 2)

HTTP2

MANY performance improvements. We no longer consider h2c experimental! This will be on by default in the next few months.

Resiliency

  • Thrift and ThriftMux servers now feature Response Classification to better indicate their success rate.
  • New and improved Tracing. This work dramatically reduces the number of context lookups. (1, 2, 3, 4, 5)
  • Finatra security update. Jackson Upgraded 2.8.4 => 2.9.6, plugs CVE-2017-7525.

Performance

  • Future.transform creates a new Promise every time it is called, but sometimes we can operate directly on a Try, whose operations are much simpler and less costly. Since transform is fundamental to many other future operations, the result is faster futures. (1)
  • Avoid unnecessary deep copies in Local.Context. (1)
  • Push is now the default implementation for ThriftMux. We removed the previous implementation because we saw that Push improved throughput, CPU usage, and allocations. (1, 2, 3, 4)

Netty3 cookies are dead, long live Netty4 cookies?

We are almost there. The last threshold to cross is decoupling cookie validation logic.

Finatra

  • Custom AsyncAppender with StatsReceiver integration (1).
  • Better/easier configuration for https servers. (1

Travis-CI MANY stability improvements.


Thanks for following along. If you’d like to know more about any one of these updates, or if you have a question about them, join us on the Finagle or Finatra mailing lists or hop on Gitter.

Happy coding,

Neuman and the Core Systems Libraries team