Commits on Jul 7, 2016
  1. @vkostyukov

    csl: Release CSL libraries

    Problem / Solution
    
    Finagle 6.36
    Util 6.35
    Ostrich 9.19
    TwitterServer 1.21
    Finatra 2.2.0
    Scrooge 4.8.0
    
    RB_ID=849873
    vkostyukov committed with jenkins Jul 7, 2016
  2. @jcrossley

    finagle/finagle-memcached: Buf framer for Memcached

    Problem
    
    As part of the move to Netty 4, we want framing in terms of Buf.
    
    Solution
    
    Introduce Buf framers in Memcached.
    
    RB_ID=848795
    jcrossley committed with jenkins Jul 7, 2016
  3. @stuhood

    Fix response-classifier HTTP example

    Problem:
    
    Response classifier docs have a mismatched example for HTTP.
    
    Solution:
    
    Fixed the HTTP example.
    
    RB_ID=849136
    stuhood committed with jenkins Jul 6, 2016
  4. @cacoco

    Twitter OSS: Add ISSUE_TEMPLATE

    Problem
    
    Open source contributors don't have a standardized way of including information we
    would like to be included when contributors open issues.
    
    Solution
    
    Create an ISSUE template for opening issues. The template is useful for customizing
    and standardizing information we'd like to have contributors include when opening
    an issue against a library.
    
    Result
    
    More help when creating issues in our Twitter OSS repositories.
    
    RB_ID=849239
    cacoco committed with jenkins Jul 6, 2016
Commits on Jul 6, 2016
  1. @mosesn

    finagle-http2: Turn off Http2TransporterTests too

    Problem
    
    We're still failing our travisci build because of a tiny test in http2.
    
    Solution
    
    Short-term: disable it!  Long-term: Re-enable it once we figure out
    why it's breaking.
    
    RB_ID=849381
    TBR=true
    mosesn committed with jenkins Jul 6, 2016
  2. @mosesn

    finagle-http2: Turn off flaky test

    Problem
    
    We're failing our travisci build because of a tiny test in http2.
    
    Solution
    
    Short-term: disable it!  Long-term: Re-enable it once we figure out
    why it's breaking.
    
    RB_ID=849268
    mosesn committed with jenkins Jul 6, 2016
  3. @kevinoliver

    finagle-toggle: Make JSON description optional

    Problem
    
    For a service owner's JSON configuration files, it is detrimental to
    require the description field. This is because the library owner has
    defined the toggle in their configuration file and as such, requiring
    the service owner to also add a description is wasteful and could lead
    to confusion in the future if they input something incorrect.
    
    Solution
    
    Ignore the description field for service owner's config files.
    
    Also, in preparation for future work, `ToggleMap.newMutable` and
    `ToggleMap.Proxy` have been made public.
    
    RB_ID=848340
    kevinoliver committed with jenkins Jul 5, 2016
  4. @roanta

    Problem

    We want mux and thrift-mux on netty4.
    
    Solution
    
    Introduce a pipeline implementation of mux framing on netty4
    and wire in all the neccessary configuration for clients and
    servers to talk over netty4.
    
    Result
    
    ThriftMux.client
     .configured(Mux.param.MuxImpl.Netty4)
     .newService(dest)
    
    ThriftMux.server
      .configured(Mux.param.MuxImpl.Netty4)
      .serveIface(...)
    
    RB_ID=842869
    roanta committed with jenkins Jul 5, 2016
  5. @cacoco

    finagle: Ensure TravisCI configuration is exhaustive

    Problem
    
    Not every testable finagle sub-project is listed in the
    .travis.yml configuration.
    
    Solution
    
    Add testable projects.
    
    Result
    
    More exhaustive TravisCI testing.
    
    RB_ID=848844
    cacoco committed with jenkins Jul 5, 2016
