Changelog History
Page 7
-
v6.45.0 Changes
June 06, 2017๐ New Features
* util-app: Optional resource shutdown sequencing for registered closables via `c.t.app.App#closeOnExitLast`. See longer note there for usage. ``RB_ID=916120`` * util-core: Added `writeBytes(Buf)` to the ByteWriter abstract class to allow for efficient writing of the `c.t.io.Buf` type. ``RB_ID=917094`` * โ util-core: Added `writeString(CharSequence, Charset)` and readString(Int, Charset)` to ByteWriter and ByteReader respectively to facilitate for more efficient String encoding and decoding. ``PHAB_ID=D63987`` * util-core: Added `ByteReader.readUnsignedLongBE` and `ByteReader.readUnsignedLongLE`. ``RB_ID=917289`` ๐ฅ Breaking API Changes
๐ util-collection: Removed deprecated
c.t.u.JMapWrapper
. Usescala.collection.JavaConverters
instead.RB_ID=915544
util-core: ByteReader extends the AutoClosable interface to provide a notion of resource management. Users should ensure that instances of the ByteReader interface are closed after they are no longer needed.
RB_ID=916086
๐ util-core: Removed deprecated methods from
c.t.u.Future
:rawException
; useexception
insteadcancel
; useraise
instead
Removed deprecated
c.t.u.Futures.select
; useFuture.select
instead. Remove deprecatedflatten
method onc.t.u.Future
; useFutures.flatten
instead.RB_ID=915500
๐ util-core: Removed deprecated
c.t.u.LongOverflowException
. Usejava.lang.ArithmeticException
instead. Removed deprecatedc.t.u.LongOverflowArith
and all methods on it:add
; use Java 8'sMath.addExact
insteadsub
; use Java 8'sMath.subtractExact
insteadmul
; use Java 8'sMath.multiplyExact
insteadRB_ID=915545
๐ util-core: Removed deprecated
c.t.concurrent.exp.AsyncStream
. Usec.t.concurrent.AsyncStream
instead.RB_ID=916422
๐ util-eval: Removed from the project.
RB_ID=915430
https://finagle.github.io/blog/2017/04/06/announce-removals/
โ Runtime Behavior Changes
* util-core: All `Timers` now handle negative or undefined times/durations in uniform way: treat them as zeros (i.e., `Time.epoch`, `Duration.Zero`). ``RB_ID=916008``
-
v6.43.0 Changes
April 20, 2017โ Runtime Behavior Changes
* ๐ util-core: `Closable.all(..)` will now catch synchronous exceptions thrown by any `Closable.close(..)` invocations, and wrap them in a failed Future. ``RB_ID=914859`` * util-stats: InMemoryStatsReceiver's `gauges` member is now safe for concurrent iteration but now holds strong references to gauge instances. ``RB_ID=911951`` ๐ New Features
- util-core:
c.t.f.u.BufReader
andc.t.f.u.BufWriter
have been moved from finagle-core to util-core and renamed toc.t.io.ByteReader
andc.t.io.ByteWriter
respectively. They are now also exposed publicly.RB_ID=911639
๐ฅ Breaking API Changes
* ๐ util: util-zk-commons was removed, since it was only a connector between util and commons, which was not widely used. ``RB_ID=910721`` * util-core: AsyncQueue's `size` method is now final while `offer` and `fail` are no longer final. ``RB_ID=914191``
- util-core:
-
v6.42.0 Changes
March 10, 2017๐ New Features
* util-core: Promoted the positional `Buf.Indexed` API to be a first-class part of `c.t.io.Buf`. If you have a custom implementation of `Buf` it will require some effort to become compatible. ``RB_ID=907231`` ๐ฅ Breaking API Changes
๐ util-app: Set failFastUntilParsed on created flag added to
c.t.app.Flags
viac.t.app.Flags#add
.RB_ID=908804
๐ util-core: Remove deprecated
c.t.io.ConcatBuf
which is replaced byc.t.io.Buf.apply(Iterable[Buf])
.RB_ID=907180
๐ util-core: Remove deprecated
c.t.util.RingBuffer
. Use Guava'sEvictingQueue
.RB_ID=907516
๐ util-core: Remove deprecated
c.t.concurrent.ConcurrentPool
. Prefer Finagle'sc.t.f.pool.BufferingPool
.RB_ID=907516
๐ util-core: Remove deprecated
c.t.concurrent.ConcurrentMultiMap
. Prefer Guava's Multimap.RB_ID=907516
Dependencies
* util: Bump guava to 19.0. ``RB_ID=907807``
-
v6.41.0 Changes
February 03, 2017๐ New Features
* util-app: App now exposes `closeOnExit` publicly. ``RB_ID=906890`` * util-core: Add method to `Buf` to efficiently write to a nio `ByteBuffer`. ``RB_ID=910152`` * util-core: Add Java-friendly API to Scala.java for converting from a Java 8 `Optional` to a Scala `Option`. ``RB_ID=906512`` * util-core: Introduced a positional `Buf` API, `Buf.Indexed`, and retrofitted all existing implementations in util and finagle to adopt it. It is now used throughout for a reductions in allocation and latency. In two services at Twitter we saw a 1-2% reduction in allocations. We plan to open the API to the public and make it a part of `Buf` once we are confident in the APIs. ``RB_ID=904559`` ``RB_ID=905253`` ``RB_ID=906201`` * ๐ util-slf4j-api: Introduce slf4j-api support into util. This includes a small scala wrapper over the `org.slf4j.Logger` and a scala-friendly `Logging` trait. Changes also include the util-slf4j-jul-bridge module which is a library that provides a utility to "smartly" install the Slf4jBridgeHandler. ``RB_ID=900815`` โ Runtime Behavior Changes
๐ util-core: Improved performance and allocation rates of some "random access"
Buf
operations.RB_ID=905253
util-core: Standardized argument checking in implementations of
c.t.io.Buf.write
andc.t.io.Buf.slice
.RB_ID=899935
๐ฅ Breaking API Changes
* ๐ util-core: Deprecated `c.t.io.ConcatBuf` which is replaced by `c.t.io.Buf.apply(Iterable[Buf])`. ``RB_ID=899623``
-
v6.40.0 Changes
December 20, 2016๐ Bug Fixes
* util-core: Fix issue with c.t.concurrent.AsyncStream.mapConcurrent which will cause the stream head to be held for life of operation. ``RB_ID=896168`` ๐ฅ Breaking API Changes
๐ util-core: Deprecated charset constants in
c.t.io.Charsets
have been removed. Use java.nio.charset.StandardCharsets instead.RB_ID=893542
๐ util-core:
com.twitter.util.NonFatal
is deprecated, usescala.util.control.NonFatal
instead.RB_ID=892475
util-core:
FactoryPool
/SimplePool
now inheritsscala.collection.mutable.Queue[A]
not deprecatedscala.collection.mutable.QueueProxy[A]
RB_ID=896485
util-core:
Buf
has been promoted from a trait to an abstract class to facilitate memoization of theBuf
hash code. This also removes the need for the Java friendly abstract class:AbstractBuf
.RB_ID=897476
-
v6.39.0 Changes
November 22, 2016No Changes
-
v6.38.0 Changes
October 10, 2016๐ New Features
* util-app: Java developers can now declare instances of `GlobalFlag` from Java. See `c.t.app.JavaGlobalFlag` for details. ``RB_ID=874073`` * util-thrift: We now depend on a fork of libthrift hosted in the Central Repository. The new package lives in the 'com.twitter' organization. This removes the necessity of depending on maven.twttr.com. This also means that eviction will not be automatic and using a newer libthrift library requires manual eviction if artifacts are being pulled in transitively. ``RB_ID=885879`` * ๐ฒ util-logging: Allow users to override `c.t.util.logging.Logger` installation, making it easier to work with SLF4J bridges. ``RB_ID=870684`` * util: No longer need to add an additional resolver that points to maven.twttr.com. ``RB_ID=878967`` ๐ Bug Fixes
- util-core:
c.t.io.InputStreamReader
andReaders
created byc.t.io.Reader.fromFile
andfromStream
now close the underlyingInputStream
on reading of EOF and on calls toReader.discard
.RB_ID=873319
๐ฅ Breaking API Changes
* util-core: `c.t.app.GlobalFlag` is now `abstract` to reflect how the class is intended to be used. ``RB_ID=875409``
- util-core:
-
v6.37.0 Changes
September 07, 2016๐ New Features
* util-app: Introduce `c.t.app.Flag.letClear` allowing flags to be unset. ``RB_ID=868177``
-
v6.36.0 Changes
August 25, 2016๐ New Features
* util-core: `c.t.util.FuturePool` now optionally exposes metrics on their internal state such as active tasks, and completed tasks. ``RB_ID=850652`` * util-core: Add a system property `com.twitter.concurrent.schedulerSampleBlockingFraction` that can be set to a value between 0.0 and 1.0 (inclusive). When the Scheduler runs blocking code, it will log the stacktrace for that fraction of the calls. ``RB_ID=861892`` * ๐ util-core: Add Java-friendly API for `StorageUnit`. See `StorageUnit.fromX` and `StorageUnit.{times, plus, minus, divide}` methods. ``RB_ID=864546`` โ Runtime Behavior Changes
- util-eval: The compiler reporter is now reset between code check invocations.
This means that when there is a failure that it is no longer required to reset
the entire state to recover and that already compiled and loaded classes can still
be used.
RB_ID=859878
- util-eval: The compiler reporter is now reset between code check invocations.
This means that when there is a failure that it is no longer required to reset
the entire state to recover and that already compiled and loaded classes can still
be used.
-
v6.35.0 Changes
July 07, 2016โ Runtime Behavior Changes
* util-codec: StringEncoder no longer depends on apache commons-codec, and decode will now throw an exception when it fails to decode a byte, instead of failing silently. ``RB_ID=833478`` * util-collection: LruMap is now backed by jdk LinkedHashMap instead of apache collections LRUMap. ``RB_ID=833515`` * util-core: `com.twitter.util.NonFatal` is now implemented by Scala's `scala.util.control.NonFatal`. This changes behavior such that `java.lang.StackOverflowError` is considered fatal and `java.lang.NoSuchMethodException` is considered non-fatal. ``RB_ID=835671`` ๐ New Features
๐ util-app:
com.twitter.finagle.util.LoadService
has been moved toc.t.app.LoadService
and can now be used without needing a finagle-core dependency.RB_ID=829897
๐ util-cache: Adds support for Caffeine-style caches.
RB_ID=833848
โฑ util-core: Add
c.t.concurrent.Scheduler.blockingTimeNanos
which tracks time spent doing blocking operations.RB_ID=828289
๐ค util-core: Reduced allocations by 40% and latency by 18% of satisfying
Promises
.RB_ID=832816
๐ util-core:
c.t.util.NoStacktrace
is removed. Usescala.util.control.NoStackTrace
instead.RB_ID=833188
util-core: Add
Future.joinWith
that also accepts a function(A, B) => C
for mapping a joined result.RB_ID=838169
util-core: Add
Future.by(Time)
, complementary to the existingFuture.within(Duration)
RB_ID=838169
util-core: Add
c.t.util.ProxyTimer
which allows for creating proxy basedTimers
outside of thecom.twitter.util
package.RB_ID=846194
๐ util-core: Add
AsyncStream.merge
merge potentially inifite streamsRB_ID=846681
๐ util-security: Added new project.
RB_ID=843070
๐ฅ Breaking API Changes
* ๐ Builds are now only for Java 8 and Scala 2.11. See the `blog post <https://finagle.github.io/blog/2016/04/20/scala-210-and-java7/>`_ for details. ``RB_ID=828898`` * ๐ util-core: `c.t.u.Bijection` is removed. use `c.t.bijection.Bijection` (https://github.com/twitter/bijection) instead. ``RB_ID=834383`` * ๐ util-core: Deprecated method `Future.get()` has been removed because it made it too easy to hide blocking code. Replaced usage with the more explicit `com.twitter.util.Await.result(Future)`. ``RB_ID=833579`` * ๐ util-core: Deprecated method `Future.get(Duration): Try` has been removed because it made it too easy to hide blocking code. Replaced usage with the more explicit `com.twitter.util.Await.result(Future.liftToTry)`. ``RB_ID=836066`` * ๐ util-core: Deprecated methods `Future.isReturn` and `Future.isThrow` have been removed because they made it too easy to hide blocking code. Replaced usage with the more explicit `Await.result(Future.liftToTry).isReturn` and `Await.result(Future.liftToTry).isThrow`. ``RB_ID=837329`` * ๐ util-lint: Added methods `com.twitter.util.lint.Rules.removeById(String)` and `com.twitter.util.lint.RulesImpl.removeById(String)` so that it is now possible to remove a `com.twitter.util.lint.Rule` from the `com.twitter.util.lint.GlobalRules` set. ``RB_ID=840753`` ๐ Bug Fixes
util-core: AsyncMeter had a bug where if the burst size was smaller than the number of disbursed tokens, it would discard all of the tokens over the disbursal limit. Changed to instead process tokens in the wait queue with leftover tokens. This improves behavior where the actual period is smaller than can actually be simulated with the given timer.
RB_ID=836742
util-core: Once didn't actually provide the guarantee it tried to, because of an issue with the scala compiler, https://issues.scala-lang.org/browse/SI-9814. It should now actually be synchronized.
RB_ID=842245
๐ util-zk: Fixed race when an existing permit is released between the time the list was gotten and the data was checked.
RB_ID=835856
util-core: Memoize apply now throws IllegalStateException if a thread re-enters with identical input parameters instead of deadlocking.