- 13 Dec, 2017 5 commits
-
-
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 10 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
-
Adam Simpkins authored
Summary: This moves some of the FileHandlerFactory code out into a new StandardLogHandlerFactory helper class. This will make it easier in the future to add new LogHandlerFactory implementations that create StandardLogHandler objects. In particular, I plan to use this soon to split FileHandlerFactory into two separate classes: one for writing to files on disk and a separate class for writing to stdout or stderr. Reviewed By: yfeldblum Differential Revision: D6494227 fbshipit-source-id: 52e24250d020d21a5395d2a68fa5bd40bb32fbd4
-
Louis Brandy authored
Summary: Move constructors are just like any other constructors. `this` is not in a valid state. You aren't supposed to destroy `this` before move-constructing it. This was detected by ubsan stress runs. UBSAN report: ``` [ RUN ] TemporaryFile.moveCtor folly/experimental/TestUtil.cpp:91:20: runtime error: load of value 3, which is not a valid value for type 'bool' [ failed: 1 ] ```` Reviewed By: yfeldblum Differential Revision: D6501500 fbshipit-source-id: 83bd0525ac2c1f5951f70f5596034bb6cb0ca985
-
- 06 Dec, 2017 4 commits
-
-
Yedidya Feldblum authored
Summary: [Folly] Rename `Baton::timed_wait` to `try_wait_for` and `try_wait_until`. For consistency with `std::timed_mutex`'s suite of `lock` member functions, as well as `SaturatingSemaphore` and others. Reviewed By: davidtgoldblatt Differential Revision: D6493714 fbshipit-source-id: 566c6d5dc0f6db4a0308cbd1972d53794f898383
-
Yedidya Feldblum authored
Summary: [Folly] Move `folly/Baton.h` to `folly/synchronization/`. Reviewed By: phoad, Orvid Differential Revision: D6490282 fbshipit-source-id: 66e2d25ffe3275d576b97b81c1987709000f6649
-
Yedidya Feldblum authored
Summary: [Folly] Use `boost::filesystem::current_path` in `ChangeToTempDir`. It will report failures noisily. Reviewed By: pixelb Differential Revision: D6493243 fbshipit-source-id: 423dc0e3a46781e9af42fee69060d31085f1a7c6
-
Liang Zhu authored
Reviewed By: yfeldblum Differential Revision: D6482348 fbshipit-source-id: 5b2d3c984b761a54d5a9eba48953c556ed22cda6
-
- 05 Dec, 2017 4 commits
-
-
Pingjia Shan authored
Summary: Upon debugging for the attached task, it appears to me the problem are in two places: . After a callback has been run, context_ wasn't reset . After a callback has been canceled, context_ wasn't reset In this diff: . Fix these two places. . Updating unit tests to cover these two cases. Reviewed By: yfeldblum Differential Revision: D6465788 fbshipit-source-id: 85b3b29dc80c9f3971c85f302385d41ded44fa0e
-
Aaryaman Sagar authored
Split get_default() into two for deferred default construction and added forwarding to speed up default element construction with rvalues Summary: As it stood currently folly::get_default() would unnecessarily construct a value into the third parameter, which was unnecessary in the code path where the element was found in the map. Also the default value can be forwarded to the return type in the code path where the element is not found and an rvalue parameter is passed as the default value Reviewed By: yfeldblum Differential Revision: D6390315 fbshipit-source-id: ef692b827d5a36751b4eb1e12042869e8fbba2e5
-
Dave Watson authored
Summary: Adds a bitreverse function to Bits.h AFAIK there is no great way to do this on x86, takes ~4-5ns. arm has a single instruction we can drop in in the future. Reviewed By: yfeldblum Differential Revision: D6459283 fbshipit-source-id: 129db196b2fac95386f601ae57843aa87523b915
-
Liang Zhu authored
Summary: In the latest stable kernel 4.14.3 as of 2017-12-04, unix domain socket does not support MSG_ERRQUEUE. So recvmsg(MSG_ERRQUEUE) will read application data from unix doamin socket as error message, which breaks the message flow in application. This diff disable setErrMessageCB for Unix Domain Socket. Both [[ https://github.com/torvalds/linux/blob/master/net/ipv4/tcp.c#L1782 | tcp_recvmsg ]] and [[ https://github.com/torvalds/linux/blob/master/net/ipv4/udp.c#L1571 | udp_recvmsg ]] will check flag MSG_ERRQUEUE and read from error queue. However, there is nothing about MSG_ERRQUEUE in [[ https://github.com/torvalds/linux/blob/master/net/unix/af_unix.c#L2249 | af_unix ]]. Reviewed By: yfeldblum Differential Revision: D6479465 fbshipit-source-id: eba2c8650e96466f2b361a42ddf90053d65f19bd
-