Commits on Jul 4, 2016
  1. @jcrossley

    finagle/finagle-core: Correctly include time to wait for stalled pipe…

    …line in dispatcher error msg
    
    Moved variable declaration above use in error msg string, so it's not null.
    
    RB_ID=848502
    jcrossley committed with jenkins Jul 1, 2016
  2. @kevinoliver

    finagle-toggle, twitter-server: Add admin UI for Toggles

    Problem
    
    We lack visibility into a service's `Toggle` configuration.
    
    Solution
    
    finagle-toggle:
    
    * Add a source field to `Toggle.Metadata` to cover where a `Toggle`
      comes from. Often this will be a `ToggleMap.toString`.
    
    * Add `ToggleMap.components(ToggleMap): Seq[ToggleMap]` which
      extracts all of the composite `ToggleMaps` that make up the given
      `ToggleMap`.
    
    * Add `StandardToggleMap.registeredLibraries` which returns a mapping
      of libraryName to `ToggleMap` for all `ToggleMaps` created with
      `StandardToggleMap`.
    
    twitter-server:
    
    * Add a new admin endpoint "/admin/toggles.json" that renders all
      `StandardToggleMap` registered toggles.
    
    Result
    
    Better visibility into Toggle configuration at runtime.
    
    RB_ID=847434
    kevinoliver committed with jenkins Jun 30, 2016
  3. @kevinoliver

    finagle-toggle: Various minor changes

    Problem
    
    As work on toggles has progressed there are small bits of API changes
    and implementation details that needed some touch ups.
    
    Solution
    
    * Rename `ToggleMap.MutableToggleMap` to `ToggleMap.Mutable`
    * Remove global `ToggleMap.mutable`
    * Validate libraryName in `StandardToggleMap.apply`
    
    RB_ID=847202
    kevinoliver committed with jenkins Jun 30, 2016
Commits on Jun 29, 2016
  1. @atollena

    finagle-core: Use InetResolver in the /$/inet Namer

    Problem
    --
    
    Names of the form `/$/inet` resolve hostnames via a call to `new
    InetSocketAddress`.  This constructor can block on DNS resolution, potentially
    inside a finagle thread. In addition, resolution is only performed once when
    using `/$/inet`. If DNS configuration changes for this name, changes are never
    surfaced in the resulting address.  The logic to work around those problems
    already exists in `InetResolver`, but `/$/inet` names do not use it.
    
    Solution
    --
    
    Use InetResolver when resolving `/$/inet`, causing resolution to happen in a
    separate thread pool.  To avoid timing issues in tests, explicitly use a local
    address with `/$/inet/localhost/<port>` and `/$/inet/<port>`.
    
    Result
    --
    
    DNS resolution for `/$/inet` names are performed in a thread pool, and DNS
    configuration changes are taken into consideration.
    
    RB_ID=835411
    atollena committed with jenkins Jun 29, 2016
  2. @mosesn

    finagle-http2: Adds {client,server}-specific tests

    Problem
    
    End to end tests are too coarse to understand where a given problem is.
    
    Solution
    
    Add {client,server}-specific tests.
    
    RB_ID=847081
    mosesn committed with jenkins Jun 29, 2016
  3. @kevinoliver

    finagle-toggle: ToggleMap.orElse should keep Metadata descriptions

    Problem
    
    Most `Toggle.Metadata` does not have a `description` as the
    `ToggleMap` implementations don't have this data. When we combine
    `ToggleMaps` with `orElse` we should try to keep `description` when we
    can.
    
    Solution
    
    Continue to prefer the rest of the `Metadata` from `self` but use
    descriptions from `that` if its not defined.
    
    RB_ID=847122
    kevinoliver committed with jenkins Jun 28, 2016
  4. @madster26

    finagle-zipkin: Accept an explicit client name while constructing a …

    …zipkin scribe client
    
     Problem:
       We need the ability to name the scribe clients based on the use case and not generate a
       name based on the passed in scribe category.
    
     Solution:
       Define an apply method which accepts an explicit name for the zipkin scribe client.
    
    RB_ID=846259
    madster26 committed with jenkins Jun 28, 2016
  5. @kristofa

    finagle-memcached: Bugfix memcached Zipkin integration

    Problem
    
    When getting a value from memcached the cache hit/miss annotation
    was submitted after the cr annotation was submitted.
    
    Submitting the cache hit/miss annotation after the cr annotation resulted
    in the span being recreated and ending up in the DeadlineSpanMap.
    When the deadline exceeded the span was submitted a 2nd time overwriting
    the correct duration of the original span.  Once that happened
    the span was also annotated with 'finagle.flush'.
    
    Solution
    
    Update the memcached specific tracing filter so memcached specific
    annotations are submitted in between cs and cr annotations.
    
    Result
    
    The memcached span is not re-submitted a 2nd time and does not end
    up in DeadlineSpanMap. The duration is correct when viewed in zipkin-web
    and there is no 'finagle.flush' annotation anymore.
    
    Signed-off-by: Jillian Crossley <jillianc@twitter.com>
    
    RB_ID=847035
    kristofa committed with jenkins Jun 28, 2016
  6. @smlance

    finagle: Uncomment finagle-thrift and finagle-thriftmux from .travis.…

    …yml build matrix
    
    Problem:
    
    The finagle-thrift and finagle-thriftmux lines are commented out in Finagle's
    .travis.yml build matrix, because the Scrooge SBT plugin fails to build them.
    
    Solution:
    
    Make the Scrooge SBT plugin build finagle-thrift and finagle-thriftmux tests via
    a previous commit, and then uncomment the commented out lines in .travis.yml.
    
    Result:
    
    Finagle's .travis.yml file now includes all Finagle subprojects in its build
    matrix.
    
    RB_ID=847108
    smlance committed with jenkins Jun 28, 2016
  7. @kevinoliver

    finagle-toggle: Fix bug in ToggleMap.of

    Problem
    
    `ToggleMap.of` was adding the first `ToggleMap` two times. This should
    not have caused any changes in behavior, but it adds unnecessary
    overhead.
    
    Solution
    
    Only add the first element once.
    
    RB_ID=847080
    kevinoliver committed with jenkins Jun 28, 2016
  8. @kevinoliver

    finagle-core: Prevent HashedWheelTimer.Default from being stopped

    Problem
    
    Finagle has an expectation that `HashedWheelTimer.Default` is always
    running. However we don't prevent users from shutting it down.
    
    Solution
    
    Make `HashedWheelTimer.Default` have a wrapper that prevents `stop()`
    and includes logging to help users track down the caller.
    
    RB_ID=846194
    kevinoliver committed with jenkins Jun 28, 2016
  9. @smlance

    scrooge-sbt-plugin, finagle: Handle compiling for multiple languages …

    …and update Finagle Build.scala to build Java and Scala bindings
    
    Problem:
    
    The Scrooge SBT plugin fails to build the `finagle-thriftmux` and
    `finagle-thrift` tests, because they require both Scala and Java bindings, but
    Scrooge can only to generate bindings for one language. After fixing this
    problem, the "ThriftMux client to Thrift server " test fails with an
    OutOfMemoryError.
    
    Solution:
    
    Change the Scrooge language SettingKey from a `SettingKey[String]` to a
    `SettingKey[Seq[String]]`, and set `scroogeLanguages` to `Seq("java", "scala")`
    in Finagle's `Build.scala` file. Also, increase Finagle's SBT memory limit from
    2G to 4G.
    
    Result:
    
    Now the Scrooge SBT plugin can generate bindings for multiple languages.
    
    RB_ID=846198
    smlance committed with jenkins Jun 28, 2016
  10. @edma2

    finagle-core: fix flaky FixedInetResolverTest

    Problem:
    
    Cache size is computed via `Cache.estimatedSize()`, which is
    documented as being potentially inaccurate.
    
    Solution:
    
    Refactor InetResolver into more granular components and inject a
    cache via constructor.
    
    Result:
    
    Cache stats are cleaned up before assertions which makes tests pass.
    
    RB_ID=846215
    edma2 committed with jenkins Jun 27, 2016
