- 12 Apr, 2021 5 commits
-
-
condy authored
Summary: Pull Request resolved: https://github.com/facebook/folly/pull/1556 Reviewed By: Orvid Differential Revision: D27672765 Pulled By: yfeldblum fbshipit-source-id: edcf9b300c737799399096a8dbc401b3ab49b88c
-
David Carlier authored
Summary: Pull Request resolved: https://github.com/facebook/folly/pull/1557 Differential Revision: D27701865 Pulled By: yfeldblum fbshipit-source-id: f9ed96a8e9283a30f1f96d15b4b8166ade5d3321
-
Yedidya Feldblum authored
Summary: To get this to link across platforms, requires moving the thread-locals into functions. To avoid curious performance hits, requires removing the field initializers. Differential Revision: D27699178 fbshipit-source-id: 7617b8e4aedeccae4cd95ffe606d1414dc352705
-
Andrii Grynenko authored
Reviewed By: yfeldblum Differential Revision: D27695785 fbshipit-source-id: da8666781e03667a0060e8a7daab4206f60fc71d
-
Barys Skarabahaty authored
Summary: There is no sense to return the iterator that points to the outdated node that just was overwritten by `assign_if_equal` call. Reviewed By: yfeldblum Differential Revision: D27678357 fbshipit-source-id: f07ce21df6556819f7eb103a623d3f7a46e72072
-
- 11 Apr, 2021 1 commit
-
-
Yedidya Feldblum authored
Summary: DRY the `ShallowCopyRequestContextScopeGuard` ctor taking multiple items. Differential Revision: D27698685 fbshipit-source-id: 7f23305855918c4248da11c15e5fab839592d372
-
- 10 Apr, 2021 6 commits
-
-
Chad Austin authored
Summary: LockFreeRingBuffer is racy for nontrivial types. I could reproduce ASAN failures with nontrivial types like std::string, and TSAN failures with trivial types. Require triviality by default, and sequence the turns, loads, and stores with atomic_thread_fence. Reviewed By: yfeldblum Differential Revision: D27684743 fbshipit-source-id: e0b32855d3ed5c2edbd7ab72092f2c533071a70f
-
Chad Austin authored
Summary: In preparation for making LockFreeRingBuffer trivial-only, remove the ability to convert types during reads and writes. Reviewed By: yfeldblum Differential Revision: D27684584 fbshipit-source-id: 092009b2852d000fa3821756d1ec4bfd2bf002c8
-
Yedidya Feldblum authored
Summary: `SequentialThreadId` is only ever instantiated with `std::atomic` so just make it no longer a template. This permits moving the implementation into the source file. Reviewed By: Mizuchi Differential Revision: D27669406 fbshipit-source-id: ec2cddbff433df31434548b61111a34ca2da5cef
-
Henry Wang authored
Summary: Fix a bug in small_vector reported as a warning via gcc. ``` folly/small_vector.h: In instantiation of 'constexpr const size_t folly::small_vector<short int, 10>::MaxInline': folly/small_vector.h:1183:56: required from 'class folly::small_vector<short int, 10>' bits/stl_stack.h:134:47: required from 'class std::stack<short int, folly::small_vector<short int, 10> >' folly/small_vector.h:462:36: error: division 'sizeof (short int*) / sizeof (short int)' does not compute the number of array elements [-Werror=sizeof-pointer-div] 462 | constexpr_max(sizeof(Value*) / sizeof(Value), RequestedMaxInline)}; | ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~ ``` Reviewed By: yfeldblum Differential Revision: D27688663 fbshipit-source-id: 8da5b017c597c542826e26f2c36b0e3b46e87ed9
-
Yedidya Feldblum authored
Summary: Migrate the codebase away from the ad-hoc `folly::uint64ToBufferUnsafe` and to `folly::to_ascii_decimal` which is intended for these cases. Reviewed By: WillerZ Differential Revision: D27281875 fbshipit-source-id: 0c98749e4aed9c873853eed2221cf54a89279ff4
-
Andrii Grynenko authored
Summary: It's not safe to expect that the executor is alive after a task is added to the queue (this task could be holding the last KeepAlive and when finished - it may unblock the executor shutdown). The fix is to hold a KeepAlive if some operation has to be done after adding to the queue. However it's safe to avoid this in a case where executor thread count will never drop below 1 (otherwise not having active threads may result in a deadlock) and we already have the maximum number of threads running. This optimization should help avoid grabbing the KeepAlive on the fast path. Differential Revision: D27584518 fbshipit-source-id: e1242e3f4c40cee4f7e0c6dfca39abe6d17415f1
-
- 09 Apr, 2021 4 commits
-
-
Parvez Shaikh authored
Summary: as titled, an ugly hack to support LABEL attribute for 1.7.0 which didn't exist. getting rid of it now since oss support upgraded to 1.7.1 Differential Revision: D27536730 fbshipit-source-id: 58653e71cbf20a1cda0b7414f66b5f0014d89b84
-
Alexander Sklar authored
Summary: Addresses - at least partly - issue https://github.com/facebook/folly/issues/1550 We'd like to limit our exposure to additional libraries. Fmt is a new dependency. It doesn't look like we need it in actuality; gating the include based on whether the file exists or not makes it possible for clients (specifically React Native for Windows) to not need to fork Folly. Pull Request resolved: https://github.com/facebook/folly/pull/1551 Reviewed By: yfeldblum Differential Revision: D27531237 Pulled By: Orvid fbshipit-source-id: 340a7ff49be81872aaf23044945a1e8ecd157546
-
Giuseppe Ottaviano authored
Summary: This can be used to avoid noisy logging if the process is in the middle of a crash: symbolizing the stack trace can take a long time, so we can end up interleaving the crash report with unrelated logs. In particular, we can use this to guard monitoring code that is more likely to trip while the process is crashing (for example stall detectors). Reviewed By: yfeldblum, philippv, luciang Differential Revision: D27663380 fbshipit-source-id: e3bb40292c3c57579b3eb172847ca089b0f9b07a
-
Yedidya Feldblum authored
Summary: They are observed to trigger pathological behavior. Differential Revision: D27659117 fbshipit-source-id: 5e4e770e61ffde02075364f2247614cf5bbcf8ce
-
- 08 Apr, 2021 1 commit
-
-
Yedidya Feldblum authored
Reviewed By: Mizuchi Differential Revision: D27559375 fbshipit-source-id: aad3cc1a5bef017a52d2530068ca18be2eb50cd1
-
- 07 Apr, 2021 3 commits
-
-
Genevieve Helsel authored
Summary: as title, marking this import as manual will make it so autodeps won't double list it in the TARGETS file. Reviewed By: yfeldblum, luciang Differential Revision: D27418310 fbshipit-source-id: 0c32ff1ad0ad7997a83b050f7fe3cdc522f582cc
-
Seth Hinze authored
Summary: Allow callers to `IOBuf::takeOwnership()` to specify valid data in the middle of the underlying buffer. Reviewed By: yfeldblum Differential Revision: D27583632 fbshipit-source-id: 4651dec5e53c5eea341b2b4ad3782adfbe7ff779
-
Yedidya Feldblum authored
Summary: There appear always to be problems with `extern template struct`. In this case, some compilers either not emitting or dropping thread-local wrapper functions. ``` stderr: Undefined symbols for architecture x86_64: "thread-local wrapper routine for folly::AccessSpreader<std::__1::atomic>::cpuCache", referenced from: folly::AccessSpreader<std::__1::atomic>::cachedCurrent(unsigned long) in CacheLocality.cpp.o "thread-local wrapper routine for folly::SequentialThreadId<std::__1::atomic>::currentId", referenced from: folly::SequentialThreadId<std::__1::atomic>::get() in CacheLocality.cpp.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) ``` Reviewed By: Mizuchi Differential Revision: D27579816 fbshipit-source-id: b539816fb1f62d9e50e22d6cbc3c91a0d82ac629
-
- 06 Apr, 2021 4 commits
-
-
Yedidya Feldblum authored
Summary: Extract its content to an outline function and pass it the template immediates it needs. Reviewed By: Mizuchi Differential Revision: D27579474 fbshipit-source-id: 193c769d83f886b4fefea4a34118c44f7da08bd1
-
Genevieve Helsel authored
Summary: Adds a portability header for later ease of use when deciding to include external_deps libunwind in TARGETS files Reviewed By: yfeldblum Differential Revision: D27416623 fbshipit-source-id: fc42f010302b8caa280fdf5cbdf013ed1b23af04
-
Yedidya Feldblum authored
Summary: Required for msvc 32-bit builds - the result of `to_ascii_port_clzll` is used in an arithmetic expression. Reviewed By: SarahDesouky, Orvid Differential Revision: D27585004 fbshipit-source-id: b84b5b6d6fe417f3c6adafcaf826505275aa827c
-
Alan Huang authored
Reviewed By: yfeldblum Differential Revision: D27575037 fbshipit-source-id: fa5817ee3fe1eca99e83f26a13e43ec4a4a6e7cf
-
- 05 Apr, 2021 3 commits
-
-
Andrii Grynenko authored
Reviewed By: yfeldblum Differential Revision: D27253836 fbshipit-source-id: a72531e0deca9f0f6582339d483ed56f2eb37d87
-
Seth Hinze authored
Summary: Add a CHECK() to the IOBuf constructor to ensure the underlying buffer does not include any bytes that have been poisoned by AddressSanitizer. Reviewed By: yfeldblum Differential Revision: D25627483 fbshipit-source-id: 5bca59e545c32ba7b61430d7cd4787712eecb204
-
Yedidya Feldblum authored
Reviewed By: Orvid Differential Revision: D27559344 fbshipit-source-id: cf90be5a19da87bffe72fb6646296dd46889bc90
-
- 04 Apr, 2021 2 commits
-
-
Stiopa Koltsov authored
Summary: Close-on-exec is an important feature to avoid leaking file descriptors to spawned processes. This diff adds `File::dupCloseOnExec()` function which is equivalent to `File::dup` function, but sets close-on-exec flag where supported (i. e. everywhere except Windows). Practically most users want to have `closeOnExec = true` by default, but we need to preserve backwards compatibility, thus this diff leaves `dup` function as is. Reviewed By: yfeldblum Differential Revision: D27495214 fbshipit-source-id: 540deb2bc6c8fec626a0120bc20c345950dc8af7
-
Yedidya Feldblum authored
Reviewed By: Orvid Differential Revision: D27555992 fbshipit-source-id: d68dc183f7c7b7c64975ede21e6f3018575fb7c9
-
- 03 Apr, 2021 4 commits
-
-
Yedidya Feldblum authored
Reviewed By: Orvid Differential Revision: D27537202 fbshipit-source-id: d1aa8ad81f3749129dd6f1795e788a0e55d9f06a
-
Yedidya Feldblum authored
Summary: Between gnu and msvc compilers, the builtins and intrinsics `__builtin_clzll` and `__lzcnt64` have different return types. They are wrapped in a portability function in `to_ascii` which currently forces a return type, which return type could trip implicit-conversion warnings. Avoid forcing the return type to avoid tripping implicit-conversion warnings. Reviewed By: luciang Differential Revision: D27535348 fbshipit-source-id: 3339d5d04e095f936c18d2b39ac1fb4b32f8a810
-
Yedidya Feldblum authored
Summary: The ambiguity is that the name appears as both `folly::to_ascii_size` and `folly::detail::to_ascii_size`, so that anything which imports both `folly` and `folly::detail` or which is within `folly::detail` may, depending on the particular compiler, find an unqualified call ambiguous. Differential Revision: D27535255 fbshipit-source-id: 05db44e6b153d75b691d67c878785cab1655051d
-
Yedidya Feldblum authored
Summary: SingletonRelaxedCounter is templated over tag types, but this leads to heavy monomorphization. extract the common code. Reviewed By: aary Differential Revision: D27383671 fbshipit-source-id: e419579e4d9ab84b5107670bd1e94e1768dcebf4
-
- 02 Apr, 2021 7 commits
-
-
Yedidya Feldblum authored
Summary: No strict need for them to be functions. Differential Revision: D27484949 fbshipit-source-id: f0fbc91aa9940720bbd3b685b730acc314bf122d
-
Yedidya Feldblum authored
Reviewed By: philippv Differential Revision: D27535007 fbshipit-source-id: 384235553b18320fa9728740f7f1b83b4c8b0a1a
-
Yedidya Feldblum authored
Reviewed By: WillerZ Differential Revision: D27489039 fbshipit-source-id: 5d397a24fcb165b7ea25e32f0c81435bce474b04
-
Seth Hinze authored
Summary: Win32 does not support weak symbols. This means the linker will fail due to the unresolved symbol `__asan_region_is_poisoned` when ASAN is not available. Use `FOLLY_CREATE_EXTERN_ACCESSOR` macro when filtering for ASAN availability in `SanitizeAddress.cpp` to ensure the symbol `__asan_region_is_poisoned` is referenced only when ASAN is available. Reviewed By: yfeldblum, luciang Differential Revision: D27278826 fbshipit-source-id: 3c8efbfc687295c2fa70e3712402fd8dfe81bc45
-
Andrew Sun authored
Summary: NestedCommandLineApp works by performing two passes over the argument vector: 1. Treat the entire argv as a single command, ignoring subcommands. Consume all options that "match" a global flag here. 2. Find the first positional argument in argv and treat it as a subcommand, then re-parse everything after it as options to the subcommand. This allows constructs like `cli subcommand --subcommand-flag --global-flag`. However, as a side effect, if `subcommand-flag` happens to be even a prefix of a global flag name, boost "helpfully" matches it with the global flag in the first pass so that the subcommand never even sees it. Fixing the issue of a subcommand flag conflicting with a global flag would break backwards compatibility; however, we can at least add an option to disable prefix matching so that there would need to be an exact flag name collision for this scenario to occur. It may be possible to extend NestedCommandLineApp in the future to detect flag collisions as well, instead of silently associating arguments with the wrong flag. Reviewed By: yfeldblum Differential Revision: D27419341 fbshipit-source-id: 941c0769e16d40c87f96620155f0ab09927cef3d
-
Jason Rahman authored
Summary: If zero copy starts out enabled on a unencrypted connection, disable it when the SSL handshake begins. Otherwise, AsyncSocket will receive send notifications for buffers that it did not pre-register. Reviewed By: yfeldblum Differential Revision: D27145232 fbshipit-source-id: f07d006d095e1e6839eb2f4adb07d7c284786572
-
Yedidya Feldblum authored
Summary: A mechanism to make it easier conditionally to access possibly-defined names, which can be a bit tricky especially without `if constexpr`. Reviewed By: luciang Differential Revision: D27434753 fbshipit-source-id: 4c9aaebe89b354aa94f4f370c8fbdc8456b0e7f7
-