- 06 Oct, 2017 5 commits
-
-
Stiopa Koltsov authored
Summary: Document that `future.then()` is identical to `future.unit()`. Put functions next to each other to make it clear, and use identical wording. Reviewed By: yfeldblum Differential Revision: D5955451 fbshipit-source-id: 1b55d5785dc0995d4d9364f48241e98ad01b31f4
-
Yedidya Feldblum authored
Summary: [Folly] Remove `Executor::addPtr`. It was there to support passing non-copyable callable objects wrapped as `std::shared_ptr`. It is no longer useful since we have `Function`, which is a non-copyable version of `std::function` which can support capturing non-copyable objects, and it is generally unused. Reviewed By: spacedentist Differential Revision: D5983801 fbshipit-source-id: b49a86f8dd7e5250a097b0e714a1bdf9ac362916
-
Jun Qu authored
Summary: I recently got a gcc crash when using `ConcurrentHashMap` Reviewed By: djwatson Differential Revision: D5994587 fbshipit-source-id: 412d48aa6da12c428bb9ab5ed7a317d89c9580b9
-
Valeriy Khromov authored
Summary: Add `SocketAddress::makeFromPath(StringPiece)` static member function to constructor `SocketAddress` from a path to Unix domain socket. Reviewed By: yfeldblum Differential Revision: D5974523 fbshipit-source-id: b5c1537e67d07d1ef401fea75e35753392eeaf6b
-
Yedidya Feldblum authored
Summary: [Folly] Use fewer keep-alives in `VirtualEventBase::keepAliveRelease`. {D5982132} mistakenly used `VirtualEventBase::add`, which holds a keep-alive on the master `EventBase`, instead of calling `EventBase::add` directly. (Note: this ignores all push blocking failures!) Reviewed By: andriigrynenko Differential Revision: D5992403 fbshipit-source-id: f427025c06f01e6a93d6eae8a051c3553f58be20
-
- 05 Oct, 2017 4 commits
-
-
Yedidya Feldblum authored
Summary: [Folly] Make `keepAliveRelease` consistent between `EventBase` and `VirtualEventBase`. Reviewed By: elsteveogrande Differential Revision: D5982132 fbshipit-source-id: 536d48e5672567e78786691bfb283c34d1f31960
-
Yedidya Feldblum authored
Summary: [Folly] Move `GlobalThreadPoolList.h` into `folly/concurrency/`. This seems like a better place than the top-level. It seems reasonable because this has *something* to do with concurrency. This is used by executors, but is not itself an executor, so it was not clear that it should go to `folly/executors/`, although that also seems like quite the reasonable choice. Reviewed By: Orvid Differential Revision: D5985142 fbshipit-source-id: 6117d133757af74023d6cffb838741da83d173bd
-
Andre Pinto authored
Summary: Allows calling backlashify on a StringPiece. Reviewed By: yfeldblum Differential Revision: D5930015 fbshipit-source-id: ca14c78d9a90c45781da7229eb5d2f437792b2d1
-
Lee Howes authored
Summary: Offer a clean separation between future as a vocabulary type for crossing library interfaces, and future as a type to manage continuations. The principle is that if we want an API with clean separation of execution it should both return and receive SemiFutures. The returned SemiFuture would only be awaitable, but not continuable. If the caller wants to enqueue a continuation then it is efficiently convertable into a folly::Future by calling .via. This means that an API a) Does not have to take an executor to ensure it returns a valid future. That can be deferred to the caller or the caller's caller/target for true separation. b) The API can ensure that its own executor is not exposed to the caller, while still having a clean API. Obviously if some API wants to allow returning of a continuable future, then it can also provide an executor-taking API. Reviewed By: yfeldblum Differential Revision: D5769284 fbshipit-source-id: 46241d1274bf7b1698a7d28a47cff2a65a983740
-
- 04 Oct, 2017 4 commits
-
-
Eric Niebler authored
Summary: Exception types should have default visibility, otherwise RTTI doesn't work right. Reviewed By: elsteveogrande Differential Revision: D5976415 fbshipit-source-id: 45dcfe3476b513aa49a6f78352318f31d381ada7
-
Yedidya Feldblum authored
Summary: [Folly] Move keepalive-acquire code into `Executor::keepAliveAcquire` overrides. This makes the API more symmetric and allows for more flexibility. Also serves as preparation for generalizing the keepalive-token interface. Reviewed By: andriigrynenko Differential Revision: D5974080 fbshipit-source-id: 26209e49a0f5834ba229d4bbfc9272c2e4ffb3fd
-
Tom Jackson authored
Summary: I couldn't find anything that consumes `--json` output, so I made this. It prints out benchmark results from two runs, comparing each benchmark to its corresponding baseline. This should help with benchmarking changes across revisions. Along the way: - Two small transparent `struct`s replaces the use of `tuple`s everywhere. - New output JSON format (additive), formatted as array of arrays so order is preserved. - New comparison binary in `folly/tools/benchmark_compare` Sample output: {P58307694} Reviewed By: yfeldblum Differential Revision: D5908017 fbshipit-source-id: d7411e22b459db16bd897f656e48ea4e896cb1bf
-
Yedidya Feldblum authored
Summary: [Folly] Let keep-alive tokens from `VirtualEventBase` be destroyed from any thread. This case was missed in {D5951397} (facebook/folly@6f3b7616f3402355441c62ca60a36159435aa818). Reviewed By: andriigrynenko Differential Revision: D5970670 fbshipit-source-id: 19e2b00134516e68113234acd6111e21c3e23e8d
-
- 03 Oct, 2017 3 commits
-
-
Maged Michael authored
Summary: The previous change can lead to deadlock. Backing out. Reviewed By: djwatson Differential Revision: D5957084 fbshipit-source-id: 72ea1cb6236367912b4b087da7e4d57f8a2daed0
-
Maged Michael authored
Summary: Three fixes: (1) The compiler reports UB in line 432 for the case M > HAZPTR_TC_SIZE even though it is executed only if M <= HAZPTR_TC_SIZE. Added a condition M <= HAZPTR_TC_SIZE to help the compiler determine that line 432 is not executed in that case. (2) Added missing management of empty state in hazptr_array move operator (3) Added nullptr argument to empty hazptr_array in Array test Reviewed By: djwatson Differential Revision: D5951283 fbshipit-source-id: cb8e61421ab06c7733f67bf2d2274d3311260ac4
-
Yedidya Feldblum authored
Summary: [Folly] Let keep-alive tokens be destroyed from any thread. Reviewed By: andriigrynenko Differential Revision: D5951397 fbshipit-source-id: 91e72588de4ef33a730ebef5770e77635d4e93ba
-
- 02 Oct, 2017 2 commits
-
-
Igor Sugak authored
Summary: ```lang=cpp folly/test/stl_tests/StlVectorTest.cpp:1975:11: error: parentheses were disambiguated as redundant parentheses around declaration of variable named 'm' [-Werror,-Wvexing-parse] Vector(m); ^~~ folly/test/stl_tests/StlVectorTest.cpp:1975:11: note: add a variable name to declare a 'Vector' initialized with 'm' Vector(m); ^ varname folly/test/stl_tests/StlVectorTest.cpp:1975:5: note: add enclosing parentheses to perform a function-style cast Vector(m); ^ ( ) folly/test/stl_tests/StlVectorTest.cpp:1975:11: note: remove parentheses to silence this warning Vector(m); ^ ~ 1 error generated. ``` Reviewed By: Gownta Differential Revision: D5955613 fbshipit-source-id: 3015570ce111603b3561914d07b55365a221c686
-
Yedidya Feldblum authored
Summary: [Folly] Move `Merge.h` into `folly/algorithm/`. Reviewed By: Orvid Differential Revision: D5951346 fbshipit-source-id: 487203e55e2a44888e599ca22849798154e5b386
-
- 01 Oct, 2017 1 commit
-
-
Maged Michael authored
Summary: Changes: - Added hazptr_local<M> for optimized management of local hazptr_holder-s. - Added hazptr_array<M> for optimized management of hazptr_holder-s - Added benchmarks for hazptr_local and hazptr_array - Added tests for hazptr_local and hazptr_array - Changed SWMRList example to use hazptr_local<2> instead of two hazptr_holder-s. - Updated benchmark performance results. Reviewed By: davidtgoldblatt Differential Revision: D5833721 fbshipit-source-id: 154811f67c38abac7342cecb71f829778ccf76b2
-
- 29 Sep, 2017 2 commits
-
-
Felix Handte authored
Summary: As title. No sense adding a timeout to the timeout manager when the future is already complete. Reviewed By: yfeldblum Differential Revision: D5933144 fbshipit-source-id: 4d1bbd866c47ccee6bd0518cbe063afc1d34cbca
-
Igor Sugak authored
Summary: This is deprecated and not used. Reviewed By: yfeldblum Differential Revision: D5936286 fbshipit-source-id: 68f757be06ebe375e14db008d0e5828fad0c3aa5
-
- 27 Sep, 2017 2 commits
-
-
Kyle Nekritz authored
Summary: To be used to signal that data that was sent as TLS 1.3 early data was lost. This needs its own exception type as it requires special handling (ie it should usually be retried immediately). Reviewed By: siyengar Differential Revision: D5869914 fbshipit-source-id: ca0d8ef19cb991e9d6ffe0f8c99abfb03b748ce6
-
Mohamed Amin JABRI authored
Summary: On MacOS compiling unittests with "make chek" shows the following compile error: ``` ../futures/test/RetryingTest.cpp:168:26: error: no matching function for call to 'min' newMemLimit.rlim_cur = std::min(1UL << 30, oldMemLimit.rlim_max); ``` Closes https://github.com/facebook/folly/pull/680 Reviewed By: elsteveogrande Differential Revision: D5921433 Pulled By: yfeldblum fbshipit-source-id: 236d8336f852750a983c2e268db8811d1a4ed9ee
-
- 26 Sep, 2017 1 commit
-
-
Michael Lee authored
Summary: Objective-C blocks are stack allocated, and unless there is a proper assignment it isn't retained and the memory is freed. Because folly::Function used to move, it would hold a reference, but after switch to a constructor by-value, it no longer does this and we see a use-after-free. Reviewed By: yfeldblum, ericniebler Differential Revision: D5888606 fbshipit-source-id: fe4cabb2f2ae289cce0e7429e0af3935ba314720
-
- 24 Sep, 2017 1 commit
-
-
Yedidya Feldblum authored
Summary: [Folly] Let `ProcessReturnCode` be publicly constructible. Via provided constructor functions, which limit how it may be constructed so that it is only constructible into a valid state. Differential Revision: D5898739 fbshipit-source-id: 7490018adfc39408b4290248ef1220e8fd0238cb
-
- 23 Sep, 2017 2 commits
-
-
Yedidya Feldblum authored
Summary: [Folly] Avoid tautological compare in `folly/experimental/symbolizer/`. `x < 0` when `x` is unsigned is tautological and there are warnings against such comparisons. The underlying type of an unscoped enumerations without a fixed underlying type is not specified, and whether it is signed is also not specified; it could be unsigned, and is unsigned in practice in common cases. Reviewed By: Orvid, eduardo-elizondo Differential Revision: D5897792 fbshipit-source-id: 24d84f9bf2c61c907585e1b675c2bbf11ef1720b
-
Matthew Tolton authored
Summary: If a lock is stolen from fiber f1, and then fiber f2 is notified before f1 one wakes up and discovers the crime, then f1 will clear notifiedFiber_ so that f2 thinks the lock was stolen from it as well and hence recurses back into lock(). Reviewed By: andriigrynenko Differential Revision: D5896323 fbshipit-source-id: 528ec1ed983175d3e08f3dc07b69bbc783a86cfb
-
- 22 Sep, 2017 1 commit
-
-
Nathan Bronson authored
Summary: folly/test/stl_tests/StlVectorTest.cpp was too slow under mode/dev-asan, resulting in timeouts, and the relinquish test allocated with malloc and freed with operator delete. This diff reduces the vector size for testing under ASAN, and fixes the allocation mismatch. Reviewed By: Orvid Differential Revision: D5890969 fbshipit-source-id: 49a9498f6c0c4b3c7165906efd1262e518fea810
-
- 21 Sep, 2017 1 commit
-
-
Kyle Nekritz authored
Summary: This is more convenient to use (for example with an IOBufEqual matcher). Reviewed By: yfeldblum Differential Revision: D5882029 fbshipit-source-id: 6aa12f80479f40bcc2af64dc270fb0a9382983b5
-
- 20 Sep, 2017 1 commit
-
-
Kenny Yu authored
Summary: This adds a gdb deadlock detector script into a new directory in folly. I chose to put it under the `experimental` directory and not the top-level directory as we have only tested these scripts on x86_64 Linux and not other types of platforms. This diff includes: - a README on the contents of this directory and how to use the scripts - a script to detect deadlocks gdb directory --------------- This new directory will contain a collection of gdb scripts that we have found helpful. These scripts use the [gdb extension Python API](https://sourceware.org/gdb/current/onlinedocs/gdb/Python.html#Python). To run the scripts, fire up gdb and load a script with `source -v`. Example: ``` $ gdb -p 123456 (gdb) source -v ./folly/experimental/gdb/deadlock.py Type "deadlock" to detect deadlocks. (gdb) deadlock Found deadlock! ... ``` deadlock detector script ---------------------------- Consider the following program that always deadlocks: ``` void deadlock3() { std::mutex m1, m2, m3; folly::Baton<> b1, b2, b3; auto t1 = std::thread([&m1, &m2, &b1, &b2] { std::lock_guard<std::mutex> g1(m1); b1.post(); b2.wait(); std::lock_guard<std::mutex> g2(m2); }); auto t2 = std::thread([&m3, &m2, &b3, &b2] { std::lock_guard<std::mutex> g2(m2); b2.post(); b3.wait(); std::lock_guard<std::mutex> g3(m3); }); auto t3 = std::thread([&m3, &m1, &b3, &b1] { std::lock_guard<std::mutex> g3(m3); b3.post(); b1.wait(); std::lock_guard<std::mutex> g1(m1); }); t1.join(); t2.join(); t3.join(); } ``` Once the process has deadlocked, we can use gdb to find the threads and mutexes involved in the deadlock: ``` $ gdb -p 2174496 (gdb) source -v ./folly/experimental/gdb/deadlock.py Type "deadlock" to detect deadlocks. (gdb) deadlock Found deadlock! Thread 2 (LWP 2174497) is waiting on mutex (0x00007ffcff42a4c0) held by Thread 3 (LWP 2174498) Thread 3 (LWP 2174498) is waiting on mutex (0x00007ffcff42a4f0) held by Thread 4 (LWP 2174499) Thread 4 (LWP 2174499) is waiting on mutex (0x00007ffcff42a490) held by Thread 2 (LWP 2174497) ``` Reviewed By: yfeldblum Differential Revision: D5860868 fbshipit-source-id: 020a32327a79bb066269fe08113695803ce06c7d
-
- 19 Sep, 2017 4 commits
-
-
Phil Willoughby authored
Summary: We didn't previously benchmark the performance of `get()`, which was a strange omission. Reviewed By: akrieger Differential Revision: D5863567 fbshipit-source-id: 468b249da9120fcb84f3303ac5e2157761b6369d
-
Christopher Dykes authored
Summary: Only for clang for the moment, as more work is needed for GCC. MSVC builds have always had unused variable warnings enabled, I just hadn't gotten around to cleaning up all of the tests for it to be able to enable it. Reviewed By: yfeldblum Differential Revision: D5827840 fbshipit-source-id: ab503b5791fcc58d685b8327179b810880c5dea7
-
Christopher Dykes authored
Summary: It was horribly broken in multiple ways. It didn't support input > 4gb on Windows, was truncating the entire table to chars, and simply couldn't be compiled because it was exceeding MSVC's max macro instantion depth of 255. Reviewed By: yfeldblum Differential Revision: D5827332 fbshipit-source-id: b08268c88db10c607b27231689b3ee3ec7553c1f
-
Christopher Dykes authored
Summary: This makes it now both work, and compile, on Windows. Reviewed By: yfeldblum Differential Revision: D5811100 fbshipit-source-id: 5d6bfc04ed8e60417615da15bd197769e0c79c11
-
- 18 Sep, 2017 1 commit
-
-
Eric Niebler authored
fix strange recursive std::is_constructible instantiation involving the Function converting constructor Summary: In rare and obscure cases, the fact that `folly::Function`'s perfectly-forwarding, implicit converting constructor was SFINAE-ing on the argument's constructibility was causing a recursive template instantiation of std::is_constructible. Switch to passing the argument by value to avoid the need to test for constructibility. Reviewed By: yfeldblum Differential Revision: D5847034 fbshipit-source-id: ce2ad1d2490206c6cae84c17544bd9fcd6ff47bb
-
- 15 Sep, 2017 4 commits
-
-
Eric Niebler authored
Summary: Coroutines are only available on MSVC when the /await compiler switch was passed, in which case the `_RESUMABLE_FUNCTIONS_SUPPORTED` macro is defined. Reviewed By: Orvid Differential Revision: D5837303 fbshipit-source-id: af3349646e8875e3eac1bc3bbf47203f41f0bbde
-
Dylan Yudaken authored
Summary: await_resume is only called once, so this allows it to move the value out. At the same time remove a redundant clear (but keep the existing requirement that the promise type is an OptionalPromise), and clean up the tests. Also add a test to make sure the coroutine is cleaned up Reviewed By: ericniebler Differential Revision: D5834861 fbshipit-source-id: 7ad487e818969cdf6fe27c9e82931aa247daf4e4
-
Stella Lau authored
Summary: getAutoUncompressionCodec() currently only allows unambiguous headers. Allow a single "terminal codec" to be called if all other codecs can't uncompress or throw. Reviewed By: terrelln Differential Revision: D5804833 fbshipit-source-id: 057cb6e13a48fea20508d5c028234afddf7435f6
-
Pádraig Brady authored
Summary: LTO has better optimization which results in the malloc() being optimized away in this function. Note we don't use folly::dontOptimizeAway() because that introduces a circular dependency between the malloc and benchmark targets. Reviewed By: marksantaniello, meyering, interwq Differential Revision: D5840883 fbshipit-source-id: 5dd9b152f70b7a49f125b6d79b4dfa40f4cdac59
-
- 14 Sep, 2017 1 commit
-
-
Martin Martin authored
Summary: NoHeap small_vector's no longer require a move constructor. Also changes const -> constexpr in a bunch of places. Reviewed By: nbronson Differential Revision: D5804361 fbshipit-source-id: 0f00fee6d318fa9296612409805d4ffcfbadb974
-