Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Commits on Dec 12, 2014
  1. @stevegury

    Bump all sbt projects (util, ostrich, finagle, twitter-server)

    stevegury authored jenkins@bigbird committed
    After looking at the finagle changelog, I discovered that we already had
    entries for finagle 6.23.0 and more for the current version.
    The previous version bump was then incorrect, the version needs to be
    greater than 6.23.0.
    Bump the minor version of finagle, and for consistency I did the same
    thing for all the other related projects.
    Close the current section of the finagle changelog and name it "6.24.0".
  2. 3rdparty/BUILD: split up into package dirs - part 11

    Johan Oskarsson authored jenkins@bigbird committed
Commits on Dec 11, 2014
  1. 3rdparty/BUILD: split up into package dirs - part 9

    Johan Oskarsson authored jenkins@bigbird committed
  2. @mariusae, Status.awaitOpen: utilities to wait for Statuses

    mariusae authored jenkins@bigbird committed
    These are useful utilities for acting on Status changes. For example
    to replace ClientRegistry.expAllRegisteredClientsResolved(), you can
    wait for a Service to be ready to serve (this includes a complete
  3. @vkostyukov

    finagle-core: Add Addrs, a Java-friendly variant of Addr

    vkostyukov authored jenkins@bigbird committed
  4. @jaked

    finagle-core: removed enum / expand from Namer

    jaked authored jenkins@bigbird committed
    The enum / expand methods in Namer are unused, and make modification
    Whack 'em.
  5. @stevegury

    Update sbt projet definitions of (util, ostrich, scoorge, twitter-ser…

    stevegury authored jenkins@bigbird committed
    In order to release our libraries for the open-source community, we need to update
    the version of those.
    Update the version in the sbt project definition.
    While I was there, update also sbt to the latest version and increase the jvm
    configuration for the code cache.
  6. 3rdparty/BUILD: split up into package dirs - part 5

    Johan Oskarsson authored jenkins@bigbird committed
Commits on Dec 10, 2014
  1. 3rdparty/BUILD: split up into package dirs - part 3 (jackson)

    Johan Oskarsson authored jenkins@bigbird committed
  2. @jaked

    finagle-core: move Namer class loading into Dtab to eliminate Namer.O…

    jaked authored jenkins@bigbird committed
    Namer.OrElse has non-lazy semantics, which leads to unnecessary lookups
    in certain cases, and makes certain testing difficult. Moreover it
    overlaps somewhat with NameTree.Alt / Dtab alternation; we'd like
    evaluation semantics to be in ~1 place.
    Remove Namer.OrElse, have Dtab#lookup do Namer classloading for /#/
    paths, add class which delegates to, and add a default /=>/#/
    to the base Dtab.
  3. @mariusae

    Introduce request contexts

    mariusae authored jenkins@bigbird committed
    This change solves two related problems.
    1. The use of c.t.u.Local is fraught with potential misuse and
    confusion. Finagle now delimits Locals in dispatchers, but there are
    still many opportunities for misuse. The Local API is not conducive to
    proper use. There have also been issues with leaks caused by misuse of
    this API.
    2. Finagle has no control over how request contexts are delimited. In
    practice, they are backed by Locals, and thus suffer the same
    problems. This causes confusion and bugs.
    Provide a single, unified way of dealing with request-local data in
    Finagle. We introduce type c.t.f.context.Context whose lifetimes are
    managed by Finagle itself. There are two variants: Contexts.local
    never escapes the local request graph, while Contexts.broadcast may
    transit process boundaries, as is the case for current "request
    contexts." This has the additional benefit of doing away with service
    loading to support marshalled request contexts.
    Most uses are ported over, including trace ids; some, like Dtab
    locals, remain for porting over later.
    Fewer bugs, clearer code.
  4. @kevinoliver

    finagle-core: Acknowledge ResolutionRaceTest is flakey

    kevinoliver authored jenkins@bigbird committed
    ResolutionRaceTest still fails intermittently in CI.
    Mark it as flakey again.
  5. @evnm

    finagle-serversets: Rename core classes and separate them into distin…

    evnm authored jenkins@bigbird committed
    …ct files
    The following changes are made to the organization of
    - Move Zk2Resolver from ServerSet2.scala into Zk2Resolver.scala
    - Zk.scala -> ZkSession.scala
    - Rename ServerSet2 class/file to ServiceDiscoverer and update its
    - Rename `ServerSet2.weighted` companion object function to
    - Make the `entriesOf` and `vectorsOf` SS2 functions private[this],
      since they're only used internally to the class
    - Repurpose `SS2.weightedOf` as `ServiceDiscoverer.apply`
    - The appropriate test file/class name changes to adhere to the above
    - Rename ZooKeeperZkTest to ZkSessionEndToEndTest
  6. @kevinoliver

    finagle-stream: ensure StreamServerDispatcher's response is released

    kevinoliver authored jenkins@bigbird committed
    StreamResponse release() callback is not always triggered when
    clients disconnect.
    Add an interrupt handler to ensure the response gets released.
  7. @travisbrown

    Set up SBT for 2.11 builds and remove StreamyJ dependency

    travisbrown authored jenkins@bigbird committed
    We want to publish 2.11 versions of as many Finagle subprojects as possible.
    Some subprojects can't be built for 2.11 at the moment, since they depend on
    either Specs or Ostrich, neither of which have builds for 2.11. One subproject
    (finagle-example) depends on StreamyJ, which also has no 2.11 build. We're also
    using Jackson 2.3.1 internally, and the Jackson Scala module for that version is
    not available for 2.11.
    Because StreamyJ is used in a single test and nowhere else in Finagle, I've
    simply ported the test to use vanilla Jackson, which allows us to remove the
    dependency. The Jackson version used in the SBT builds for Finagle and
    twitter-server now depends on the Scala version, and Finagle subprojects that we
    can't build for 2.11 are excluded from the root finagle project. I've also
    updated the Scala 2.11 versions in the SBT builds for Util and Scrooge from
    2.11.2 to 2.11.4.
    We can publish 2.11 builds for twitter-server and all but five Finagle
    subprojects. Note that finagle-example, finagle-ostrich4, finagle-redis, and
    finagle-stress now must be tested and published individually, since they're no
    longer aggregated by the root finagle project (this is similar to the current
    status of util-eval).
  8. @mariusae

    finagle-core: Define isAvailable as status == Open

    mariusae authored jenkins@bigbird committed
    This retains the old definition: isAvailable was false for both
    transient and permanent availability issues.
  9. @evnm


    evnm authored jenkins@bigbird committed
    The current sections of the user guide covering loadbalancer and
    serversets metrics are incomplete and outdated.
    - Replace the serversets section with a comprehensive section on
      service discovery, covering stats on high-level naming and
      lower-level ZK diagnostics.
    - Re-label the HeapBalancer section to account for the various LB
    While in here, a README is added to finagle/doc with docsite
    generation instructions.
  10. @evnm

    finagle-core: Rm vestigial loadbalancer `Stack.Role`

    evnm authored jenkins@bigbird committed
  11. @mariusae

    finagle-core: Introduce Status, Service.status, ServiceFactory.status

    mariusae authored jenkins@bigbird committed
    Service.isAvailable and ServiceFactory.isAvailable is too
    coarse-grained for many uses. For example, we need to be able to
    distinguish between a transiently unavailable service and one that is
    permanently closed. This is useful in Mux's leasing mechanism as well
    as for the upcoming admission controllers.
    Introduce a first-class Status. It's an ADT with variants
    The Busy variant carries a Future[Unit] indicating when the status has
    changed. This is useful for queueing at the appropriate level in the
    stack. The other variants don't have arguments.
    Implementing this without breaking the API was a bit tricky. The
    solution is uglier than it should be because of it. I'd like to move
    towards finalizing isAvailable, which would make everything much more
    consistent. I've inserted notes where appropriate (grep for CSL-1336)
    that can be used to track required API changes when we're ready to
    pull that trigger.
    I've modified the rest of the birdcage, too, to be 'final-safe' -- it
    compiles locally if i modify the definition of Service.isAvailable and
    ServiceFactory.isAvailable and also fix up the noted usages. The
    upshot is that we're very close to being able to do this without
    breaking anyone.
    This change aims to maintain "isAvailable" parity -- I have not yet
    made use of the finer-grained status field; this comes next.
  12. @evnm

    finagle-serversets: Flatten and clean up Zk.scala

    evnm authored jenkins@bigbird committed
    - Rename Zk's `op` function to `watchedOperation`
    - Remove the ZkFactory/FnZkFactory hierarchy in favor of a flat
      ZkSession class and companion object
    - Use implicit timer arguments everywhere rather than requiring them
      to be passed in explicitly
    - Simplify the `safeRetry` method by making it take a single
      `=> Future[T]` argument and use the class-scoped `retryBackoffs`
      field rather than passing it in on every usage
    - Add a few scaladocs, reword a few variable names
  13. @stevegury

    finagle-stats: Introduce ImmediateMetricsStatsReceiver

    stevegury authored jenkins@bigbird committed
    By default, MetricsStatsReceiver uses WindowedApproxHistogram to report stats on a sliding
    window of 60 seconds and with a delay of at most 20 seconds.
    This is useful in production but annoying when you want to write tests because you need to
    wait before the data will be aggregated.
    Refactor the MetricsStatsReceiver constructor, which now takes a histogram builder parameter.
    Introduce a new class ImmediateMetricsStatsReceiver, which uses ApproximateHistogram under
    the hood (without any window).
  14. @travisbrown

    Avoid Scala 2.11-incompatible APIs and language features

    travisbrown authored jenkins@bigbird committed
    Case classes without parameter lists are no longer supported in Scala 2.11, and
    some packages and methods that were deprecated in 2.10 are no longer available.
    Change code to be compatible with both 2.10 and 2.11.
    Most Finagle subprojects can be compiled on 2.11 (with no ABI breakage for
    2.10). The SBT build changes to support 2.11 are coming in a separate commit.
  15. @itszero

    Macaw-Swift PRESUBMIT hook

    itszero authored jenkins@bigbird committed
  16. @mergeconflict

    GROUPS file cleanup for api/macaw/limiter/ht-team

    mergeconflict authored jenkins@bigbird committed
  17. @dschobel

    finagle-memcached: flake MigrationClientTest and replace RandomSocket…

    dschobel authored jenkins@bigbird committed
    … usage
     rescuing and
     from birdcage and merging into one rb.
     original descriptions:
     MigrationClient's "sending dark trafic" test has been flaking for
     a number of reasons, usually blocking on zk operations, for a while
     so mark it as flaky until someone from cache can take a look.
     remove racy RandomSocket usage. between this and
     the only remaining RandomSocket use in finagle-memcached|x is in the ExternalMemcached
     object which requires it (for now, see CSL-1403 for details).
  18. @evnm

    finagle-core: Use loopback address in WeightedSocketAddressTest

    evnm authored jenkins@bigbird committed
  19. @9len

    [finagle-core] make /$/inet resolution lazy

    9len authored jenkins@bigbird committed
     Problem constructs InetSocketAddresses inline for /$/inet Paths,
     which causes DNS resolution before the Bound Names are actually used. This
     causes problems when using Dtab overrides in restricted network environments
     to avoid /$/inet addresses being resolved.
     - In, call InetSocketAddress.createUnresolved when both
       host and port are specified.
     - In Namer.glolal.lookup, change the Var.value for InetPath to a Var.async, in which
       unresolved InetSocketAddresses are resolved.
     InetSocketAddresses in Bound Names returned by are only resolved when
     the underlying Var[Addr] is observed.
  20. @jaked

    finagle-core: take an Option in ClientBuilder#socksProxy

    jaked authored jenkins@bigbird committed
    If you set a SOCKS proxy with -socksProxy, there is no way to turn it
    off for individual ClientBuilder clients, because the
    ClientBuilder#socksProxy method takes a SocketAddress rather than an
    Make ClientBuilder#socksProxy take an Option[SocketAddress].
  21. @kevinoliver

    finagle-core: make ResolutionRaceTest more robust

    kevinoliver authored jenkins@bigbird committed
    ResolutionRaceTest uses a lot of ports which are now a constrained
    resource in CI.
    Use the loopback interface where we are less constrained and
    close clients after usage.
  22. @kevinoliver

    finagle-mux: increase PatienceConfig for scalatest Conductors

    kevinoliver authored jenkins@bigbird committed
    `AlarmTest` has still failed in CI occasionally.
    Try increasing the PatienceConfig timeout before we mark the
    test as flakey.
Commits on Dec 2, 2014
  1. @luciferous

    [finagle-httpx-compat]: Netty client adaptor

    luciferous authored jenkins@bigbird committed
    We have the adaptors for services, but not for clients. To provide
    complete coverage we need an adaptor to convert an HTTPx client into
    a Netty client (related: RB_ID=497155).
    A filter to wrap an HTTPx client so that it can be used with
    Netty types.
    Ability to use HTTPx clients with Netty types.
  2. @stevegury

    finagle-core: Add log in case of instantiation failure in LoadService

    stevegury authored jenkins@bigbird committed
    The instantiation of a new class in LoadService can throw an exception
    (IncompatibleClassChangeError, ...). The cause of this exception is
    (most of the time) diamond dependencies or bad classpath.
    That's easy to fix as soon as you know which class caused the exception.
    Add a FATAL log when one of the instantiation fails, and continue the
    loading without the failing instance. This should drastically simplify
    the debugging.
  3. @vkostyukov

    finagle-kestrel: Add Java compilation tests and Java API for ReadHandle

    vkostyukov authored jenkins@bigbird committed
  4. @jduan

    remove newlines from test names so junit can generate correct XML files

    jduan authored jenkins@bigbird committed
    CI relies on JUNIT XML files for certain things, such as retrying failed
    tests. When test names have "newlines" in them, junit can't generate
    correct XML files. This change fixes that.
  5. @stevegury

    Finagle, Ostrich, Util: Fix sbt project definition

    stevegury authored jenkins@bigbird committed
    Finagle was not compiling with sbt for multiple reasons:
    - the java compilation of required one extra import
    - finagle-httpx-compat required direct dependencies on finagle-http(x)
    Fix the sbt project definition of Util/Finagle.
    While I was there, I cleaned up some scaladoc warning in util and
    some compilation warning in ostrich.
Something went wrong with that request. Please try again.