- 09 Jul, 2021 5 commits
-
-
Fred Emmott authored
Summary: I don't understand why we have both manifests/specs; I was assuming one was generated from the other, but I don't see a at-generated and grep doesn't show up anything, so both are manual edits. Reviewed By: iahs Differential Revision: D29524000 fbshipit-source-id: 5f6df62f0162ea24a9903bedf5d220eab5c2dff1
-
Zsolt Dollenstein authored
Reviewed By: zertosh Differential Revision: D29612107 fbshipit-source-id: ac450058134e23a3831db35d2e49c80eb8cde36a
-
Dong Li authored
Differential Revision: D29536635 (https://github.com/facebook/folly/commit/bc0818f89e7ab3802cdac95a25e29f4061021c3c) Original commit changeset: 008a612ec65a fbshipit-source-id: 2c18348732f1b1f8022e3cc8dce5a5684ce16108
-
Tim Berning authored
Summary: AsyncSocketSendmmsgIntegrationTest.PingPongRequest fails during stress runs with multiple jobs due to the 5ms timeout in `UDPClient::sendPing()`. Increasing the timeout fixes the issue. Reviewed By: yfeldblum Differential Revision: D29623870 fbshipit-source-id: ad6ee0356001fbded9ce01ddc099b708d1477899
-
Pranjal Raihan authored
Summary: `RequestContext::StaticContextAccessor` acts as a guard, preventing all threads with a `StaticContext` from being destroyed (or created). Reviewed By: yfeldblum Differential Revision: D29536635 fbshipit-source-id: 008a612ec65aa7095450f4d0ab522e8ecd864548
-
- 08 Jul, 2021 8 commits
-
-
Giuseppe Ottaviano authored
Summary: Codegen for copy and move assignment is suboptimal when the vectors involved are inline, in particular if the destination is default-constructed (which is very common) and even more so if the value type is trivially copyable. The main optimization is that if the storage is inline and the type is trivially-copyable, we can just copy the whole storage, regardless of the size of the container. This avoids a branchy loop, and it's usually just a handful of MOVs. While at it, optimized all the related code paths by avoiding delegating to `swap()` and `assign()` when possible, which introduce further branches that are hard to optimize. Also move and copy in place when the vector is non-empty, avoiding unnecessary destructions. Also fixed a couple of bugs: - The move constructor did not clear its argument when inline, inconsistently with the move assignment and `std::vector` - The move assignment operator passed its heap storage to the argument instead of freeing it. Reviewed By: yfeldblum Differential Revision: D29592519 fbshipit-source-id: 6281cdda775568d28619afea8b7ca2fb168c7e5d
-
Yedidya Feldblum authored
Summary: It is unused. An upcoming Concurrency TS will have a replacement. Reviewed By: mshneer Differential Revision: D29597486 fbshipit-source-id: a108b945ce32eb17cedefad89630c9171fc5c9c2
-
Fred Emmott authored
Summary: BSD readlink doesn't have -f. I'm not using TravisCI, however docker is still convenient for reproducing builds locally. Reviewed By: yns88 Differential Revision: D29523333 fbshipit-source-id: e01169f3eabca7b8baec95bc70fe119cad201b35
-
Giuseppe Ottaviano authored
Summary: Implement C++20 `contains()`. Reviewed By: yfeldblum Differential Revision: D29556436 fbshipit-source-id: 1c3a8e6e9a07f6e47491b063f88df6bf9da2d87b
-
Pranjal Raihan authored
Reviewed By: yfeldblum, mshneer Differential Revision: D29578762 fbshipit-source-id: 2aa9af8f68825997db8b71fc97dda5477fa57413
-
Pranjal Raihan authored
Summary: [Forward iterators are required to be default constructible](https://en.cppreference.com/w/cpp/named_req/ForwardIterator). So as of today, `IteratorAdaptor` is lying! We should default construct the wrapped iterator into a [singular iterator](https://eel.is/c++draft/iterator.requirements#general-7): > Iterators can also have singular values that are not associated with any sequence. Results of most expressions are undefined for singular values; the only exceptions are destroying an iterator that holds a singular value, the assignment of a non-singular value to an iterator that holds a singular value, and, for iterators that meet the `Cpp17DefaultConstructible` requirements, using a value-initialized iterator as the source of a copy or move operation. Reviewed By: yfeldblum, mshneer Differential Revision: D29578765 fbshipit-source-id: 7f2f0762b17f0b1a056532fc5db2abdd76cca3ea
-
Pranjal Raihan authored
Summary: Let's give them better names than `first` and `second`. Reviewed By: yfeldblum, mshneer Differential Revision: D29536636 fbshipit-source-id: bbb37f2e1c0c51dd1ce2a0cfeca85399f409c415
-
Sergey Korytnikov authored
Summary: Fix BatchSemaphore to post baton for a multiple waiter in a list as long as there are token available. Reviewed By: yfeldblum Differential Revision: D29430799 fbshipit-source-id: 98b0a616d0ce863108dcf331e491fd2cc12429d1
-
- 07 Jul, 2021 1 commit
-
-
Yedidya Feldblum authored
Summary: Define a single implementation type `lock_base` which handles all cases, including unique/shared/upgrade locks and including sans-state/with-state locks. Add `unique_lock_base`, `shared_lock_base`, and `upgrade_lock_base`. Revise `upgrade_lock` simply to derive `upgrade_lock_base`. We may use `upgrade_lock` as an example for specializing `unique_lock` and `shared_lock` Remove `ProxyLockableUniqueLock` since `unique_lock_base` absorbs it. Let the `unique_lock` specializations for `DistributedMutex` inherit `unique_lock_base` instead. Add lock invokers for every lock, try-lock, unlock, and lock-transition member. Were these used only internally to implement the lock-policy types and the lock-transition functions they might be left in detail but there may be broader use-cases for at least some of them. Putting the invokers in this header is consistent with proper placement since this header is intended to own all lock primitives and facilities. Revise the lock-transition functions to handle cases where the from and to lock types are sans-state/with-state. Expand the set of lock-transition functions for completeness: lock-transitions include x->s, x->u, u->s, u->x; while try-lock-transitions include s->x, s->u, u->x. Reviewed By: aary Differential Revision: D28767313 fbshipit-source-id: 153adc8270f0f4338db6acf544b8d358556d6f49
-
- 06 Jul, 2021 2 commits
-
-
Durham Goode authored
Summary: Reenables dynamicconfig loading with eden backingstore. Previously it broke edenfs-windows-release, but we believe the opensource/fbcode_builder/manifests/eden tweak has fixed it. Reviewed By: xavierd Differential Revision: D29561192 fbshipit-source-id: 775dd21d177f3baa09b0192e7d3f7231008c3766
-
Shai Szulanski authored
Differential Revision: D29497151 fbshipit-source-id: 64ad1adbd68d10066fc65ddc41e9cff5ef3c6b53
-
- 01 Jul, 2021 2 commits
-
-
Xavier Deguillard authored
Summary: For whatever reason, sc_testpilot default to --return-zero-on-failures, which means that test failures are simply not reported properly to the signal box. Fix that by explicitely passing --return-nonzero-on-failures Reviewed By: fanzeyi Differential Revision: D29509158 fbshipit-source-id: ef991f91df48e99769f96ffd8d7015cdf507c723
-
Neel Goyal authored
Summary: Import or backport `std::reinterpret_pointer_cast` into folly. The relevant guard is the use of the C++17 language and, if feature-test macros are exported, `__cpp_lib_shared_ptr_arrays >= 201611`. Reviewed By: yfeldblum Differential Revision: D29433489 fbshipit-source-id: 92596d05f5057cff4c65283711b4ed6778d20758
-
- 30 Jun, 2021 7 commits
-
-
Shai Szulanski authored
Summary: Pull Request resolved: https://github.com/facebook/folly/pull/1614 Reviewed By: yfeldblum Differential Revision: D29496725 fbshipit-source-id: 7c726e3e310eb28cf33603ebd83df6d832488369
-
Tom Jackson authored
Summary: `guard()` is ignoring the return from `handler()`, thereby breaking `take()`. (Note: this ignores all push blocking failures!) Reviewed By: yfeldblum Differential Revision: D29416513 fbshipit-source-id: 1e84d3ba53cb68a1664a349e71398c782b1df751
-
Andrew Smith authored
Summary: A channel is a sender and receiver pair that allows one component to send values to another. A sender and receiver pair is similar to an AsyncPipe and AsyncGenerator pair. However, unlike AsyncPipe/AsyncGenerator, senders and receivers can be used by higher level transformation abstractions that are much more memory-efficient than using AsyncGenerator directly. These higher level abstractions do not require long-lived coroutine frames to wait on incoming values. Reviewed By: aary Differential Revision: D29158424 fbshipit-source-id: 88c51d0f9d73677a04906197f4c44fe84ac01cdb
-
lorinlee authored
Summary: Pull Request resolved: https://github.com/facebook/folly/pull/1610 Reviewed By: yfeldblum Differential Revision: D29434206 Pulled By: Orvid fbshipit-source-id: e20d29d0572307e917f8673bb161e3af1a6c55c3
-
Fred Qiu authored
Summary: Added options to enforce ALPN when both client and support support ALPN for folly/openssl. Reviewed By: knekritz Differential Revision: D29298491 fbshipit-source-id: acdd6001fea89606e2438640a4434cc56454f1aa
-
Alex Snast authored
Summary: `FixedString` should be constructable from a `std::string_view`. This allows passing `std::string_view` as key to `.emplace` in heterogeneous maps where the key is a `FixedString`. Reviewed By: yfeldblum Differential Revision: D29456948 fbshipit-source-id: 4d2e428c7de05c1dc34b50727f8107aec915b632
-
Yedidya Feldblum authored
Summary: The approach taken to fixing the lock inversion is not to use locks. Instead, we take a page from the existing futures playbook and use an atomic acyclic finite state machine! In this case, we have a single atomic pointer which may own either a raised object of type `exception_wrapper` or an interrupt-handler. Both are at least 4-byte aligned (8-byte aligned on 64-bit architectures) so both have the bottom two bits free. We use the bottom two bits as the state machine to identify whether `0x0u` initial where nothing is owned, `0x1u` where an interrupt-handler is owned, `0x2u` where a raised object is owned, or `0x3u` terminal where both an interrupt-handler and a raised object have been set and the handler has been invoked on the object. As choices, we forbid repeated calls to set the interrupt handler but permit repeated calls to raise an object. Calls after the first to set an interrupt handler terminate while calls to raise an object after the first are ignored. Existing tests demonstrate raising twice so we may like to be cautious about breaking that behavior. Some semantics are changed. Raised objects and interrupt handlers are destroyed earlier than before: they are now destroyed immediately after invoking handlers on objects. The lock order inversion is observed by thread sanitizer (tsan) in the new shared-promise test. Differential Revision: D29250149 fbshipit-source-id: 63e257d03cebbf8dba95a514b7e89680cae569a7
-
- 29 Jun, 2021 4 commits
-
-
Giuseppe Ottaviano authored
Summary: Make `Skipper` accept the `shared_ptr` by value, like `Accessor` does, so we can avoid the copy. Also expose the accessor, so after we handed over the `shared_ptr` we can still retain access to the list. Reviewed By: philippv Differential Revision: D29464861 fbshipit-source-id: 75e93f0e72c4b8a2635d25e5e7860f27aec2a0a5
-
Xavier Deguillard authored
Summary: Hack to use parexec and the par directly. Reviewed By: chadaustin Differential Revision: D29461444 fbshipit-source-id: 9ac6c1aa43728782b8de0a71446109f7fd5dab1d
-
Yedidya Feldblum authored
Summary: It's already not async-signal-safe so just use the fast version of getting the unsymbolized stack traces. Reviewed By: chadaustin Differential Revision: D29439597 fbshipit-source-id: 5a727d6a1c37a1c29bce84d866bf4863774c5ff1
-
Shai Szulanski authored
Reviewed By: Mizuchi Differential Revision: D29329759 fbshipit-source-id: 588aa9ce11db2c1aea51dcf96e0de3b50633fa29
-
- 27 Jun, 2021 11 commits
-
-
Nicolas J. Treat authored
Summary: This diff adds a computeChainCapacity method to IOBuf. This method will loop through each chain of an IOBuf and return the total capacity of all IOBuf chains. This method is used very similarly to computeChainDataLength(), except rather than returning total data length, it returns total capacity. Reviewed By: yfeldblum Differential Revision: D28875393 fbshipit-source-id: 7e5f4a93916fa6c30eef8f8ee8c346a4537302af
-
Jon Maltiel Swenson authored
Summary: If a callback associated with an observer depends on yet another observer, the callback may be called more than once per distinct snapshot of the associated observer. This diff fixes this problem. Reviewed By: andriigrynenko Differential Revision: D29313796 fbshipit-source-id: 345bfa0a1ac9dfaee806be21256088d4667aef15
-
Chad Austin authored
Summary: To support "clearing" a ring-buffer without violating TurnSequencer's invariants, allow storing a Cursor and comparing them in a loop. Differential Revision: D29345250 fbshipit-source-id: d1d3bbd0b38489690334bdd63a7f40d9f6bad6c6
-
Shai Szulanski authored
Summary: The CancellationSource already provides this synchronization Reviewed By: yfeldblum Differential Revision: D29368728 fbshipit-source-id: 085467d1fcb70d6fc059174ec673f7825025c076
-
Shai Szulanski authored
Summary: The empty size of UnboundedQueue is hundreds of bytes, which is a problem for many users of AsyncPipe. Switch the default to a smaller queue, adding a template parameter so high-throughput users can switch back. Differential Revision: D29375068 fbshipit-source-id: 9fb2dad81697eeb70d58929e6b9c1c64102aa4a8
-
Shai Szulanski authored
Summary: A smaller version of coro::UnboundedQueue to make AsyncPipe usable in memory-constrained programs. Reviewed By: yfeldblum Differential Revision: D29375067 fbshipit-source-id: 5d27e4514312d2748055be764af88c0688d46065
-
Andrii Grynenko authored
Summary: Cycle detection can be very expensive, so it's better to disable it in opt mode. Because of that we need to make sure we catch such cycles in dbg builds, so we have to replace exceptions with LOG(FATAL). Reviewed By: joshkirstein Differential Revision: D29367695 fbshipit-source-id: 9c2038eb5b42f98f4ab997f963b6a131b8d26cf9
-
Yedidya Feldblum authored
Summary: There is a golden image of the `Core` layout so that tests will catch accidental increases of the `Core` size. Updated it to the latest `Core` layout. Differential Revision: D29251632 fbshipit-source-id: d16086390548848f4302678e0b86d9841be1140b
-
Brandon Schlinker authored
Summary: - `std::is_pod_v` is only available in C++17, shifting to `std::is_pod` - `std::errc` needs the `system_error` header; missing header wasn't causing an error on most platforms because it is included indirectly Differential Revision: D29355681 fbshipit-source-id: e035c3f4ffac9d2c6f0d8ec511f7e0ea8544ba80
-
Brandon Schlinker authored
Summary: Remove dependency on `folly/FixedString.h` Differential Revision: D29317987 fbshipit-source-id: dbce91f117776a1dcd966230d9eed616b2a95613
-
Rob Lyerly authored
Summary: D28945040 added `collectAny()` which early-returns when any of the SemiAwaitables produces a value (or exception). There's the potential for discarded results, however - multiple SemiAwaitables can produce results depending on whether they're at a cancellation point and when cancellation is signaled. This diff adds a variant `collectAnyNoDiscard()` that signals cancellation when any SemiAwaitable finishes and returns *all* results that completed. It produces a tuple of optional values from the SemiAwaitables (or `std::nullopt` if it was canceled). Reviewed By: iahs Differential Revision: D29240725 fbshipit-source-id: 3e664339e8692cbb9114138a96345cf9f9d5cb0b
-