Skip to content

HTTPS clone URL

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
    Problem
    
    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.
    
    Solution
    
    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".
    
    RB_ID=540180
  2. 3rdparty/BUILD: split up into package dirs - part 11

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

    Johan Oskarsson authored jenkins@bigbird committed
    RB_ID=538351
    TBR=true
  2. @mariusae

    Status.open, 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
    resolve):
    
    	Status.awaitOpen(service.status)
    
    RB_ID=537741
  3. @vkostyukov

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

    vkostyukov authored jenkins@bigbird committed
    RB_ID=536869
  4. @jaked

    finagle-core: removed enum / expand from Namer

    jaked authored jenkins@bigbird committed
    Problem:
    
    The enum / expand methods in Namer are unused, and make modification
    difficult.
    
    Solution:
    
    Whack 'em.
    
    RB_ID=535369
  5. @stevegury

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

    stevegury authored jenkins@bigbird committed
    …ver)
    
    Problem
    
    In order to release our libraries for the open-source community, we need to update
    the version of those.
    
    Solution
    
    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.
    
    RB_ID=537603
  6. 3rdparty/BUILD: split up into package dirs - part 5

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

    Johan Oskarsson authored jenkins@bigbird committed
    RB_ID=535565
  2. @jaked

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

    jaked authored jenkins@bigbird committed
    …rElse
    
    Problem:
    
    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.
    
    Solution:
    
    Remove Namer.OrElse, have Dtab#lookup do Namer classloading for /#/
    paths, add com.twitter.finagle.namer.global class which delegates to
    Namer.global, and add a default /=>/#/com.twitter.finagle.namer.global
    to the base Dtab.
    
    RB_ID=533133
  3. @mariusae

    Introduce request contexts

    mariusae authored jenkins@bigbird committed
    Problem
    
    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.
    
    Solution
    
    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.
    
    Result
    
    Fewer bugs, clearer code.
    
    RB_ID=536961
    TBR=true
  4. @kevinoliver

    finagle-core: Acknowledge ResolutionRaceTest is flakey

    kevinoliver authored jenkins@bigbird committed
    Problem
    
    ResolutionRaceTest still fails intermittently in CI.
    
    Solution
    
    Mark it as flakey again.
    
    RB_ID=534727
  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
    finagle-serversets:
    
    - Move Zk2Resolver from ServerSet2.scala into Zk2Resolver.scala
    - Zk.scala -> ZkSession.scala
    - Rename ServerSet2 class/file to ServiceDiscoverer and update its
      Scaladoc
    - Rename `ServerSet2.weighted` companion object function to
      `ServiceDiscoverer.zipWithWeights`
    - 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
    
    RB_ID=532959
  6. @kevinoliver

    finagle-stream: ensure StreamServerDispatcher's response is released

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

    Set up SBT for 2.11 builds and remove StreamyJ dependency

    travisbrown authored jenkins@bigbird committed
    Problem
    
    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.
    
    Solution
    
    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.
    
    Result
    
    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).
    
    RB_ID=532745
  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.
    
    RB_ID=532943
  9. @evnm

    Problem

    evnm authored jenkins@bigbird committed
    The current sections of the user guide covering loadbalancer and
    serversets metrics are incomplete and outdated.
    
    Solution
    
    - 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
      implementations.
    
    While in here, a README is added to finagle/doc with docsite
    generation instructions.
    
    RB_ID=530135
  10. @evnm

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

    evnm authored jenkins@bigbird committed
    RB_ID=529531
  11. @mariusae

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

    mariusae authored jenkins@bigbird committed
    Problem
    
    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.
    
    Solution
    
    Introduce a first-class Status. It's an ADT with variants
    
    	Open
    	Busy
    	Closed
    
    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.
    
    Discussion
    
    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.
    
    RB_ID=513399
  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
    
    RB_ID=531985
    TBR=true
  13. @stevegury

    finagle-stats: Introduce ImmediateMetricsStatsReceiver

    stevegury authored jenkins@bigbird committed
    Problem
    
    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.
    
    Solution
    
    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).
    
    RB_ID=530261
  14. @travisbrown

    Avoid Scala 2.11-incompatible APIs and language features

    travisbrown authored jenkins@bigbird committed
    Problem
    
    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.
    
    Solution
    
    Change code to be compatible with both 2.10 and 2.11.
    
    Result
    
    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.
    
    RB_ID=531085
  15. @itszero

    Macaw-Swift PRESUBMIT hook

    itszero authored jenkins@bigbird committed
    RB_ID=499417
  16. @mergeconflict

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

    mergeconflict authored jenkins@bigbird committed
    RB_ID=530049
    TBR=true
    NO-QUEUE=true
  17. @dschobel

    finagle-memcached: flake MigrationClientTest and replace RandomSocket…

    dschobel authored jenkins@bigbird committed
    … usage
    
     rescuing https://reviewboard.twitter.biz/r/528985/ and https://reviewboard.twitter.biz/r/527451/
     from birdcage and merging into one rb.
    
     original descriptions:
    
     528985:
     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.
    
     527451:
     remove racy RandomSocket usage. between this and https://reviewboard.twitter.biz/r/527451/
     the only remaining RandomSocket use in finagle-memcached|x is in the ExternalMemcached
     object which requires it (for now, see CSL-1403 for details).
    
    RB_ID=529569
  18. @evnm

    finagle-core: Use loopback address in WeightedSocketAddressTest

    evnm authored jenkins@bigbird committed
    RB_ID=527567
  19. @9len

    [finagle-core] Namer.global: make /$/inet resolution lazy

    9len authored jenkins@bigbird committed
     Problem
     Namer.global.lookup 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.
    
     Solution
     - In Namer.global.InetPath.unapply, 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.
    
     Result
     InetSocketAddresses in Bound Names returned by Namer.global are only resolved when
     the underlying Var[Addr] is observed.
    
    RB_ID=527679
  20. @jaked

    finagle-core: take an Option in ClientBuilder#socksProxy

    jaked authored jenkins@bigbird committed
    Problem:
    
    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
    Option[SocketAddress].
    
    Solution:
    
    Make ClientBuilder#socksProxy take an Option[SocketAddress].
    
    RB_ID=527809
  21. @kevinoliver

    finagle-core: make ResolutionRaceTest more robust

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

    finagle-mux: increase PatienceConfig for scalatest Conductors

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

    [finagle-httpx-compat]: Netty client adaptor

    luciferous authored jenkins@bigbird committed
    Problem
    
    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).
    
    Solution
    
    A filter to wrap an HTTPx client so that it can be used with
    Netty types.
    
    Result
    
    Ability to use HTTPx clients with Netty types.
    
    RB_ID=527557
    TBR=true
  2. @stevegury

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

    stevegury authored jenkins@bigbird committed
    Problem
    
    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.
    
    Solution
    
    Add a FATAL log when one of the instantiation fails, and continue the
    loading without the failing instance. This should drastically simplify
    the debugging.
    
    RB_ID=525813
  3. @vkostyukov

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

    vkostyukov authored jenkins@bigbird committed
    RB_ID=521667
  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.
    
    RB_ID=526901
  5. @stevegury

    Finagle, Ostrich, Util: Fix sbt project definition

    stevegury authored jenkins@bigbird committed
    Problem
    
    Finagle was not compiling with sbt for multiple reasons:
    - the java compilation of AbstractCloseAwaitably.java required one extra import
    - finagle-httpx-compat required direct dependencies on finagle-http(x)
    
    Solution
    
    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.
    
    RB_ID=525909
Something went wrong with that request. Please try again.