Commits on Jun 27, 2016
  1. @vkostyukov

    finagle-redis: Replace CB with Buf in sorted set commands

    Problem / Solution
    
    Redis client exposes N3 `ChannelBuffer` in its API. It's important for us to
    remove it and unblock N4 migration for finagle-redis.
    
    This change migrates `SortedSetCommands` to `Buf`s.
    
    RB_ID=846074
    TBR=true
    vkostyukov committed with jenkins Jun 27, 2016
  2. @kevinoliver

    finagle-toggle: Introduce environment into StandardToggleMap

    Problem
    
    A safer rollout for a toggle in many cases is to enable the feature
    for staging environments before turning it on in production.
    
    Solution
    
    Introduce `ServerInfo.environment` which can report the enviroment a
    server is running in. This is utilized by `StandardToggleMap` to
    prefer environment-specific JSON configuration before
    non-environment-specific JSON configuration.
    
    Result
    
    Library owners will be able to enable Toggles in a safer manner.
    
    RB_ID=845877
    kevinoliver committed with jenkins Jun 24, 2016
  3. @dschobel

    finagle-http: add IoEngineImpl to registry

    Problem / Solution
    
    We want to track netty4 adoption for http 1.1, add a registry entry
    which records `IoEngineImpl`.
    
    RB_ID=845674
    dschobel committed with jenkins Jun 24, 2016
  4. @madster26

    finagle-core: Delegate Trace.isActivelyTracing decision to the underl…

    …ying tracers
    
    Problem:
    Currently the Trace.isActivelyTracing method works on the assumption that the
    underlying tracers are all of type c.t.f.zipkin.core.SamplingTracer and that they
    only use the sampling flags to make tracing decisions. This is no longer true with
    the notion of extension flags. There might be custom tracer implementations which
    use these extension flags to make independent tracing decisions.
    
    Solution:
     - Introduce a isActivelyTracing method to the Tracer interface
     - Force Trace.isActivelyTracing to delegate tracing decisions to the underlying
       tracers by invoking their isActivelyTracing method
    
    RB_ID=843190
    TBR=true
    madster26 committed with jenkins Jun 23, 2016
  5. @ryanoneill

    finagle-core: Remove Call of setEnableSessionCreation on SSLEngines

    Problem
    
    For SSLEngines created by and passed into Finagle for use with TLS,
    the setEnableSessionCreation method is called on the engine with a
    value of true. true is the default for JSSE implementations, and
    finagle-native treats this call as a no-op. However, for other native
    engines this call can be an unsupported operation, because there is no
    available way to turn off session creation.
    
    Solution
    
    Remove this call from the internals of finagle, so that exceptions
    are not thrown when trying to call setEnableSessionCreation on
    SSLEngines which do not support it.
    
    RB_ID=845765
    ryanoneill committed with jenkins Jun 23, 2016
  6. @vkostyukov

    finagle-redis: Replace CB with Buf in set commands

    Problem / Solution
    
    Redis client exposes N3 `ChannelBuffer` in its API. It's important for us to
    remove it and unblock N4 migration for finagle-redis.
    
    This change migrates `SetCommands` to `Buf`s.
    
    RB_ID=845578
    vkostyukov committed with jenkins Jun 23, 2016
  7. @vkostyukov

    finagle-redis: Replace CB with Buf in pub/sub commands

    Problem / Solution
    
    Redis client exposes N3 `ChannelBuffer` in its API. It's important for us to
    remove it and unblock N4 migration for finagle-redis.
    
    This change migrates `PubSubCommands` to `Buf`s.
    
    RB_ID=845087
    vkostyukov committed with jenkins Jun 23, 2016
  8. @kevinoliver

    finagle-toggle: optimize NullToggleMap.orElse and Toggle.Undefined.or…

    …Else
    
    Problem
    
    `NullToggleMap.orElse` and `Toggle.Undefined.orElse` create
    unnecessary work as their returned instances will always end up
    delegating to the instance passed into them.
    
    Solution
    
    Optimize these away by returning the passed in values.
    
    RB_ID=845099
    kevinoliver committed with jenkins Jun 22, 2016
  9. @olix0r

    Ensure that Transport.collate's future is satisfied before its reader…

    … is closed
    
    Problem
    
    There is a subtle race condition between DelayedReleaseService and
    HttpTransport. DelayedReleaseService may be notified that a stream has
    completed before the underlying transport has observed this update. This allows
    services to be released to the CachingPool before HttpTransport has an
    opportunity to update its ConnectionManager's state. This may manifest as a
    ConnectionClosedException, when a closed transport is returned as valid by
    CachingPool.
    
    Solution
    
    Update Transport.collate to satisfy its closure promise before actually closing
    the response stream. This allows the ConnectionManager to observe the state
    update before a response's Readers are notified.
    
    Fixes twitter/finagle#517
    
    Signed-off-by: Ruben Oanta <roanta@twitter.com>
    
    RB_ID=844959
    olix0r committed with jenkins Jun 22, 2016
  10. @nepthar

    finagle-mysql: Add netty4 transport

    RB_ID=840718
    nepthar committed with jenkins Jun 22, 2016
  11. @roanta

    finagle-mysql: flaky PrepareCacheTest

    Problem / Solution
    
    The PrepareCacheTest was flaky because it strictly checked for LRU
    eviction which isn't the case with a Caffeine cache. We don't need
    that guarantee, so it's okay to not test for it strictly.
    
    RB_ID=845267
    roanta committed with jenkins Jun 22, 2016
  12. @vkostyukov

    finagle-redis: Replace CB with Buf in HyperLog commands

    Problem / Solution
    
    Redis client exposes N3 `ChannelBuffer` in its API. It's important for us to
    remove it and unblock N4 migration for finagle-redis.
    
    This change migrates `HyperLogLogCommands` to `Bufs`.
    
    RB_ID=844945
    TBR=true
    vkostyukov committed with jenkins Jun 22, 2016
  13. @vkostyukov

    finagle-redis: Replace CB with Buf in btree commands

    Problem / Solution
    
    Redis client exposes N3 ChannelBuffer in its API. It's important for us to
    remove it and unblock N4 migration for finagle-redis.
    
    This change migrates `BtreeSortedSetCommands` to `Bufs`.
    
    RB_ID=844862
    TBR=true
    vkostyukov committed with jenkins Jun 22, 2016