The Level objects and the Logger object are intertwined in a way that may lead to trouble in multithreaded applications: the Level class constructor requires access to the Logger object, whose constructor, in turn, forces construction of the Level objects. Because evaluating the constructor of an object blocks other threads trying to dereference the object, this can end up in a deadlock: - Thread 1 holds lock for 'Level.OFF' construction and awaits on the Logger object - Thread 2 holds lock for the Logger object construction and awaits on 'Level.OFF' Fix the problem by constructing the Level objects non-lazily when the Level object (rather than the Logger object) is accessed for the first time.
… regex, split, or toInt ipToOptionInt: added
Contexts are immutable, and we copy them when a local is set. Save/restore operations dominates Local.set, so this avoids an order of magnitude of copies, even after the previous save cache change. In the topo stress test, this scales Local allocation down to 0.3% of total allocation, down from 6.4%
* finagle-http/Message.scala: mediaType=: no longer sets charset to utf-8 add Message.charset, Message.charset= * finagle-http/MediaType.scala: add OctetStream * util-core/NetUtil.scala: Add inetAddressToInt, isInetAddressInBlock, isInetAddressInBlocks
we do this by 1. cache saved contexts 2. less wrapping, with a slightly less type safe API. Joint work with Sam.
…ema in tweetypie to only include the data needed by the public api - replaced the PlaceGeometry object with a list of GeoCoordinates defining the bounding box - computing the bounding box by decoding the "wkb" (well-known-binary) data. - now filling in the country-code by walking up the place containment hierarchy. - place loading is now controlled more explicitly with a loadPlaces option. languageTag still affects localization, but defaults to "en" if not otherwise specified. - updated birdherd to optionally use the loadPlaces option and to extract country code and bounding box.
… applications that want this behavior will be calling Logger.configure anyway" This reverts commit 30261a638449cfc5ca12e1b9aa77c8630bede985.
… Similar to calling new Promise(result), but doesn't expose Promise. Analogous to the existing value/exception methods, but doesn't force you to decompose your Try.
…tions that want this behavior will be calling Logger.configure anyway
This can be important if Offer.choose is in a tight loop.