1. 30 Jul, 2018 1 commit
  2. 29 Jul, 2018 2 commits
  3. 28 Jul, 2018 1 commit
    • Phil Willoughby's avatar
      thread safe errno->string · 5ae9ed9e
      Phil Willoughby authored
      Summary: `strerror` isn't thread safe, `folly::errnoStr` is.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D9036249
      
      fbshipit-source-id: da4ad1089f4319e62b0273ec12b4950624105a77
      5ae9ed9e
  4. 27 Jul, 2018 3 commits
    • Yedidya Feldblum's avatar
      Fix fbvector::swap impl · c3440ba2
      Yedidya Feldblum authored
      Summary:
      [Folly] Fix `fbvector::swap` impl to do proper ADL.
      
      Instead of passing template parameters, cast the arguments. That way non-template `swap` overloads can also be found.
      
      Reviewed By: Gownta
      
      Differential Revision: D9026136
      
      fbshipit-source-id: 29240fed1c90d3556c2476917a21cbe1949c9a3c
      c3440ba2
    • Mahesh Maddikayala's avatar
      fix travis build failure for 'sigar' package · 7acadf6e
      Mahesh Maddikayala authored
      Summary: Added option to send parameters to 'configure' script from fbcode builder
      
      Reviewed By: jstrizich
      
      Differential Revision: D9004547
      
      fbshipit-source-id: da54fa2dd453aab29051f37106423807a260535a
      7acadf6e
    • Yedidya Feldblum's avatar
      Tweaks to Futures after D9015012 · ff3c5f9c
      Yedidya Feldblum authored
      Summary:
      [Folly] Tweaks to Futures after {D9015012}.
      
      * Publish base-class methods with `using`.
      * Use trailing-comma in list initializers.
      
      Reviewed By: shixiao
      
      Differential Revision: D9024885
      
      fbshipit-source-id: d1e548630152a7d7ce892084daef24a4e62dd0df
      ff3c5f9c
  5. 26 Jul, 2018 7 commits
    • Pedro Eugenio Rocha Pedreira's avatar
      Propagate executor priority through FutureSplitter · a31665e0
      Pedro Eugenio Rocha Pedreira authored
      Summary:
      The futures created by FutureSplitter don't carry the orginal future's
      executor priority, what makes it hard to guarantee that certain operations
      based on a future chain run on a determined executor priority.
      
      Reviewed By: WillerZ
      
      Differential Revision: D9015012
      
      fbshipit-source-id: 96b7e7ccb33583105f96d2170eeb159493b93ed0
      a31665e0
    • Dave Watson's avatar
      Switch to radix sort for DigestBuilder · 44cad810
      Dave Watson authored
      Summary: Radix sort (as implemented by boost's spreadsort) is 2x faster than std::sort.
      
      Reviewed By: nbronson
      
      Differential Revision: D8875766
      
      fbshipit-source-id: d88a323e6c14d58f0820c2d6d8c3d578c1305482
      44cad810
    • Alexander Kindyakov's avatar
      Fix up error in generic definition of folly::swap · b0eb4087
      Alexander Kindyakov authored
      Summary:
      - Fix up wrong order of template arguments in Expected generic
        - Create tests to check up all 3 forms of swap for Expected
      
      Reviewed By: ericniebler
      
      Differential Revision: D9013316
      
      fbshipit-source-id: d4cebd83b268a4c5c551ac970f67b598f117fa73
      b0eb4087
    • Xiao Shi's avatar
      add implicit constructor for `vector<bool>::const_reference` for libcpp · b9d2332c
      Xiao Shi authored
      Summary:
      Despite the standard, `std::vector<bool>::const_reference` is not `bool` in
      libcpp: http://howardhinnant.github.io/onvectorbool.html
      
      Add the implicit ctor so that `f(dynamic)` can be invoked with `f(v[idx])`
      where `v` is a `const vector<bool>` under libc++.
      
      Reviewed By: ot
      
      Differential Revision: D8992805
      
      fbshipit-source-id: 0675174c2a247257238bb11b2c7b319653fe92a3
      b9d2332c
    • Matthieu Martin's avatar
      Avoid set/onset calls while shallow copying RequestContext · bd450a65
      Matthieu Martin authored
      Summary:
      Per title
      I found that it was easier to bypass setContext (and not extend RequestContextScopeGuard) to achieve this result.
      
      setShallowCopyContext now directly set the copy as current
      the new unsetShallowCopyContext exclusively calls set/onset for the context data that was overriden. This assumes that cost will be fine because the callbackData_ sets are small or empty.
      Similar reason they were split from requestData_ in the first place, for RequestContextScopeGuard efficiency.
      
      (Note: this ignores all push blocking failures!)
      
      Reviewed By: andriigrynenko
      
      Differential Revision: D8943668
      
      fbshipit-source-id: ad99177429de6b7b65bf95fa0e94334d73c3750d
      bd450a65
    • Matthieu Martin's avatar
      Introduce folly ShallowCopyRequestContextScopeGuard · f63877d7
      Matthieu Martin authored
      Summary:
      This guard maintains all the RequestData pointers of the parent (through shallow copy).
      This allows to overwrite a specific RequestData pointer for the scope's duration, without breaking others.
      
      We decided to keep the raw ptr interface, which required to implement a pseudo shared ptr to achieve the shallow copy behaviour.
      Rest of the code is pretty straight forward. A few more lines than expected, due to introducing overrideContextData to avoid unecessary memory management (clearData) or warnings (setData).
      
      The performance should be neutral for code not using the guard (std::atomic incr/decr).
      The guard itself is pretty efficient at copying the values, though there is a slight worry about the keys (std::string). This might be a generic concern about current implementation, some form of cheap static would be better.
      It also calls unecessarily onSet/onUnset. I will fix on top as it makes the change more complex.
      
      Reviewed By: djwatson
      
      Differential Revision: D8911351
      
      fbshipit-source-id: 1692428382ace1d0b79bbc84a1db50efb4c7b489
      f63877d7
    • Matthieu Martin's avatar
      Revert "Avoid set/onset calls while shallow copying RequestContext" · 4941d624
      Matthieu Martin authored
      Summary: This added significant cost, it will take effort to deploy, reverting for now
      
      Differential Revision: D9007024
      
      fbshipit-source-id: 04074b09a1a2b7f9b57e3d755a2754657dda21c2
      4941d624
  6. 25 Jul, 2018 2 commits
    • Lee Howes's avatar
      Executor-taking and SemiFuture versions of folly::futures::map. · 4d3071a3
      Lee Howes authored
      Summary: Allow map to take a SemiFuture vector by changing the way the return type is deduced. Add overloads that take executor to apply.via and run the mapped tasks on a specified executor, and additionally return a Future that completes on that executor.
      
      Reviewed By: andriigrynenko
      
      Differential Revision: D7559540
      
      fbshipit-source-id: f9480ea89fcfaa25a050ee7428dc69de300ccfde
      4d3071a3
    • Andrii Grynenko's avatar
      Mark toSemiFuture as inline · 41bb0dc1
      Andrii Grynenko authored
      Summary: Non-template functions in header files have to be marked as inline to avoid linker errors.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D8983661
      
      fbshipit-source-id: 8f003e9f4e2d40cb6122da8e9e0adacab00ed0fa
      41bb0dc1
  7. 24 Jul, 2018 7 commits
    • Xiao Shi's avatar
      make conversion explicit in `findLastSet` for longer integral types · 2a7d0faa
      Xiao Shi authored
      Summary:
      When the param type is larger than `unsigned int`, the wider type `size{}` was
      implicitly converted to the return type `unsigned int` in `findLastSet`. This
      diff makes the conversion explicit.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D8971589
      
      fbshipit-source-id: 8828504c462e9296b84a746bcb7f701bc4a7d20e
      2a7d0faa
    • Dan Melnic's avatar
      Make ThreadEntry::elementsCapacity atomic · 83a22fdd
      Dan Melnic authored
      Summary: Make ThreadEntry::elementsCapacity atomic
      
      Reviewed By: yfeldblum
      
      Differential Revision: D8963304
      
      fbshipit-source-id: 0b37bbe97475a400e9b574b8285bde8f38a479f5
      83a22fdd
    • Hugo Cuvillier's avatar
      Make `folly::FixedString` compile with Xcode's toolchain. · acdd0d80
      Hugo Cuvillier authored
      Summary:
      Xcode wasn't impressed when I tried to import `folly::FixedString` from a Objective-C++ context.
      
      This seem to satisfy Xcode's toolchain.
      
      Reviewed By: lambdapioneer
      
      Differential Revision: D8855137
      
      fbshipit-source-id: 7bb3b1039b30241797ec7f3df7c0bbdeffca87bf
      acdd0d80
    • Xiao Shi's avatar
      Use folly Hash to hash strings in dynamic · e7401c7b
      Xiao Shi authored
      Summary:
      There should be no expectations on what hash is internally used in dynamic, so
      we don't need to maintain compatibility with `fbstring`, which hasn't been used
      as string storage in `dynamic` for quite a while.
      
      Reviewed By: yfeldblum, ot
      
      Differential Revision: D8824634
      
      fbshipit-source-id: 6765472aeeacb55c68b058f5dcc128f6b400bc95
      e7401c7b
    • Harsh Poddar's avatar
      Add sync_level option to the logging config · 6b1869e2
      Harsh Poddar authored
      Summary:
      GLOG has `-logbuflevel` option that allows a user to specify the level above which none of the logs should be buffered. This is helpful as we can configure it such that `INFO` and all verbose logs are buffered before being output, but all logs above `INFO` should be flushed synchronously. This will ensure that all logs above a certain level are printed before any sort of crash.
      
      This diff allows a user to specify a config `sync_level`. The value for this can be any `LogLevel`. Example config:
      
        .=WARN,akkio.cli=INFO; default:async=true,sync_level=WARN
      
      The default value for GLOG's -logbuflevel is `0` (`INFO`).
      To match GLOG's behavior, this diff sets the following as defaults:
      
        async=true,sync_level=WARN
      
      Reviewed By: simpkins
      
      Differential Revision: D8867555
      
      fbshipit-source-id: 7ec30dfb41b2f3cd3568d70304db7a9fcf668779
      6b1869e2
    • Harsh Poddar's avatar
      Update default LogLevel to match GLOG · 6a8e5fd0
      Harsh Poddar authored
      Summary: Update default log level for Folly's logging to match that of Google's logging. This will make it easier to migrate between the two.
      
      Reviewed By: simpkins
      
      Differential Revision: D8941725
      
      fbshipit-source-id: 14ed352d9a012f2604ff4329cc7cd038b2c0ee26
      6a8e5fd0
    • Louis Brandy's avatar
      a few include-what-you-use fixes · 0a69d138
      Louis Brandy authored
      Summary: These headers don't include everything they use so things build now because of rando include orders and transitive inclusion. Breaks when attempting to build with clang modules.
      
      Reviewed By: shixiao
      
      Differential Revision: D8954753
      
      fbshipit-source-id: d222370f17594f5c6aeccd21cbfd61bd8102245a
      0a69d138
  8. 23 Jul, 2018 2 commits
    • Mahesh Maddikayala's avatar
      Add resource monitor object to fbzmq library · 360307fd
      Mahesh Maddikayala authored
      Summary:
      Add resource monitor object to fbzmq library to monitor CPU and memory. User can use
      the object to query RSS memory, cpu usage, and optionally call API to monitor memory periodicially
       and crash when reaches beyond a specified threshold limit.
      
      Reviewed By: cenzhao
      
      Differential Revision: D8873504
      
      fbshipit-source-id: a445fdd580da82c55fba09c43f46f60bb9f1149a
      360307fd
    • Maged Michael's avatar
      ConcurrentHashMap: Try reclaim objects immediately in destructor. · f0a3212d
      Maged Michael authored
      Summary: Destructor unlinks and reclaims nodes immediately without checking hazard pointers.
      
      Reviewed By: djwatson
      
      Differential Revision: D8864161
      
      fbshipit-source-id: 270df5e6b3ef8bc33934b6d55df465309f1068bd
      f0a3212d
  9. 21 Jul, 2018 2 commits
    • Yedidya Feldblum's avatar
      Generic conversion from Range in cases like std::string_view · dbaf54c0
      Yedidya Feldblum authored
      Summary: [Folly] Generic conversion from `Range` in cases like `std::string_view` which are constructible with `Iter, size_type` instead of `Iter, Iter`.
      
      Reviewed By: vitaut
      
      Differential Revision: D8907212
      
      fbshipit-source-id: 6f93581b7185d4d10925aa57175f130dff2576e3
      dbaf54c0
    • Yedidya Feldblum's avatar
      Use traits in Range conversion functions · 667f7df0
      Yedidya Feldblum authored
      Summary:
      [Folly] Use traits in `Range` conversion functions.
      
      Dependent code requires this for msvc2015.
      
      Reviewed By: vitaut
      
      Differential Revision: D8929559
      
      fbshipit-source-id: dbf4afbebdf92ee4eb46067ff443980823cd771d
      667f7df0
  10. 20 Jul, 2018 5 commits
    • Jason Rahman's avatar
      Rename HHWheelTimer::Callback::context_ -> requestContext_ · 98d3bec7
      Jason Rahman authored
      Summary: HHWheelTimer::Callback is frequently used as a base class for callback objects, while context_ is a commonly desired member name in other classes that also serve as base classes for HHWheelTimer::Callback derived classes. Renaming in HHWheelTimer::Callback to free up availability of context_.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D8937020
      
      fbshipit-source-id: 8a4612bc57f28673762604cc118a91a347e5972d
      98d3bec7
    • Matthieu Martin's avatar
      Revert Folly NestedRequestContextGuard · 20eea8f0
      Matthieu Martin authored
      Summary:
      This attempted to provide a deep copy guard for folly request context.
      
      Per brainstorming (see task), we don't think that deep copying all metadata has legitimate use cases. And in fact, this has no usage in our codebase currently. Because it default to reset (when createChild is not overriden), the behaviour is also very confusing.
      
      Guards's goal is usually to copy 1 metadata. The solution for that is to provide a shallow copy guard. Something that I will do on top of this revert.
      I'll wait for both changes to be discussed and accepted before landing this one.
      
      Reviewed By: yfeldblum, LeeHowes
      
      Differential Revision: D8906912
      
      fbshipit-source-id: e8b9eed04cbe539009037ff75d51e28941502d88
      20eea8f0
    • Matthieu Martin's avatar
      Fix set/unset for default folly RequestContext · dec334ce
      Matthieu Martin authored
      Summary:
      My guess is that if we allow to set data in the default context, we also expect set/unset to work.
      It currently doesn't. This fixes it (at least, the test repro passes), but not sure it's the right fix.
      
      Reviewed By: djwatson
      
      Differential Revision: D8910506
      
      fbshipit-source-id: cedf1dd0ee91761d210137949da7477ed69fce31
      dec334ce
    • Yedidya Feldblum's avatar
      Comments to document explicit conversions from Range · 09c55d0a
      Yedidya Feldblum authored
      Summary: [Folly] Comments to document explicit conversions from `Range`.
      
      Reviewed By: terrelln
      
      Differential Revision: D8921990
      
      fbshipit-source-id: 0728e0096738f9a86eecfaa5b05d4dfbcb0533b6
      09c55d0a
    • Yedidya Feldblum's avatar
      Cut non-const conversion overloads from Range · b5f590c2
      Yedidya Feldblum authored
      Summary: [Folly] Cut non-`const` conversion overloads from `Range`, for both `operator T` and `to<T>`: let them be `const` member functions so that the converted-to object cannot update `Range` internal state.
      
      Reviewed By: terrelln, vitaut
      
      Differential Revision: D8921428
      
      fbshipit-source-id: eefc14b5fe2033cac43ebc274b27bdea95388488
      b5f590c2
  11. 19 Jul, 2018 2 commits
  12. 18 Jul, 2018 6 commits
    • Yang Zhang's avatar
      Add ThreadPoolExecutor::numActiveThreads() · ac6b1e28
      Yang Zhang authored
      Summary: ThreadPoolExecutor could dynamically adjust number of threads according to workload. Add numActiveThreads() so we can check how many active threads are actually there, while numThreads() returns the upper bound of threads.
      
      Reviewed By: djwatson
      
      Differential Revision: D8683795
      
      fbshipit-source-id: 09f3b4ee8570e2f2f9f97e939061693f3e0639af
      ac6b1e28
    • Maged Michael's avatar
      hazptr: Add function to reclaim linked objects without checking hazard pointers. · bc809fb4
      Maged Michael authored
      Summary:
      Add unlink_and_reclaim member function to hazptr_obj_base_linked, as an alternative to unlink() that reclaims the object if its link count is zero without checking hazard pointers.
      It is useful in destructors of data structures when it is guaranteed that objects are not protected by hazard pointers (e,.g., destructor of ConcurrentHashMap).
      
      Reviewed By: yfeldblum
      
      Differential Revision: D8864019
      
      fbshipit-source-id: 618eeded45a1f8b9503569d1ceca9994ca6e317f
      bc809fb4
    • Doron Roberts-Kedes's avatar
      DeterministicSchedule: Deschedule parent threads while they wait to join child threads. · 49a83b77
      Doron Roberts-Kedes authored
      Summary:
      Eliminate while loop behavior in DeterministicSchedule::join
      
      Depends on D8789304
      
      Reviewed By: djwatson
      
      Differential Revision: D8840276
      
      fbshipit-source-id: f0b0db60f7bec344d021a49cec408a2604d4a1c8
      49a83b77
    • Doron Roberts-Kedes's avatar
      DeterministicSchedule: Deschedule threads waiting to acquire DeterministicMutex · 566f0478
      Doron Roberts-Kedes authored
      Summary: Eliminate spinlock behavior from DeterministicMutex::lock by descheduling threads waiting to acquire the mutex, and placing the thread local semaphore in a waitqueue for the mutex. The unlocking thread reschedules a single waiting thread if the workqueue is non empty.
      
      Reviewed By: djwatson
      
      Differential Revision: D8789304
      
      fbshipit-source-id: 8ffe3e289c9abfe7515b678ff98f0cefef2461c0
      566f0478
    • Chad Austin's avatar
      Drain ManualExecutor on destruction · a72a920c
      Chad Austin authored
      Summary:
      For use in tests where the executor has a nontrivial lifetime but any
      queued jobs should be completed, have ManualExecutor drain itself
      before it's destroyed.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D8845457
      
      fbshipit-source-id: 7c2aa65aa27a7850ff73a93cfbe34c2248b62d26
      a72a920c
    • Aaryaman Sagar's avatar
      Remove const wlock acquisition · 37c011d8
      Aaryaman Sagar authored
      Summary:
      Change the write acquire interface to only acquire write locks on non-const
      `Synchronized` instances.  This reflects the intention of mutation associated
      with a write lock.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D8851208
      
      fbshipit-source-id: 5be9d2e4a38d25632430a9b6c981b6e7f8412daa
      37c011d8