1. 13 Jun, 2018 3 commits
    • Michael Park's avatar
      Added `SemiFuture::delayed` · 301a89b5
      Michael Park authored
      Summary:
      Added `FutureBase::delayedImplementation`. Kept the existing semantics of
      `Future::delayed` and `Future::delayedUnsafe`. `SemiFuture::delayed` uses
      the inline executor which means we could execute our trivial lambda on
      the `Timekeeper` thread. However we ultimately return a `SemiFuture`,
      so we're not necessarily on the hook to execute an arbitrarily complex
      continuation.
      
      NOTE: This is still possible if the user explicitly specifies
      `.via(inline_executor)`. Perhaps we should consider disallowing, or maybe linting for this.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D8372515
      
      fbshipit-source-id: e660dbf2a2bb084e11c5e57d1badacf09425f939
      301a89b5
    • Alfredo Altamirano's avatar
      Support constructing TDigest from centroids and getting centroids from TDigest · 856466e2
      Alfredo Altamirano authored
      Summary:
      To implement tdigest aggregation in scuba, we need to be able to deserialize and serialize the digests.
      I added a getter for the centroids so that we can serialize the tdigest, and added a constructor to create one from the list of centroids.
      
      Last diff was reverted because of a build error :(
      We were seeing an error only in opt mode because it's an error in gcc but not in clang.
      
      Differential Revision: D8381617
      
      fbshipit-source-id: 768a12795aeb02737eb9b060f80d01608685c91d
      856466e2
    • Aaryaman Sagar's avatar
      assert the presence of the KeepAlive functionality with VirtualExecutor · f2c8ffe5
      Aaryaman Sagar authored
      Summary: title
      
      Reviewed By: yfeldblum, andriigrynenko
      
      Differential Revision: D8386575
      
      fbshipit-source-id: c900c8692b10004f2d9fbd95fa8ca96b3b8517d2
      f2c8ffe5
  2. 12 Jun, 2018 5 commits
    • Yedidya Feldblum's avatar
      Skip trivial-copyability Expected expectations under gcc49 · 925aeb00
      Yedidya Feldblum authored
      Summary:
      [Folly] Skip trivial-copyability `Expected` expectations under gcc49.
      
      The focus is on gcc5+; all that is needed for now is to keep code compiling with gcc49, but not necessarily to ensure optimal trivial-copyability behavior.
      
      Reviewed By: Orvid
      
      Differential Revision: D8364392
      
      fbshipit-source-id: b0062193c844509b6bf26ed632dd8e5d4bdf77d2
      925aeb00
    • Igor Sugak's avatar
      remove UNDEFINED_SANITIZER use · 544a8c33
      Igor Sugak authored
      Summary: Assume, when UBSAN is used, it is always used on top of ASAN.
      
      Reviewed By: luciang
      
      Differential Revision: D8360231
      
      fbshipit-source-id: 3106cfa53567b18f199e9303ea4c14a464ff03cc
      544a8c33
    • Alex Guzman's avatar
      Pull sodium fbcode_builder spec out · dc6ade21
      Alex Guzman authored
      Summary: Makes a spec for libsodium.
      
      Reviewed By: knekritz
      
      Differential Revision: D8228801
      
      fbshipit-source-id: 18f623bce0bbc07f711129b15b78d56b6c852bf7
      dc6ade21
    • Yedidya Feldblum's avatar
      A cache for InlineExecutor singleton · c7d8ba07
      Yedidya Feldblum authored
      Summary: [Folly] A cache for `InlineExecutor` singleton, which can be inlined into callers with little extra code compared to calling the backing function directly.
      
      Reviewed By: marshallcline
      
      Differential Revision: D8339793
      
      fbshipit-source-id: d2be0128e617cfefe66809eb44ce40e1a8ae2dfb
      c7d8ba07
    • Yedidya Feldblum's avatar
      Write Promise::setException in terms of Promise::setTry · 3dd9d51b
      Yedidya Feldblum authored
      Summary: [Folly] Write `Promise::setException` in terms of `Promise::setTry`.
      
      Reviewed By: marshallcline
      
      Differential Revision: D8344928
      
      fbshipit-source-id: 90e21219f054329eca7ae1a6c2ca731a16328b6f
      3dd9d51b
  3. 11 Jun, 2018 5 commits
  4. 09 Jun, 2018 4 commits
    • Yedidya Feldblum's avatar
      A shorter name for executor local variable in Future methods · 467571e4
      Yedidya Feldblum authored
      Summary:
      [Folly] A shorter name for executor local variable in `Future` methods. Reads more nicely, with less awkward formatting.
      
      When the scope of a local variable's use is just a few lines, long names are not quite so critical.
      
      Reviewed By: marshallcline
      
      Differential Revision: D8339451
      
      fbshipit-source-id: 5d50cf0ce3473c1a79afeeddb9e1257cccf73e31
      467571e4
    • Yedidya Feldblum's avatar
      No need for qualifying InlineExecutor in Futures · ac16a6fc
      Yedidya Feldblum authored
      Summary: [Folly] No need for qualifying `InlineExecutor` in `Futures` - they are both in `namespace folly` already.
      
      Reviewed By: marshallcline
      
      Differential Revision: D8307058
      
      fbshipit-source-id: 17a0ecde1e57f1c0c88cbac09bbd1bb3daf7a24e
      ac16a6fc
    • Yedidya Feldblum's avatar
      Use InlineExecutor singleton in Future wait · 2b4f07ee
      Yedidya Feldblum authored
      Summary:
      [Folly] Use `InlineExecutor` singleton in `Future` wait v.s. letting the executor be `nullptr`.
      
      The effect is the same, but just more explicit.
      
      Reviewed By: marshallcline
      
      Differential Revision: D8306902
      
      fbshipit-source-id: fc90704de670b1ca9956253383fadad3be297847
      2b4f07ee
    • Andrii Grynenko's avatar
      VirtualExecutor · fc75fc56
      Andrii Grynenko authored
      Summary:
      Executor adaptor which allows joining only tasks scheduled through this VirtualExecutor instance without joining all other tasks in a wrapped Executor.
      This is very similar to VirtualEventBase, but works for any Executor.
      
      Reviewed By: yfeldblum, aary
      
      Differential Revision: D8342064
      
      fbshipit-source-id: 420b6390e2da88c4826e6d22bc8f3b3585525214
      fc75fc56
  5. 08 Jun, 2018 7 commits
    • Yedidya Feldblum's avatar
      Ensure sleep duration in logging RateLimiter test · 12e65c2d
      Yedidya Feldblum authored
      Summary: [Folly] Ensure sleep duration in logging `RateLimiter` test to make sure that there is no chance of waking up from the sleep too early.
      
      Reviewed By: Orvid
      
      Differential Revision: D8330018
      
      fbshipit-source-id: f1222e1da50f8360267f9e1c5e0f24897b7b8f47
      12e65c2d
    • Nathan Bronson's avatar
      clang-format in preparation for changes · 51196c8d
      Nathan Bronson authored
      Reviewed By: shixiao
      
      Differential Revision: D8333485
      
      fbshipit-source-id: 02f74700272b663474c2f02535265ffb6f4bcd22
      51196c8d
    • Marshall Cline's avatar
      add method-level contracts to SemiFuture & Future · 9d6a5522
      Marshall Cline authored
      Summary:
      method-level contracts
      
      (Note: this ignores all push blocking failures!)
      
      Reviewed By: yfeldblum
      
      Differential Revision: D8132350
      
      fbshipit-source-id: d79b1d88a38ea97de8d0e841e822805aff3959ae
      9d6a5522
    • Saif Hasan's avatar
      Fix oss build · 71bfdd3e
      Saif Hasan authored
      Summary:
      fbthrift needs to link against newer version of krb5 library to avoid linking
      issue during OpenR build.
      
      ```
      libsecurity.so: undefined reference to `error_message(long)'
      ```
      
      Reviewed By: yfeldblum
      
      Differential Revision: D8330387
      
      fbshipit-source-id: 34f3f7361c99bb38adf558a52ef05e9d3156640d
      71bfdd3e
    • Tingzhe Zhou's avatar
      FlatCombiningPriorityQueue: Add interface · 12342f02
      Tingzhe Zhou authored
      Summary:
      Make the interface consistent with the other queue algorithms.
      push
      try_push
      try_push_for
      try_push_until
      pop
      try_pop
      try_pop_for
      try_pop_until
      peek
      try_peek
      try_peek_for
      try_peek_until
      
      Reviewed By: yfeldblum, djwatson
      
      Differential Revision: D8262170
      
      fbshipit-source-id: 0299e947a0069eacafd1315c920ec6e1b36675f3
      12342f02
    • Andrii Grynenko's avatar
      Implement weak reference for DefaultKeepAliveExecutor · 2825daef
      Andrii Grynenko authored
      Summary: Weak reference can be used if it's ok for some tasks to be dropped when Executor is destroyed.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D8309958
      
      fbshipit-source-id: 8ecc86a8be181a9eb695aa12305b2a30b6f4b60e
      2825daef
    • Michael Park's avatar
      Added `SemiFuture::within` · bba17c09
      Michael Park authored
      Summary:
      Moved `Future::within` to `FutureBase::withinImplementation`, and changed it to return a `SemiFuture`.
      `SemiFuture::within` uses it directly, and `Future::within` uses it then attaches the current executor or falls back to the inline executor to preserve existing behavior.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D8269907
      
      fbshipit-source-id: 76e235a2ecb2c648603961d0ac0ac17bf646d027
      bba17c09
  6. 07 Jun, 2018 3 commits
    • Yedidya Feldblum's avatar
      Support self-copy in small_vector · a1dd1ce6
      Yedidya Feldblum authored
      Summary:
      [Folly] Support self-copy in `small_vector`.
      
      And refactor move-assignment to look like the fixed copy-assignment for symmetry.
      
      Reviewed By: Ahmed-Salama
      
      Differential Revision: D8321122
      
      fbshipit-source-id: 2c8b26ad6c4e538266082df29276b827cf4505fc
      a1dd1ce6
    • Xiao Shi's avatar
      EASY: fix small bug in fallback F14 visitAllocationClasses · e1df88af
      Xiao Shi authored
      Summary: When vector intrinsics are not available, `visitAllocationClasses` fails to compile as it is a member function of a template class and it invokes a member function of a template base class without explicit `this->`.
      
      Reviewed By: yfeldblum, nbronson
      
      Differential Revision: D8300168
      
      fbshipit-source-id: 1c1619bd1c864535648e531b218d2cf1ffef767b
      e1df88af
    • Alexander Blom's avatar
      Make AsyncSocket spam logs less · 1bc8c91c
      Alexander Blom authored
      Summary:
      VLOG(1) shows up in Android logs, which is annoying as some of our
      tools try to repeatedly connect.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D8297987
      
      fbshipit-source-id: 45cf4320d2e2fcf570117fee6aef133b2d9986e6
      1bc8c91c
  7. 06 Jun, 2018 4 commits
    • Caleb Marchent's avatar
      Look for tags along the master branch checkout out Zstd · 99082ae3
      Caleb Marchent authored
      Summary:
      There is no guarantee that the default branch in git is 'master'; so
          unless specified we checkout a tag along the 'dev' branch, which is not
          intended as it is the master branch that tracks releases for Zstd.
      
      Reviewed By: jstrizich
      
      Differential Revision: D8297843
      
      fbshipit-source-id: 8497dc75c399ae7c86e27b28fdb73898ef4b1a4e
      99082ae3
    • Michael Park's avatar
      Minor comment fix and a couple of typos · f2319a6c
      Michael Park authored
      Summary: `s/Future/SemiFuture/` on `SemiFuture` ctor and fixed typo `s/Timeekeeper/Timekeeper/`.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D8290658
      
      fbshipit-source-id: 99ddbdecc0302e620bd2b4ebce74c6080cf81aec
      f2319a6c
    • Lee Howes's avatar
      Make Future<T>::delayed complete on correct executor 5/n: Add back... · ed88a3a3
      Lee Howes authored
      Make Future<T>::delayed complete on correct executor 5/n: Add back Future::delayed with correct behaviour
      
      Summary:
      Overall plan to modify Future<T>::delayed to complete on the same
      executor as the input future.
      
      [folly::Futures] Make Future<T>::delayed complete on correct executor 5/n:
       * Add back future::delayed.
       * Have Future::delayed complete on input executor.
       * r-value qualify Future::delayed
      
      Reviewed By: yfeldblum, marshallcline
      
      Differential Revision: D8238220
      
      fbshipit-source-id: 79afa8cc9a9fe588609ad186ad62f714ee322f7d
      ed88a3a3
    • Yedidya Feldblum's avatar
      Let Sychronized move-constructor not lock the source · 36502346
      Yedidya Feldblum authored
      Summary: [Folly] Let `Sychronized` move-constructor not lock the source object, since it is an rvalue-reference and the move-constructor code may therefore be assumed to have the only live reference to the source. Same with the move-assignment operator.
      
      Reviewed By: aary
      
      Differential Revision: D8219883
      
      fbshipit-source-id: f62ff87197ac4b9ceed290a73a05062ab8ed45c4
      36502346
  8. 05 Jun, 2018 5 commits
    • Felix Handte's avatar
      Init on First Use and Retain LZ4F Contexts · 8acd0060
      Felix Handte authored
      Summary:
      Reusing a context can provide significant efficiency benefits.
      
      Depends on D8172871.
      
      Reviewed By: yfeldblum, terrelln
      
      Differential Revision: D8287767
      
      fbshipit-source-id: 2565e7a959b2ac0911f0a4d6e1596f9da6d12ee8
      8acd0060
    • Felix Handte's avatar
      Init on First Use and Retain LZ4 Contexts · 5b5e8e88
      Felix Handte authored
      Summary:
      Reusing a context can provide significant efficiency benefits.
      
      Depends on D8172801.
      
      Reviewed By: yfeldblum, terrelln
      
      Differential Revision: D8172871
      
      fbshipit-source-id: f92c85410a35643502d28922583ee0ed0b4386c9
      5b5e8e88
    • Neel Goyal's avatar
      Clear errors when reading pems · f1e3312e
      Neel Goyal authored
      Summary: Clear/read OpenSSL errors after certain ops.
      
      Reviewed By: mingtaoy
      
      Differential Revision: D8277088
      
      fbshipit-source-id: aa436657c3bca3a081cd56858e09da57a03cda05
      f1e3312e
    • Dan Melnic's avatar
      Use static FOLLY_TLS ThreadEntry to avoid an ASAN deadlock due to new after fork · da72e6e9
      Dan Melnic authored
      Summary: Use static FOLLY_TLS ThreadEntry to avoid an ASAN deadlock due to new after fork
      
      Reviewed By: philippv
      
      Differential Revision: D8272580
      
      fbshipit-source-id: e2dc069e81d15f14be9f96a26d30de7482ced0cf
      da72e6e9
    • Sergey Zhupanov's avatar
      Drop the dependency on boost algorithm for Uri. · 79bd4f82
      Sergey Zhupanov authored
      Summary: Replaced boost::algorithm::to_lower() with std::transform()
      
      Reviewed By: yfeldblum
      
      Differential Revision: D8264760
      
      fbshipit-source-id: f6faa46c0bbced3a08c02b93eacbb58eb6927890
      79bd4f82
  9. 04 Jun, 2018 4 commits
    • Nick Terrell's avatar
      Fix support for zstd-1.3.[23] · 5b2c689c
      Nick Terrell authored
      Summary:
      * One function needed renaming
      * One bug needed to be worked around (content size defaulting to 0)
      
      Reviewed By: yfeldblum
      
      Differential Revision: D8264565
      
      fbshipit-source-id: 1abe5fb79b525108e64857dc28d5582372fcc165
      5b2c689c
    • Phil Willoughby's avatar
      rlock() should work with const input · 4a20bbed
      Phil Willoughby authored
      Summary: The instance method is permitted on `const` objects, so the ADL method should also accept a `const&` input.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D8240295
      
      fbshipit-source-id: 960aa5567afea3f52b91c1b83566820f5ecefc4d
      4a20bbed
    • Daniel Xu's avatar
      Use coarse_steady_clock instead of steady_clock · 57ebbcd1
      Daniel Xu authored
      Summary:
      IntervalRateLimiter was already operating on millisecond
      granularity. coarse_steady_clock offers better performance because
      it's on millisecond granularity.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D8245042
      
      fbshipit-source-id: 7ce0e347c0498ff2741adc727577c3bb2ce63979
      57ebbcd1
    • Dan Melnic's avatar
      Iterate only through the threads that have in use entries - v2 · 0865b933
      Dan Melnic authored
      Summary: Iterate only through the threads that have in use entries - v2
      
      Reviewed By: djwatson
      
      Differential Revision: D8143429
      
      fbshipit-source-id: 51098ff8e1fef7aaf9f1c0f2ddbf7ebb579cbeb4
      0865b933