Murali Vilayannur [Mon, 30 Oct 2017 05:07:46 +0000 (22:07 -0700)]
Override TemporaryFile's default move constructor
Summary:
A default move constructor/move assignment operator caused a bunch
of bugs in my test that was depending on the move constructor to either
not close the underlying file descriptor or to ensure that the TemporaryFile
object doesn't have a dangling reference to a file descriptor that has already
been closed. The current implementation caused both the moved' from and to
object to share the same underlying file descriptor and when the former object
is destroyed it ends up closing the file descriptor leaving the latter
with a dangling file descriptor which could be reused for some other
socket(s)/file descriptor by the kernel and ends up causing seg-faults
when the latter object is eventually destroyed due to it releasing
a file descriptor that now belongs to some other resource.
I changed the move constructor/move assignment operator
to have the former semantics to not close the underlying file descriptor of
the move'd from object (by releasing it and assigning it to the move'd to
object). I am not sure if anyone would ever want the alternative
semantics because the TemporaryFile object would not be usable
without a valid underlying file descriptor
Reviewed By: yfeldblum
Differential Revision:
D6182075
fbshipit-source-id:
bc809d704449c1c1182d76cdfa2f7d17b38a719a
Yedidya Feldblum [Sun, 29 Oct 2017 20:55:29 +0000 (13:55 -0700)]
CodeMod: Replace includes of folly/Hash.h with folly/hash/Hash.h
Summary: CodeMod: Replace includes of `folly/Hash.h` with `folly/hash/Hash.h`.
Reviewed By: luciang
Differential Revision:
D6156195
fbshipit-source-id:
0941b3c9cf1d17d7cc62595111e506c06ee51236
Yedidya Feldblum [Sun, 29 Oct 2017 10:33:15 +0000 (03:33 -0700)]
Make SysBufferDeleter::operator() inlineable
Summary: [Folly] Make `SysBufferDeleter::operator()` inlineable, specifically, into `SysBufferUniquePtr`.
Reviewed By: luciang
Differential Revision:
D6182999
fbshipit-source-id:
e0409c0019f21ed44d7d4c531ebc11a239f25831
Yedidya Feldblum [Sun, 29 Oct 2017 10:33:14 +0000 (03:33 -0700)]
Move folly/Launder.h
Summary: [Folly] Move `folly/Launder.h` to `folly/lang/`.
Reviewed By: luciang
Differential Revision:
D6182882
fbshipit-source-id:
97e46bd4e4d6f212d8234209ee90a41e7850ecb9
Yedidya Feldblum [Sun, 29 Oct 2017 10:33:10 +0000 (03:33 -0700)]
Move folly/Array.h
Summary: [Folly] Move `folly/Array.h` to `folly/container/`.
Reviewed By: luciang
Differential Revision:
D6182858
fbshipit-source-id:
59340b96058cc6d0c7a0289e316bbde98c15d724
Yedidya Feldblum [Sun, 29 Oct 2017 04:19:52 +0000 (21:19 -0700)]
Move folly/Assume.h
Summary: [Folly] Move `folly/Assume.h` to `folly/lang/`.
Reviewed By: luciang, ot
Differential Revision:
D6181983
fbshipit-source-id:
25564bb07daa1a6765651cd919b4778efb931446
Andrew Krieger [Sat, 28 Oct 2017 20:47:17 +0000 (13:47 -0700)]
Break out BitIterator into its own header
Summary:
BitIterator is a standalone construct that has a heavy boost
dependency, but not common usage. Breaking it out into its own header
will help a lot of transitive dependendencies, because it is included
in Hash.h which is included in a variety of other common headers.
This reduces the number of transitively included headers by 248 (!)
Reviewed By: yfeldblum, ot, luciang
Differential Revision:
D6178564
fbshipit-source-id:
1380154b012615b7b8c73bc15ab0ac62f6b990d3
Yedidya Feldblum [Sat, 28 Oct 2017 18:31:23 +0000 (11:31 -0700)]
Move folly/detail/AtomicUtils.h
Summary: [Folly] Move `folly/detail/AtomicUtils.h` to `folly/synchronization/detail/`.
Reviewed By: Orvid
Differential Revision:
D6180482
fbshipit-source-id:
5671c149a59eea824db2935ffabcf85a2f78b690
Scott Michelson [Sat, 28 Oct 2017 00:33:45 +0000 (17:33 -0700)]
LOG_EVERY_N instead of every time
Summary: when queues fill, this starts blowing up, affecting server performance and making logs useless. It's useful to know queues are full, but we don't need the log every time we try to append
Reviewed By: yfeldblum
Differential Revision:
D6175784
fbshipit-source-id:
b4e6966087c4a6f9fba51d7f9193b9f41e13b899
Yedidya Feldblum [Fri, 27 Oct 2017 04:24:48 +0000 (21:24 -0700)]
Fix FunctionScheduler::resetFunctionTimer concurrency bug
Summary:
[Folly] Fix `FunctionScheduler::resetFunctionTimer` concurrency bug.
The original code from the blamed diff code has a comment with this correct assessment of the bug:
> TODO: This moves out of RepeatFunc object while folly:Function can potentially be executed. This might be unsafe.
Namely, when the method is invoked with the id of a scheduled function which is concurrently being executed, the function object (including, say, lambda captures) will be moved while possibly being accessed. If the function object is small enough to be placed in-situ within `folly::Function` (48 bytes on x64), then that access to a moved-from object can happen. It might or might not, depending on the particular instance of the race in question. Or, worse, the access might be to a half-moved-from object!
The new test case for `resetFunctionTimer` passes after the fix, but is guaranteed to fail before the fix because we manage to control the concurrency enough to force the bad version of the race to happen. In the test, we just capture a `std::shared_ptr` (we could have capatured, e.g., a `std::unique_ptr` or a long-enough `std::string`) and check that it is not empty - if it is moved from, it will be empty, and the test expectation will fail.
Reviewed By: simpkins
Differential Revision:
D6158722
fbshipit-source-id:
33a7ae699bb3b22089fddbebb6d922737668309d
Yedidya Feldblum [Fri, 27 Oct 2017 02:35:23 +0000 (19:35 -0700)]
type_t, a generalization of void_t
Summary: [Folly] `type_t`, a generalization of `void_t`.
Reviewed By: ericniebler
Differential Revision:
D6082913
fbshipit-source-id:
f9557b5da1f6684b12d570b6c1bd52c102cb0703
Christopher Dykes [Thu, 26 Oct 2017 19:15:55 +0000 (12:15 -0700)]
Just use a volatile static in Malloc.h
Summary: As suggested late in the initial diff (
D5840883), just mark it volatile, as it works under all supported platforms.
Reviewed By: davidtgoldblatt, yfeldblum
Differential Revision:
D6155241
fbshipit-source-id:
00c07a11dc7fc2e33c2d1f9a45fd28006eeff6f9
Christopher Dykes [Thu, 26 Oct 2017 19:14:23 +0000 (12:14 -0700)]
Fix build with Windows SDK v10.0.16232
Summary:
It defines `MSG_ERRQUEUE` which breaks things.
There's a github PR to do this in a different way, but it's faster to just do it myself.
Closes https://github.com/facebook/folly/pull/689
Reviewed By: yfeldblum
Differential Revision:
D6155606
fbshipit-source-id:
f1c6b247efc452b4005ad3b6d82fabfd5a92f49f
Dan Melnic [Thu, 26 Oct 2017 15:37:29 +0000 (08:37 -0700)]
Disable zerocopy if we're notified about deferred copies, add a isZeroCopyWriteInProgress method, replace pair with a proper struct
Summary: Add zeroWriteDone callback
Reviewed By: djwatson
Differential Revision:
D6097129
fbshipit-source-id:
b82a942557680c3a7a3be8f81ee6f2886e99e165
Yedidya Feldblum [Thu, 26 Oct 2017 03:27:41 +0000 (20:27 -0700)]
Expected coroutines support
Summary:
[Folly] `Expected` coroutines support.
Copied from `Optional` coroutines support.
Reviewed By: ericniebler, Orvid
Differential Revision:
D5923792
fbshipit-source-id:
8661012c65762a0e540a4af2fd2fc237a8cb87a1
Kenny Yu [Thu, 26 Oct 2017 01:11:02 +0000 (18:11 -0700)]
folly: Fix data race in folly::Codel
Summary:
Data race reported by TSAN:
```
WARNING: ThreadSanitizer: data race (pid=608219)
Read of size 1 at 0x7b5800000c29 by thread T314:
#0 0x60b3441 in folly::Codel::overloaded(std::chrono::duration<long, std::ratio<1l, 1000000000l> >) ./folly/executors/Codel.cpp:76
#1 0x5c1222 in apache::thrift::concurrency::ThreadManager::ImplT<folly::LifoSemImpl<std::atomic, folly::Baton<std::atomic, true, true> > >::Worker<folly::LifoSemImpl<std::atomic, folly::Baton<std::atomic, true, true> > >::run() ./thrift/lib/cpp/concurrency/ThreadManager.tcc:119
#2 0x5d803e7 in apache::thrift::concurrency::PthreadThread::threadMain(void*) ./thrift/lib/cpp/concurrency/PosixThreadFactory.cpp:200
#3 0x619739d in __tsan_thread_start_func crtstuff.c:?
Previous write of size 1 at 0x7b5800000c29 by thread T315:
#0 0x60b33e4 in folly::Codel::overloaded(std::chrono::duration<long, std::ratio<1l, 1000000000l> >) ??:?
#1 0x5c1222 in apache::thrift::concurrency::ThreadManager::ImplT<folly::LifoSemImpl<std::atomic, folly::Baton<std::atomic, true, true> > >::Worker<folly::LifoSemImpl<std::atomic, folly::Baton<std::atomic, true, true> > >::run() ./thrift/lib/cpp/concurrency/ThreadManager.tcc:119
#2 0x5d803e7 in apache::thrift::concurrency::PthreadThread::threadMain(void*) ./thrift/lib/cpp/concurrency/PosixThreadFactory.cpp:200
#3 0x619739d in __tsan_thread_start_func crtstuff.c:?
Location is heap block of size 768 at 0x7b5800000c00 allocated by main thread:
#0 0x616ab83 in operator new(unsigned long) ??:?
#1 0x53cb92 in __gnu_cxx::new_allocator<std::_Sp_counted_ptr_inplace<apache::thrift::concurrency::SimpleThreadManager<folly::LifoSemImpl<std::atomic, folly::Baton<std::atomic, true, true> > >, std::allocator<apache::thrift::concurrency::SimpleThreadManager<folly::LifoSemImpl<std::atomic, folly::Baton<std::atomic, true, true> > > >, (__gnu_cxx::_Lock_policy)2> >::allocate(unsigned long, void const*)
...
```
It looks like there are multiple threads reading and writing the `overloaded_` bool. To fix it, wrap it in a `std::atomic`.
Reviewed By: yfeldblum, meyering
Differential Revision:
D6149766
fbshipit-source-id:
605b29fa2f602d2ed2dfc22e46b739ef169f914e
Luca Niccolini [Wed, 25 Oct 2017 21:28:42 +0000 (14:28 -0700)]
rework reads/writes
Summary:
the current implementation had problems with scheduling reads and writes and
it would sometimes get stuck when transfering large chunks of data
here I am restructuring the code to look more like the one in HTTPSession
session flow control is not implemented yet really, it's coming next
Depends on:
D6048238
Reviewed By: afrind
Differential Revision:
D6048238
fbshipit-source-id:
ae601e771154a7f1a669a58a6e05c9e3720e7017
Marko Novakovic [Wed, 25 Oct 2017 17:15:40 +0000 (10:15 -0700)]
Supply an explicit default dtor impl
Reviewed By: yfeldblum
Differential Revision:
D6142252
fbshipit-source-id:
9ac98585a92299ca5915982c65c7d2cfa68bf60f
Yedidya Feldblum [Wed, 25 Oct 2017 05:05:23 +0000 (22:05 -0700)]
Flesh out Optional members swap, reset, emplace, has_value
Summary:
[Folly] Flesh out `Optional` members `swap`, `reset`, `emplace`, `has_value`.
* `swap` as a member and deriving `noexcept`-ness to mimic `std::optional::swap`.
* `reset` v.s. `clear` to mimic `std::optional::reset`.
* `emplace` returning ref and overload taking initializer list to mimic `std::optional::emplace`.
* `has_value` v.s. `hasValue` to mimic `std::optional::has_value`.
Reviewed By: WillerZ
Differential Revision:
D6132775
fbshipit-source-id:
34c58367b9dc63289e4b9721c5e79b1c41ba31e4
Yedidya Feldblum [Wed, 25 Oct 2017 00:16:58 +0000 (17:16 -0700)]
Simplify IsUniquePtrToSL in IOBuf.h
Summary: [Folly] Simplify `IsUniquePtrToSL` in `IOBuf.h`.
Reviewed By: Orvid
Differential Revision:
D6131231
fbshipit-source-id:
b054ef7ef9f313943a3ac1022ca6a23874a464df
Yedidya Feldblum [Tue, 24 Oct 2017 21:12:03 +0000 (14:12 -0700)]
Move folly/Hash.h to folly/hash/, leaving a shim
Summary: [Folly] Move `folly/Hash.h` to `folly/hash/`, leaving a shim.
Reviewed By: Orvid
Differential Revision:
D6132955
fbshipit-source-id:
dc789e9c6daa28116be6a5d83c3cfbb40e247114
Igor Sugak [Tue, 24 Oct 2017 17:55:58 +0000 (10:55 -0700)]
fix build with asan and static linking
Reviewed By: meyering
Differential Revision:
D6117783
fbshipit-source-id:
048b056e119bf89ab88c33b1233297d197e8acb9
Christopher Dykes [Tue, 24 Oct 2017 02:26:29 +0000 (19:26 -0700)]
Prefer bool literals rather than integers in boolean contexts
Summary: Via clang-tidy's modernize-use-bool-literals
Reviewed By: yfeldblum
Differential Revision:
D6130384
fbshipit-source-id:
359d5195897f04612c9b9042cf69383050a2ec7a
Christopher Dykes [Tue, 24 Oct 2017 00:34:54 +0000 (17:34 -0700)]
Consistently have the namespace closing comment
Summary: It's done in a lot of places, but not all. clang-tidy gives us llvm-namespace-comment, which can force this consistently.
Reviewed By: yfeldblum
Differential Revision:
D6108129
fbshipit-source-id:
1b44c5a26250364f9edf70f84173e9ba6389f06c
Christopher Dykes [Mon, 23 Oct 2017 23:52:19 +0000 (16:52 -0700)]
Modernize uses of std::make_shared
Summary: Via the modernize-make-shared from clang-tidy
Reviewed By: yfeldblum
Differential Revision:
D6129464
fbshipit-source-id:
04f560c6beeb2b8631b819fd4e6a2d51b37eeb4b
Lee Howes [Mon, 23 Oct 2017 20:36:48 +0000 (13:36 -0700)]
Add a full drain for folly's ManualExecutor.
Summary: ManualExecutor::run() is stable, which means that in cases where we want to fully drain the executor we have to loop over it. This adds ManualExecutor::drain() which does that internally.
Reviewed By: yfeldblum
Differential Revision:
D6126840
fbshipit-source-id:
e36cba5c373a57fe01de244977ec852636b58dbd
James Sedgwick [Mon, 23 Oct 2017 19:19:27 +0000 (12:19 -0700)]
move Iterator, Enumerate, EvictingCacheMap, Foreach, Merge, and
Summary: this is all non-hphp includes that are going in container/
Reviewed By: mzlee, yfeldblum
Differential Revision:
D6121745
fbshipit-source-id:
b024bde8835fc7f332686793d75eb8e71591c912
Qi Wang [Mon, 23 Oct 2017 19:09:40 +0000 (12:09 -0700)]
MemoryIdler: use mallctl directly for tcache.flush
Summary:
tcache.flush may fail if tcache is disabled. Avoid using mallctlCall
which throws on error.
Reviewed By: davidtgoldblatt
Differential Revision:
D6115419
fbshipit-source-id:
39411c80af08dc7c855efd43297809b749f935bf
Christopher Dykes [Mon, 23 Oct 2017 18:49:39 +0000 (11:49 -0700)]
Modernize use of std::make_unique
Summary: Via the clang-tidy check modernize-make-unique.
Reviewed By: yfeldblum
Differential Revision:
D6107790
fbshipit-source-id:
1cf186feae511cbd91f44893059737a85778b6cf
Jon Maltiel Swenson [Mon, 23 Oct 2017 17:16:53 +0000 (10:16 -0700)]
Rename unique_lock variables in `TimedMutex` in order to avoid shadowing
Summary: Rename `std::unique_lock` variables named `lock` to `ulock` in `folly::fibers::TimedMutex` member functions in order to avoid shadowing.
Reviewed By: andreazevedo
Differential Revision:
D6123449
fbshipit-source-id:
5fa331bb1541ac995d9b69360ee09923c14f6698
Andrew Krieger [Mon, 23 Oct 2017 16:36:28 +0000 (09:36 -0700)]
Gate std::invoke_result et. al. to appropriate MSVC versions.
Summary: Only available in >= 2017 15.3, which is 1911+.
Reviewed By: aary, Orvid
Differential Revision:
D6117237
fbshipit-source-id:
255804af5bfd0c743fd225b8a4fddf3cfc9cfeaf
James Sedgwick [Mon, 23 Oct 2017 14:27:04 +0000 (07:27 -0700)]
move Arena, ThreadCachedArena, and Malloc to memory/
Summary: all memory/-destined components besides hphp includes
Reviewed By: yfeldblum, mzlee
Differential Revision:
D6121822
fbshipit-source-id:
6c6214d84dcdefe4789ed5200399ae27203d6340
James Sedgwick [Sun, 22 Oct 2017 20:18:56 +0000 (13:18 -0700)]
move futures/test/ExecutorTest.cpp to executors/
Summary: also gotta split it up/rename it, that's coming later
Reviewed By: yfeldblum
Differential Revision:
D6121525
fbshipit-source-id:
9c6dbabd47323d94657508a0f75a0c6e7f988ace
James Sedgwick [Sat, 21 Oct 2017 22:28:58 +0000 (15:28 -0700)]
move InlineExecutor, ManualExecutor, and GlobalThreadPoolList to
Summary:
That's everything that's going in executors/ except for Executor.h
itself, which is included in hphp so will have to wait
Reviewed By: mzlee
Differential Revision:
D6100274
fbshipit-source-id:
6be37892b1ad7f46828acfa6b2951e51b157a86a
James Sedgwick [Sat, 21 Oct 2017 20:00:55 +0000 (13:00 -0700)]
move MemoryMapping, Shell, ThreadId, ThreadName, and VersionCheck to system/
Summary:
Everything that's going in system/ besides CpuId and Subprocess,
which are included in hphp
Reviewed By: mzlee
Differential Revision:
D6102263
fbshipit-source-id:
564ef584c341a4ac79db14a9d58fe23ce51e78b3
James Sedgwick [Sat, 21 Oct 2017 17:25:08 +0000 (10:25 -0700)]
move io/Compression and io/compression/* to compression/
Summary:
as above
(Note: this ignores all push blocking failures!)
Reviewed By: yfeldblum
Differential Revision:
D6099826
fbshipit-source-id:
20152487135aa8eaf6d2e99369801b6dde4992aa
Yedidya Feldblum [Sat, 21 Oct 2017 05:25:03 +0000 (22:25 -0700)]
Use folly/portability/GTest.h in folly/executurs/test/
Summary:
[Folly] Use `folly/portability/GTest.h` in `folly/executurs/test/`.
Applying the general rule for folly tests to some recently-introduced violations.
Reviewed By: Orvid
Differential Revision:
D6113707
fbshipit-source-id:
f9a2961ac845489b85b5a539595e4c82df03d922
James Sedgwick [Fri, 20 Oct 2017 20:30:03 +0000 (13:30 -0700)]
move executor task queues and thread factories into subdirectories
Summary:
as title, see moves
(Note: this ignores all push blocking failures!)
Reviewed By: mzlee
Differential Revision:
D6112001
fbshipit-source-id:
1eb10b44ae8ee1f90a10e05c29e48c99d824afa5
Christopher Dykes [Fri, 20 Oct 2017 17:29:30 +0000 (10:29 -0700)]
Drop redundant void parameters from function declarations
Summary:
This is C++, not C, so let's keep things modern.
This is applying the modernize-redundant-void-arg clang-tidy check to Folly.
Reviewed By: yfeldblum
Differential Revision:
D6106921
fbshipit-source-id:
06a56f036f59426df5dd475bf91a3f4a335266f5
Christopher Dykes [Fri, 20 Oct 2017 05:48:29 +0000 (22:48 -0700)]
Match commented argument names with actual names
Summary: Via the clang-tidy check misc-argument-comment.
Reviewed By: yfeldblum
Differential Revision:
D6107482
fbshipit-source-id:
a1fe6215c31fae472ad3b6e05abea974d706794e
Christopher Dykes [Thu, 19 Oct 2017 23:13:58 +0000 (16:13 -0700)]
Use nullptr rather than 0 for a null pointer
Summary: This time aided by clang-tidy's modernize-use-nullptr check.
Reviewed By: yfeldblum
Differential Revision:
D6102739
fbshipit-source-id:
aeb4bd0a8078d81cc88b766e0a034a37dd25fd1f
James Sedgwick [Thu, 19 Oct 2017 21:08:04 +0000 (14:08 -0700)]
move CallOnce to synchronization/
Summary: as above
Reviewed By: knekritz
Differential Revision:
D6088687
fbshipit-source-id:
0efbb7f5fa33b5f553c0c2019658370fc6e8613f
Alex Yarmula [Thu, 19 Oct 2017 20:35:27 +0000 (13:35 -0700)]
Handle timekeeperSingleton being nullptr in within()
Summary: When timekeeper singleton no longer exists during shutdown and folly::Singleton::try_get() can return nullptr, make sure nullptr is handled gracefully.
Reviewed By: yfeldblum
Differential Revision:
D6101311
fbshipit-source-id:
fefeddfbd048d1a7632688bb3526db15b685dd72
Yedidya Feldblum [Thu, 19 Oct 2017 19:33:58 +0000 (12:33 -0700)]
Add InlineExecutor.cpp to Makefile.am
Summary: [Folly] Add `InlineExecutor.cpp` to `Makefile.am`.
Reviewed By: Orvid
Differential Revision:
D6101859
fbshipit-source-id:
4cd0f875dedb548189722fd719f4424d485e1b02
Yedidya Feldblum [Thu, 19 Oct 2017 18:37:54 +0000 (11:37 -0700)]
Fix fibers build on older boost
Summary:
[Folly] Fix `folly/fibers/` build on older boost.
Where `jump_fcontext` takes `intptr_t` rather than an actual pointer, and we warn about implicit conversions from pointers to integral types.
Reviewed By: Orvid
Differential Revision:
D6098230
fbshipit-source-id:
61bd7bdff5de728d3febe8b35c97d024ab6f236a
Christopher Dykes [Thu, 19 Oct 2017 18:04:53 +0000 (11:04 -0700)]
Ensure curly-braces around control-flow
Summary: The style guidelines say control flow should always have curly braces, and we follow that, mostly. This just uses clang-tidy to clean up everywhere that we weren't.
Reviewed By: markisaa, luciang
Differential Revision:
D6097377
fbshipit-source-id:
bfe6766c37bd863ecf68851ef93265a200d4259d
James Sedgwick [Thu, 19 Oct 2017 14:45:51 +0000 (07:45 -0700)]
move ApplyTuple to functional/
Summary: as above
Reviewed By: yfeldblum
Differential Revision:
D6086563
fbshipit-source-id:
ab7f50ba46ebd1dbef6438f956258b2fbb13cb5c
Peter Alexander [Thu, 19 Oct 2017 09:46:56 +0000 (02:46 -0700)]
Add ProducerConsumerQueue::capacity()
Summary: Simple addition. Easy to track externally, but might as well provide it in the class if it is readily available.
Reviewed By: yfeldblum
Differential Revision:
D6093826
fbshipit-source-id:
9d8c02891b2cea9ce0d3f6ea78e1e0055b536eb8
Yedidya Feldblum [Thu, 19 Oct 2017 09:30:31 +0000 (02:30 -0700)]
Revert
D6050464: [Folly] Move folly/Hash.h to folly/hash/
Summary:
This reverts commit
64eb65aac8e3e7cd0126e65ca3998bfe167e2d73
bypass-lint
Differential Revision:
D6050464
fbshipit-source-id:
1ed63f30837dc11ae57b316f1f7cb233a210894a
Walker Mills [Thu, 19 Oct 2017 07:57:03 +0000 (00:57 -0700)]
Add window overload that takes an executor to prevent stack overflow
Summary:
AIUI, if there is no executor available, then callbacks are executed inline. `folly::window` uses a recursive helper function (`spawn`) to handle chaining callbacks. So if `window` is used on a large enough collection of `Future`s without executors (e.g., created by `makeFuture`, or have otherwise already completed), you get a stack overflow. A minimal repro looks like:
```
int main(int argc, char** argv) {
std::vector<int> v(100000);
for(int i=0; i < v.size(); i++) {
v[i] = i;
}
std::vector<folly::Future<folly::Unit>> f =
folly::window(
std::move(v),
[](int /* unused */) { return folly::makeFuture(); },
1);
folly::collectAll(f).get();
}
```
This diff resolves the issue by adding an overload of `folly::window` which takes an executor as its first parameter. The executor-less `window` overload calls through to the new function using an `InlineExecutor` as the default executor.
Reviewed By: yfeldblum
Differential Revision:
D6038733
fbshipit-source-id:
5dcab575592650efa2e106f12632ec06817a0009
Yedidya Feldblum [Thu, 19 Oct 2017 07:37:48 +0000 (00:37 -0700)]
Move folly/Hash.h to folly/hash/
Summary: [Folly] Move `folly/Hash.h` to `folly/hash/`.
Reviewed By: jsedgwick
Differential Revision:
D6050464
fbshipit-source-id:
64eb65aac8e3e7cd0126e65ca3998bfe167e2d73
Arkady Shapkin [Thu, 19 Oct 2017 02:35:00 +0000 (19:35 -0700)]
Enable bug workaround also for MSVC 2017.4
Summary:
Workaround a bug in template instantiation in MSVC 2017 U3/4 with /permissive-
https://developercommunity.visualstudio.com/content/problem/81223/incorrect-error-c5037-with-permissive.html
/cc Orvid
Closes https://github.com/facebook/folly/pull/691
Reviewed By: yfeldblum
Differential Revision:
D6085652
Pulled By: Orvid
fbshipit-source-id:
f068dc3f8e474163815fc497b05410fe76834a52
Boliu Xu [Thu, 19 Oct 2017 02:08:13 +0000 (19:08 -0700)]
Fix incorrect example usage in stop_watch
Summary: As titled.
Reviewed By: yfeldblum
Differential Revision:
D6087099
fbshipit-source-id:
1c346fa6f65b5ea58e728759905560ae5ad9cc9d
Richard Fillman [Thu, 19 Oct 2017 00:19:59 +0000 (17:19 -0700)]
Move small fields to avoid padding in AsyncSocket.h and AsyncSSLSocket.h
Summary: Compiled mcrouter with the 'Wpadded' flag to try to find any wasted space. Mcrouter itself did not have anything, but there was a lot in AsyncSocket.h and AsyncSSLSocket.h so looked into those and removed a bit of wasted space
Reviewed By: yfeldblum, brianwatling
Differential Revision:
D6033977
fbshipit-source-id:
2dc127208e09980be6a5db576b45d30ac6e044ff
James Sedgwick [Wed, 18 Oct 2017 23:32:35 +0000 (16:32 -0700)]
move futures/QueuedImmediateExecutor to executors/QueuedImmediateExecutor
Summary: as above
Reviewed By: yfeldblum
Differential Revision:
D6076779
fbshipit-source-id:
4c223ab9fce3be8544f6f807781c3d0a99b61dad
Andrew Krieger [Wed, 18 Oct 2017 22:44:01 +0000 (15:44 -0700)]
Workaround MSVC bug with referencing template constructors before definition
Summary:
MSVC has a bug where it is unable to match an out-of-line constructor (and
possibly other kind of member) to the definition if it is implicitly referenced
before the definition is processed. The guilty method is
SemiFuture<Unit> makeSemiFuture(). Moving it after the constructor definitions
resolves the issue.
Reviewed By: yfeldblum
Differential Revision:
D6042277
fbshipit-source-id:
97fe97c0edf3df3d9e3b808968b450c73959b600
James Sedgwick [Wed, 18 Oct 2017 22:01:33 +0000 (15:01 -0700)]
move futures/ScheduledExecutor to executors/ScheduledExecutor
Summary: see title
Reviewed By: yfeldblum
Differential Revision:
D6062601
fbshipit-source-id:
edd9a5e85f4ebecd1a6f1004a4d3b8b43b935c2b
Yedidya Feldblum [Wed, 18 Oct 2017 21:18:47 +0000 (14:18 -0700)]
Move folly/MallctlHelper.h to folly/memory/
Summary: [Folly] Move `folly/MallctlHelper.h` to `folly/memory/`.
Reviewed By: aary
Differential Revision:
D6087216
fbshipit-source-id:
4e0fa4aea976e2578127d3c340e0e9b559a224ca
James Sedgwick [Wed, 18 Oct 2017 18:49:02 +0000 (11:49 -0700)]
move Partial to functional/
Summary: as above
Reviewed By: ngoyal
Differential Revision:
D6087941
fbshipit-source-id:
948ff4f2faa87dd34f87d14ea01c83335f850a27
Christopher Dykes [Wed, 18 Oct 2017 16:49:45 +0000 (09:49 -0700)]
Use nullptr rather than 0 when initializing pointers
Summary:
Because we do this in a few places, and `nullptr` makes it far clearer what the intention is.
Note that with `-Wzero-as-null-pointer-constant` under GCC, doing `std::function<void()> f = {}` initializes `f` with a `0` rather than `nullptr`, triggering the warning, so I've enabled it there as well.
It is not currently possible to actually enable `-Wzero-as-null-pointer-constant`, because GCC 5 reports conversions resulting from a default value as occuring at the call-site rather than at the location where the parameter is defined, and the default allocator in libstdc++ is not clean for this particular warning -_-...
Reviewed By: yfeldblum
Differential Revision:
D6046746
fbshipit-source-id:
6135bb20a503c861838575cf973324d74d75ca69
James Sedgwick [Wed, 18 Oct 2017 16:44:09 +0000 (09:44 -0700)]
move futures/DrivableExecutor to executors/DrivableExecutor
Summary: as title
Reviewed By: yfeldblum
Differential Revision:
D6062437
fbshipit-source-id:
4f99e779e280fdb0b1f035013caff18764e86ab5
Yedidya Feldblum [Wed, 18 Oct 2017 06:36:06 +0000 (23:36 -0700)]
Lift the invoke helper in Function.h
Summary: [Folly] Lift the `invoke` helper in `Function.h`.
Reviewed By: aary
Differential Revision:
D6050569
fbshipit-source-id:
da07901b8d058b0199d23db675c0fb9082fdf67d
James Sedgwick [Wed, 18 Oct 2017 03:21:36 +0000 (20:21 -0700)]
move python/NotificationQueueExecutor to futures/
Summary: as above
Reviewed By: yfeldblum
Differential Revision:
D6076757
fbshipit-source-id:
afe144129e8a0242ba6baee96a84a9084e6e2571
Yedidya Feldblum [Wed, 18 Oct 2017 02:28:49 +0000 (19:28 -0700)]
Simplify impl of setThreadName
Summary: [Folly] Simplify impl of `setThreadName`.
Reviewed By: Orvid, ot
Differential Revision:
D6075179
fbshipit-source-id:
720f29cc688f97b936813898238b8eb26b8a6141
Dan Melnic [Tue, 17 Oct 2017 23:27:56 +0000 (16:27 -0700)]
Do not set WriteFlags::WRITE_MSG_ZEROCOPY if the buffer ! isManaged()
Summary: Do not set WriteFlags::WRITE_MSG_ZEROCOPY if the buffer isShared()
Reviewed By: yfeldblum
Differential Revision:
D6068711
fbshipit-source-id:
fff14dcd4fcb20c9dbb60794420845042518922c
Yedidya Feldblum [Tue, 17 Oct 2017 23:12:20 +0000 (16:12 -0700)]
Un-templatize Range::str
Summary: [Folly] Un-templatize `Range::str`.
Reviewed By: ot
Differential Revision:
D6075642
fbshipit-source-id:
08fc399c43750d34463de7634be4fe386b5db97c
Yedidya Feldblum [Tue, 17 Oct 2017 23:09:36 +0000 (16:09 -0700)]
Refactor ShutdownSocketSet atomic state machine
Summary:
[Folly] Refactor `ShutdownSocketSet` atomic state machine.
* Format.
* Use `while` over `goto`.
* Avoid `memory_order_acq_rel` as the single-argument memory order; some platforms fail to build that.
* Use `memory_order_relaxed` for all atomic operations because stronger memory orders are not actually required: the atomic state never serves as a barrier for synchronizing loads and stores of associated data because there is no associated data.
Reviewed By: davidtgoldblatt
Differential Revision:
D6058292
fbshipit-source-id:
d45d7fcfa472e6e393a5f980e75ad9ea3358bab3
Yedidya Feldblum [Tue, 17 Oct 2017 20:09:48 +0000 (13:09 -0700)]
An InlineExecutor singleton
Summary:
[Folly] An `InlineExecutor` singleton.
Using the Leaky Meyers Singleton pattern, so that it is always available whenever required.
Differential Revision:
D6074534
fbshipit-source-id:
bd4c9cd6a1e60c80de5d2eef1cb6a1e7f16b4e50
Andrew Krieger [Tue, 17 Oct 2017 16:17:30 +0000 (09:17 -0700)]
Don't make copies of std::string or fbstring when converting.
Summary:
This overload of estimateSpaceNeeded was taking a Src by
value, but Src is constrained by IsSomeString which only returns
true for std::string or fbstring, so this was inducing a copy
in any situation where folly::to<> is used with varargs which
contain fb/string arguments.
Reviewed By: yfeldblum
Differential Revision:
D6059517
fbshipit-source-id:
adc239f9049e161fc4b750bae0e3de5dbdcd1bfc
Yedidya Feldblum [Tue, 17 Oct 2017 03:10:35 +0000 (20:10 -0700)]
Make Range.h and FBString.h mutually independent
Summary:
[Folly] Make `Range.h` and `FBString.h` mutually independent.
This means that `Range` cannot directly know about `fbstring`, so any interactions between the two types must be indirected through templates.
Motivation: `FBString.h` is a relatively heaviweight `#include` for things that need `Range.h` but which do not use `fbstring`.
Reviewed By: ericniebler
Differential Revision:
D6062434
fbshipit-source-id:
e2f21c33f482eadffd0a8679eff4ece59bab53e9
Yedidya Feldblum [Tue, 17 Oct 2017 02:25:47 +0000 (19:25 -0700)]
Shrink integral hasher specialization implementations
Summary:
[Folly] Shrink integral `hasher` specialization implementations.
Instead of giving them bodies, just use inheritance.
Reviewed By: luciang
Differential Revision:
D6067757
fbshipit-source-id:
f71bd36132e1b66002493474825894b03754b34f
Chad Austin [Mon, 16 Oct 2017 23:22:25 +0000 (16:22 -0700)]
fix typo in invalid log level error message
Reviewed By: simpkins
Differential Revision:
D6068742
fbshipit-source-id:
a3b3b7fe4a6da8f250e5b9593f66b9f8a9345136
qiao hai-jun [Mon, 16 Oct 2017 18:18:55 +0000 (11:18 -0700)]
fix typo
Summary: Closes https://github.com/facebook/folly/pull/692
Differential Revision:
D6066294
Pulled By: yfeldblum
fbshipit-source-id:
a533527058b8b5bc71fb6f40bad31a50e8c3f585
Yedidya Feldblum [Mon, 16 Oct 2017 17:56:48 +0000 (10:56 -0700)]
4-way overloads for SemiFuture::value
Summary:
[Folly] 4-way overloads for `SemiFuture::value`.
Overload on the receiver reference category and `const`-qualification, deriving the return type reference category and `const`-qualification. Like `Optional`, `Try`, etc.
Differential Revision:
D6062006
fbshipit-source-id:
d7396cd4d4bb62e99445d5f61cb360898fa1c3f3
Ognjen Dragoljevic [Mon, 16 Oct 2017 14:24:15 +0000 (07:24 -0700)]
Fix hash overloads for integral types
Summary:
`folly/Hash.h:379:12: error: implicit instantiation of undefined template 'folly::hasher<unsigned long, void>'`
So, folly is unable to hash the very type it returns: `size_t`. Namely, folly has overloads for `uint32_t` and `uint64_t` which on my Mac map to `int` and `long long` respectively. `size_t` on the other hand maps to `long` which is neither.
Rather than overloading library types (which are just typedefs), we should overload all the built-in types: `char`, `short`, `int`, `long`, `long long`, `signed` and `unsigned` variants (with special treatment of `char`).
Reviewed By: yfeldblum, luciang
Differential Revision:
D6051600
fbshipit-source-id:
d59569dab963cbe0329aa589ff321cfb22308193
Andrew Krieger [Mon, 16 Oct 2017 04:30:56 +0000 (21:30 -0700)]
constexpr estimateSpaceNeeded for string literals.
Summary:
Partially inspired by WillerZ's investigation into faster compiling
StringPiece work, I thought this would be an easy drop in that short
circuits some compilation logic (or possibly is strictly better, since the
StringPiece conversion method isn't constexpr).
Reviewed By: yfeldblum
Differential Revision:
D6059537
fbshipit-source-id:
072f56e58aa47db10b54825cac8a05dc035b295c
Marc Celani [Sun, 15 Oct 2017 21:24:44 +0000 (14:24 -0700)]
Move retrying method to separate header in folly/futures
Summary: folly/futures depends on folly/Random.h, which in turn depends on <random>, which is a fairly large header. Most users of folly::futures do not use retrying, so separate it into a separate header.
Reviewed By: yfeldblum
Differential Revision:
D6028468
fbshipit-source-id:
d8155fe2ddff1a65c265a18f040ee6f1be3f3f0a
Yedidya Feldblum [Fri, 13 Oct 2017 23:14:37 +0000 (16:14 -0700)]
Style fixes for folly/experimental/gdb/README.md
Summary:
[Folly] Style fixes for `folly/experimental/gdb/README.md`.
Should have no effect on Github rendering, but should affect PHabricator rendering.
Reviewed By: Orvid, kennyyu
Differential Revision:
D6055017
fbshipit-source-id:
54204a2b77beeb884cdc486207809f78ac80afe2
Neel Goyal [Fri, 13 Oct 2017 19:22:08 +0000 (12:22 -0700)]
Add AsyncSocketException.cpp to build sources
Summary: Add AsyncSocketException.cpp to the list of files to build in Makefile.am
Reviewed By: knekritz
Differential Revision:
D6051989
fbshipit-source-id:
72083a609fc994770eca078bfef5a0ed04322bfc
Vitaly Berov [Fri, 13 Oct 2017 16:30:02 +0000 (09:30 -0700)]
Replace ShutdownSocketSet to singleton
Summary:
We recently found out that ShutdownSocketSet consumes 150+MB for our service, which uses duplex channels. The problem is that we create ~1000 of ThriftServers, and each of the creates its own ShutdownSocketSet.
In reality, ShutdownSocketSet is only needed to kill all socket's FD in emergency before crash dump is taken, so they don't hand around waiting for crash dump to complete. There is no need to keep a SSS per ThriftServer, singleton should work just fine.
There is a problem here, though. Currently a ThriftServer has 'immediateShutdown' method, which kills all sockets from SSS. So, if SSS becomes a singleton, and we have more than one ThriftServer, calling 'immediateShutdown' on one will kill sockets from the other one. First, it's a quite surprising behavior, and second, it complicates unit tests, which emulate thrift servers running in different processes.
As a result,
1. ShutdownSocketSet is created as a singleton, but each ThriftServer still keeps weak ptr to it (mostly for unit tests support).
2. replaceShutdownSocketSet method is added to ThriftServer.h, so unit tests could set different SSS for different ThriftServers.
3. method immediateShutdown is removed from ThriftServer, because its behavior would be 'surprising'.
There still may be unexpected consequences of this change for the tests because of Singleton, but let's see.
Reviewed By: yfeldblum
Differential Revision:
D6015576
fbshipit-source-id:
dab70dbf82d01bcc71bbe063f983e862911ceb24
Lucian Grijincu [Fri, 13 Oct 2017 08:58:11 +0000 (01:58 -0700)]
folly: AsyncSocketException: move implementation to .cpp, refactor
Reviewed By: yfeldblum
Differential Revision:
D6042832
fbshipit-source-id:
c716ee672c4acfa39cab9f10f3b3f88ca770cd20
Yedidya Feldblum [Fri, 13 Oct 2017 04:21:17 +0000 (21:21 -0700)]
Move folly/Checksum.h into folly/hash/
Summary: [Folly] Move `folly/Checksum.h` into `folly/hash/`.
Reviewed By: Orvid
Differential Revision:
D6045825
fbshipit-source-id:
02d3e6a49e2c0fc115cfee09e1186be7a13525ba
Miroslav Crnic [Wed, 11 Oct 2017 08:43:41 +0000 (01:43 -0700)]
Add support for clang intrinsic constexpr
Summary: Newer versions of clang >=3.4 support intrinsic constexpr
Reviewed By: Orvid
Differential Revision:
D6008856
fbshipit-source-id:
4e40a7032464216d181d76a854cafb2ab4be1be0
Cameron Pickett [Tue, 10 Oct 2017 09:39:20 +0000 (02:39 -0700)]
Handle nullptr from getTimekeeperSingleton
Summary:
According to folly::Singleton::try_get(), https://fburl.com/23wqby9i, the caller is responsible for handling a nullptr return. In this case, we handle it poorly, via a crash both in production and debug code.
This diff opts for handling the nullptr more gracefully, via a future loaded with an exception.
Reviewed By: yfeldblum
Differential Revision:
D6006864
fbshipit-source-id:
e8fde57ed161b33fa1f157ce663ed85e69640c25
Dan Melnic [Mon, 9 Oct 2017 01:27:54 +0000 (18:27 -0700)]
Add SO_ZEROCOPY support
Summary: Add SO_ZEROCOPY support
Reviewed By: djwatson
Differential Revision:
D5851637
fbshipit-source-id:
5378b7e44ce9d888ae08527506218998974d4309
Yedidya Feldblum [Sat, 7 Oct 2017 01:04:56 +0000 (18:04 -0700)]
Let EventBase::runInEventBaseThreadAndWait consume its argument
Summary:
[Folly] Let `EventBase::runInEventBaseThreadAndWait` consume its argument.
Likewise `EventBase::runImmediatelyOrRunInEventBaseThreadAndWait`.
And enforce that the function is destructed before returning, so that, in the case of a wrapped lambda, all captured objects' destructors run before returning from the function.
Reviewed By: elsteveogrande
Differential Revision:
D5994106
fbshipit-source-id:
816c9431a85a3d41e4fda321065614f4c18f0697
Stiopa Koltsov [Fri, 6 Oct 2017 20:07:02 +0000 (13:07 -0700)]
future.then() is identical to future.unit()
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 [Fri, 6 Oct 2017 18:45:18 +0000 (11:45 -0700)]
Remove Executor::addPtr
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 [Fri, 6 Oct 2017 16:54:59 +0000 (09:54 -0700)]
Workaround for a gcc crash
Summary: I recently got a gcc crash when using `ConcurrentHashMap`
Reviewed By: djwatson
Differential Revision:
D5994587
fbshipit-source-id:
412d48aa6da12c428bb9ab5ed7a317d89c9580b9
Valeriy Khromov [Fri, 6 Oct 2017 11:38:06 +0000 (04:38 -0700)]
add static makeFromPath to construct SocketAddress from a unix domain socket path
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 [Fri, 6 Oct 2017 00:02:00 +0000 (17:02 -0700)]
Use fewer keep-alives in VirtualEventBase::keepAliveRelease
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
Yedidya Feldblum [Thu, 5 Oct 2017 22:52:28 +0000 (15:52 -0700)]
Make keepAliveRelease consistent between EventBase and VirtualEventBase
Summary: [Folly] Make `keepAliveRelease` consistent between `EventBase` and `VirtualEventBase`.
Reviewed By: elsteveogrande
Differential Revision:
D5982132
fbshipit-source-id:
536d48e5672567e78786691bfb283c34d1f31960
Yedidya Feldblum [Thu, 5 Oct 2017 22:40:50 +0000 (15:40 -0700)]
Move GlobalThreadPoolList.h into folly/concurrency/
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 [Thu, 5 Oct 2017 15:34:49 +0000 (08:34 -0700)]
Add an overload to use backlashify with StringPiece
Summary: Allows calling backlashify on a StringPiece.
Reviewed By: yfeldblum
Differential Revision:
D5930015
fbshipit-source-id:
ca14c78d9a90c45781da7229eb5d2f437792b2d1
Lee Howes [Thu, 5 Oct 2017 02:59:14 +0000 (19:59 -0700)]
Add SemiFuture class.
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
Eric Niebler [Wed, 4 Oct 2017 21:56:25 +0000 (14:56 -0700)]
give folly future's exceptions default visibility
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 [Wed, 4 Oct 2017 18:56:32 +0000 (11:56 -0700)]
Move keepalive-acquire code into Executor::keepAliveAcquire overrides
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 [Wed, 4 Oct 2017 17:31:05 +0000 (10:31 -0700)]
Benchmark comparison
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 [Wed, 4 Oct 2017 06:50:27 +0000 (23:50 -0700)]
Let keep-alive tokens from VirtualEventBase be destroyed from any thread
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
Maged Michael [Tue, 3 Oct 2017 19:19:29 +0000 (12:19 -0700)]
Dynamic MPMCQueue: Backout of last change as it may deadlock
Summary: The previous change can lead to deadlock. Backing out.
Reviewed By: djwatson
Differential Revision:
D5957084
fbshipit-source-id:
72ea1cb6236367912b4b087da7e4d57f8a2daed0