- 15 Dec, 2017 1 commit
-
-
Dan Melnic authored
Summary: We currently leak ptr entries due to a missing map erase call in AsyncSocket::releaseZeroCopyBuf. Also addZeroCopyBuf called when the bytesWritten == 0 will cause and extra id to be allocated. This will delay the deletion of the last IOBuf sent via zerocopy. The number of buffers can accumulate over time if the same bytesWritten == 0 situation is encountered. Found when running the nbd-server zero downtime upgrade during heavy fio traffic. Add an AsyncSocket::processZeroCopyWriteInProgress so we can drain the zerocopy msg error queue even after we set the ReadCallback to nullptr. Reviewed By: djwatson Differential Revision: D6552982 fbshipit-source-id: 3d2fdca84ec3b5fc46c3bed06c0c9ede66ed565a
-
- 14 Dec, 2017 8 commits
-
-
Chen Shen authored
Summary: When I was investigating the difference between glog/xlog I encountered this. Reviewed By: yfeldblum Differential Revision: D6572117 fbshipit-source-id: 4130deb6cfed7cfb7d2433cdab292481beb2469f
-
Yedidya Feldblum authored
Summary: [Folly] Use explicit memory order in `Baton::post`. Reviewed By: djwatson Differential Revision: D6502268 fbshipit-source-id: a379ea711f165e3645ac2127a49824f46225b80a
-
Kyle Nekritz authored
Summary: They belong here rather than AsyncTransportWrapper. Reviewed By: siyengar Differential Revision: D6568209 fbshipit-source-id: 0856dba0b2d527ae68d33942b28e2c485a5b1f46
-
Maged Michael authored
Summary: DynamicBoundedQueue supports: - Dynamic memory usage that grows and shrink in proportion to the number of elements in the queue. - Adjustable capacity that helps throttle pathological cases of producer-consumer imbalance that may lead to excessive memory usage. - The adjustable capacity can also help prevent deadlock by allowing users to temporarily increase capacity substantially to guarantee accommodating producer requests that cannot wait. - SPSC, SPMC, MPSC, MPMC variants. - Blocking and spinning-only variants. - Inter-operable non-waiting, timed until, timed for, and waiting variants of producer and consumer operations. - Optional variable element weights. Reviewed By: djwatson Differential Revision: D6462123 fbshipit-source-id: 5c7a7d88c3fa273211702af9ff78f6302afd2276
-
Maged Michael authored
Summary: Use alignas instead of FOLLY_ALIGNED Reviewed By: Orvid Differential Revision: D6554984 fbshipit-source-id: 5b11ac387faa137aa8dd0c35b6e9bb999cf0bf2d
-
Yedidya Feldblum authored
Summary: [Folly] Fix `AsyncSocketTest.WriteErrorCallbackBytesWritten`. Thanks to congestion, especially when the tests are run concurrently, the expectations in the test were too restrictive. If only 20KB are read, it is possible that only 20KB are acknowledged. The expectation was that if 20KB are read and the recv buffer and send buffer are both 8KB and 24KB are written then all 24KB are acknowledged, but congestion control disagrees. It is possible that any number of bytes are written to the send buffer, from 28KB up to 40KB. And we have to explicitly wait for 28KB to be written even to know that (otherwise we only know that 20KB are written). Differential Revision: D6550804 fbshipit-source-id: 100d086972c1526b909da0dbb6e609c144d7b17b
-
Yedidya Feldblum authored
Summary: [Folly] `constexpr_ceil`, an integral rounding-up util. Reviewed By: Orvid Differential Revision: D6558042 fbshipit-source-id: 6b42add9bf2e3605baf71391130c2a2c88cc4385
-
Yedidya Feldblum authored
Summary: [Folly] Move `max_align_v` and `max_align_t` to `folly/lang/Align.h`. And drop the macro `FOLLY_ALIGNED_MAX` - just use `alignas(max_align_v)` instead. Reviewed By: Orvid Differential Revision: D6554677 fbshipit-source-id: cacb335b141623506a41e95e0740613374279c6f
-
- 13 Dec, 2017 6 commits
-
-
Yedidya Feldblum authored
Summary: [Folly] Remove unused `#include <string.h>` from `folly/Portability.h`. Reviewed By: Orvid Differential Revision: D6557374 fbshipit-source-id: 369ef0b622dc057e882ed0f4ad25b47fa3f05100
-
Christopher Dykes authored
Summary: This is a hard requirement due to an upcoming change in Folly. The codemod was only run on files that referenced the `std::chrono` namespace with an unqualified `chrono` and also used both the `std` and `folly` namespaces. ``` fbgr -sl "[^:]chrono::" | xargs grep -l "using namespace std;" | xargs grep -l "using namespace folly;" | xargs sed -r -i 's/([^:])chrono::([a-z])/\1std::chrono::\2/g' ``` Reviewed By: yfeldblum Differential Revision: D6547864 fbshipit-source-id: 4a8230d311edbaa173722a09b2773e8d053fae7e
-
RcRonco authored
Summary: Closes https://github.com/facebook/folly/pull/721 Differential Revision: D6558163 Pulled By: yfeldblum fbshipit-source-id: ed03aa92b54c61f9980a4759da29910aa77d5db6
-
Dave Watson authored
Summary: This adds an RCU implementation, matching http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0461r1.pdf as closely as pratical. This implementation does not require thread registration or quiescence. Reviewed By: magedm Differential Revision: D6330631 fbshipit-source-id: 2c729f3a4c0f151cde5d9a599ecd2a2c20c7da55
-
Adam Simpkins authored
Summary: Update the comment describing the Logger class, and remove a `clang-format off` since recent versions of `clang-format` appear to do a good job formatting this macro. Reviewed By: yfeldblum Differential Revision: D6525996 fbshipit-source-id: 6abbb3740afb53feb2418ca890cd78af1eb5f7a2
-
Adam Simpkins authored
Summary: Add several new documents describing the behavior of the folly logging library. Reviewed By: yfeldblum Differential Revision: D6525997 fbshipit-source-id: 8ba2ff99c70c7566987b3da321526a16755e72bf
-
- 12 Dec, 2017 6 commits
-
-
Yedidya Feldblum authored
Summary: Switch to the `try_wait_for` and `try_wait_until` `Baton` APIs. Reviewed By: davidtgoldblatt Differential Revision: D6532103 fbshipit-source-id: aa3ce64152d167bb9c9cb1f266be0f9f8bd498f5
-
Andrii Nakryiko authored
Summary: It looks like not having offset/size/filename information is way more harmful, than storing filename just for the sake of this error message. Reviewed By: yfeldblum Differential Revision: D6536616 fbshipit-source-id: 469fbdf1deedd76ebd79cf98716c2c269cb10e4d
-
Yedidya Feldblum authored
Summary: [Folly] Assorted tweaks to `folly/String.h`. * Use `void_t` in the definition of `IsConvertible`. * Remove `AllConvertible`. Callers can use `StrictConjunction` instead. * Move the `static_assert`s from the header to the source file. Reviewed By: andrewjcg, ot Differential Revision: D6501515 fbshipit-source-id: 472ecf23bf7f06be211480b0aceea95f7e60dc21
-
Neel Goyal authored
Summary: In some cases, SSLContextManager seg faults if a cert and key do not match. This guards against that case when strictSSL = false, and throws a more useful error in the cases when SSL is required. Reviewed By: xybu Differential Revision: D6513964 fbshipit-source-id: 8e63a22b346fd3f2a30d558a3659ab6794c7a105
-
Yedidya Feldblum authored
Summary: [Folly] `folly::fibers::Baton` API consistency with `folly::Baton`. Specifically, the suite of `wait`, `try_wait`, `try_wait_for`, and `try_wait_until` members and member templates. Hold onto the `timed_wait` members for now, but mark them deprecated. Additionally, for consistency, offer main-context function params consistently for all `try_wait_for`, `try_wait_until`, and both variants of `timed_wait`. Reviewed By: andriigrynenko Differential Revision: D6531145 fbshipit-source-id: 960fba48716b12b0ef53262786eacab88d8b2375
-
Nick Terrell authored
Summary: Content size 0 as unknown is deprecated. See code comments for details. Reviewed By: felixhandte Differential Revision: D6521582 fbshipit-source-id: 876b94cc0123c1020b456cc8f4cd86997afe0619
-
- 10 Dec, 2017 4 commits
-
-
Yedidya Feldblum authored
Summary: [Folly] Remove multi-poster support from `Baton`. Code which needs multi-poster support may use `SaturatingSemaphore` instead. Reviewed By: magedm Differential Revision: D6529661 fbshipit-source-id: d9dc053ca984ef3a404e9361910b0044817d4905
-
Andrew Gallagher authored
Reviewed By: Orvid Differential Revision: D6387412 fbshipit-source-id: 4c1424ed4fa49e69885de8cd72e78169314fc502
-
Maged Michael authored
Summary: Remove include not needed after recent change Reviewed By: yfeldblum Differential Revision: D6529608 fbshipit-source-id: 904072084e180125d68bd1ef6e4dffb2939cd1eb
-
Yedidya Feldblum authored
Summary: [Folly] Fix signed integer overflow in `StaticTracepointTest.cpp`. It is undefined behavior and is caught by UBSAN in some test runs. Reviewed By: Orvid Differential Revision: D6528445 fbshipit-source-id: e4a199e9005b57bcd93c8c4b69f37ccb1e072bdf
-
- 09 Dec, 2017 3 commits
-
-
Yedidya Feldblum authored
Summary: [Folly] Split `Baton` wait methods into fast and slow paths. Force-inline the fast paths, and force-outline the slow paths. Reviewed By: magedm Differential Revision: D6501992 fbshipit-source-id: 611e26b3cfeef01eb8d3a3500ae3ebc26bee6e86
-
Yedidya Feldblum authored
Summary: [Folly] Fix UBSAN failure in `RangeTest.cpp` with `libstdc++-v4.9`. The implementation of `std::array` in `libstdc++-v4.9` has undefined behavior in the case of the zero-length array - dereferencing (but immediately taking the address again) of `nullptr`. This is fixed in `libstdc++-v5`. Reviewed By: ot Differential Revision: D6528614 fbshipit-source-id: 26be6bdc28d9e6dc6e6293a4d4ecffd769c01413
-
Yedidya Feldblum authored
Summary: As above. Thanks magedm for giving us this beautiful piece of equipment! Reviewed By: magedm Differential Revision: D6488661 fbshipit-source-id: 95aa9646ca1ea937bb1d055e9baa037896c3161e
-
- 08 Dec, 2017 4 commits
-
-
Maged Michael authored
Summary: - Add a template parameter, LgAlign, to control memory usage. The parameter is used in DynamicBoundedQueue. - Refactor code. Reviewed By: yfeldblum Differential Revision: D6508015 fbshipit-source-id: 6e17b1d8fd900595147dc4217e04d379a13fbdf8
-
Yedidya Feldblum authored
Summary: [Folly] Move `folly/Bits.h` to `folly/lang/`. Reviewed By: phoad, Orvid Differential Revision: D6495547 fbshipit-source-id: a93159321df8277f8a4b4f10a5e4e0fc58cb6022
-
Eric Niebler authored
Summary: If the folly::Function returns by const& and the wrapped function returns a prvalue, it is guaranteed to return a dangling reference. Prevent it. Reviewed By: yfeldblum, aary Differential Revision: D6487447 fbshipit-source-id: 61700b4688e29409eefa27f546b31ecac258cfdd
-
Adam Simpkins authored
Summary: Update string literals with escaped quotes and backslashes to use raw string literal syntax instead. Reviewed By: yfeldblum Differential Revision: D6501426 fbshipit-source-id: 557366f86b360596b13148d03fd33c7df5c3f890
-
- 07 Dec, 2017 8 commits
-
-
Maged Michael authored
Summary: Use SaturatingSemaphore instead of multi-poster and non-blocking Baton, in preparation for restoring Baton to being single-poster and with blocking wait(). Reviewed By: davidtgoldblatt Differential Revision: D6510619 fbshipit-source-id: eed87beabc1b698080b8e41c746d570d30804ce7
-
Yedidya Feldblum authored
Summary: [Folly] Fix crash in `exception_wrapper::get_exception<>`. When the contained object is unthrown and does not inherit `std::exception`, `get_exception` templated over a type that does not inherit `std::exception` must throw and catch internally and may then return a pointer to the internally thrown object, which has since been deallocated. Attempting to dereference that pointer is undefined behavior is correctly caught by ASAN as heap-use-after-free. Fix it by storing objects not inheriting `std::exception` using only the `std::exception_ptr` representation. As a downside, we no longer get the small-object optimization or the non-throwing optimization for objects which do not inherit `std::exception`. But this is not likely to be terribly concerning in practice. Reviewed By: ericniebler Differential Revision: D6504911 fbshipit-source-id: 0065de911733b5cab87be55e7e4e47f0a9c09140
-
Yedidya Feldblum authored
Summary: [Folly] Use simpler tags for ctor dispatch in `exception_wrapper`. The tags do not need to be `std::integral_constant`, but can just be arbitrary empty types. Also format the usage sites of the tags. Reviewed By: ericniebler Differential Revision: D6506417 fbshipit-source-id: 377359086d94fc1a8bf8eebf6f8b058ff544829f
-
Stepan Palamarchuk authored
Summary: glog actually tries to pull srtings from these pointers when the checks fail, which obfuscates the error Reviewed By: yfeldblum Differential Revision: D6506886 fbshipit-source-id: 0283e02aecaa248b84fca1433d3f29f92c37b2e6
-
Mehdi Bouaziz authored
Summary: deadcode Reviewed By: ddrcoder Differential Revision: D6498754 fbshipit-source-id: 9dda0ade6928d648b8938a06b185e430753f2318
-
Andrii Grynenko authored
Reviewed By: yfeldblum Differential Revision: D6503762 fbshipit-source-id: f82b88c401979761053004eadd2e4c6a74f05f9c
-
Adam Simpkins authored
Summary: This updates the LogHandlerConfig code to allow changing the settings on an existing log handler without listing all of its existing options from scratch. This also changes the syntax of the basic log handler configuration string to use a colon to separate the log handler name+type from the options list. In other words, rather than specifying `default=stream,stream=stderr,async=true` you now say `default=stream:stream=stderr,async=true`. The primary motivation for this change is to make it easy for users to switch the async setting for the default log handler on or off. Callers can now specify `default:async=true` to easily enable async mode on the default log handler without having to completely re-list the full settings for the default handler. Reviewed By: yfeldblum Differential Revision: D6494228 fbshipit-source-id: 52a296f800a5456f0c3aa10546298139c8db52fc
-
Adam Simpkins authored
Summary: Split FileHandlerFactory into separate FileHandlerFactory and StreamHandlerFactory classes, where FileHandlerFactory only handles logging to files by path name, and StreamHandlerFactory only supports logging to stdout or stderr. The primary motivation for this is to allow logging to stdout or stderr in some cases without allowing arbitrary files to be opened by FileHandlerFactory. This can be achieved now by registering StreamHandlerFactory but not FileHandlerFactory. This makes it safer to allow controlling logging configuration via command line flags even in setuid binaries. Reviewed By: yfeldblum Differential Revision: D6494226 fbshipit-source-id: a3ec371ca4266424d07dff20be18e6e13c057593
-