- 28 Apr, 2020 1 commit
-
-
Mingtao Yang authored
Summary: The test cert "test-cert.pem" is signed with a SHA1 based signature algorithm, and newer distros such as CentOS 8 will fail loading this certificate due to its default security policy. This diff regenerates the test certificates, following the old certificates names as closely as possible. I included the script to generate these in case they need to be changed in the future. Reviewed By: AjanthanAsogamoorthy Differential Revision: D21271202 fbshipit-source-id: de4227ae81dfffaf00f8d355e83936db6eb5fe31
-
- 27 Apr, 2020 3 commits
-
-
Adam Simpkins authored
Summary: Folly links explicitly links against boost statically on Windows. However, many downstream projects that use folly independently performed their own discovery of boost and normally used the default option of linking against it dynamically. This resulted in boost being listed twice on the link line on Windows for some downstream projects: both its static libraries and dynamic libraries would be present. This ends up causing linking failures due to duplicate definitions. This updates folly's installed CMake file to correctly call `find_dependency(Boost)` so that downstream projects don't need to perform their own independent discovery. This ensures that all downstream projects use a consistent method of linking against Boost. I updated many downstream projects to remove their explicit separate discovery, and rely only on this behavior from folly. I also added a configuration setting to allow explicitly selecting whether to link against boost statically at folly configure time. Reviewed By: wez Differential Revision: D21232164 fbshipit-source-id: 9ecc3ce988add48905252297e979403c42e7e148
-
Pranav Thulasiram Bhat authored
Summary: ## Why is this diff needed? This diff presents an annotation framework designed to address some of the issues we've had working with fibers in NodeAPI: - It's difficult to identify functions doing I/O. As a result, we've had I/Os happening sequentially in for loops. - It's difficult to tell if a function is running on fibers. This is especially hard in large code bases such as ours ## What does this diff do? The `Async<T>` type can be used as the return type of a function. This accomplishes a couple of things: - It indicates that this function should run on fibers and that a fiber can suspend in this function (or in one of it's children) - It forces calling functions to `await` the result of this function. When coupled with a good lint rule, this enforces annotations right to the top of the stack. Reviewed By: A5he Differential Revision: D21159049 fbshipit-source-id: ee922093b140b22d8e7a7587b87aa0e783055b6c
-
Zeyi (Rice) Fan authored
Reviewed By: wez Differential Revision: D21238976 fbshipit-source-id: 13a6def8d6c8d25057409956cc883589b205cd04
-
- 25 Apr, 2020 1 commit
-
-
Lewis Baker authored
Summary: Declaring this method noexcept was incorrect and could unnecessarily lead to program termination if one of the calls threw an exception. Reviewed By: yfeldblum Differential Revision: D21187354 fbshipit-source-id: 109a33d52659cdf42e5ced9e18be41ae4c3daf85
-
- 24 Apr, 2020 3 commits
-
-
Wez Furlong authored
Summary: I noticed that copytree was taking forever and realized that it wasn't issuing a prefetch call so I started looking in here; this commit teaches getdeps how to recognize and EdenFS repo on Windows but skips calling prefetch on Windows. Currently the prefetch implementation triggers some very slow processing in mercurial that is slower to start than just enumerating the files in the opensource build. It turned out that my original problem was just that my credentials had expired and we weren't surfacing that error on Windows yet. Reviewed By: simpkins Differential Revision: D20755905 fbshipit-source-id: 8d3695cdd1f04199d1d409895482b8c706285d5f
-
Eric Niebler authored
Summary: By and large, trying to test folly::coro with gcc-10's (very green) coroutines implementation was a failure, but it did turn up a couple of issues: * Friends of friends are not friends with gcc * -Wshadow picks up a few more instances of shadowing * `std::exchange` needs `#include <utility>`. Reviewed By: lewissbaker Differential Revision: D21190145 fbshipit-source-id: d3f3148baa26bb8a2c0c1954fc930fd8124672e1
-
Lukas Piatkowski authored
Summary: The configerator structs are used in many top level functions in Mononoke and are required in order to build all the code on github Reviewed By: ahornby Differential Revision: D21130546 fbshipit-source-id: 7f17d92173f5ecf7c3406ae4202359a0db8df84a
-
- 23 Apr, 2020 5 commits
-
-
Lucas Dobson-Defenbaugh authored
Summary: We're recommending collectAny as a replacement for collectAllSemiFutures :( Reviewed By: LeeHowes Differential Revision: D21197163 fbshipit-source-id: 0055e0feb5cc74a767370bc1dc9fe8e4d8dffcfc
-
Dan Melnic authored
Summary: Add support for variable number of addrs so we can send data to multiple destinations. (Note: this ignores all push blocking failures!) Reviewed By: kevin-vigor Differential Revision: D21032857 fbshipit-source-id: f73b98d44f5d7d92f3692dfddb9b1c76ebcc51c5
-
Andrew Doran authored
Summary: Disable TSAN instrumentation across StaticMetaBase::onThreadExit() to avoid a shortcoming in TSAN on Linux that produces sprurious failures. This was recently worked around by ignoring TSAN failures in ld-linux's _dl_deallocate_tsd() (D20597534), but that turns out to be insufficient, because other TSAN failures can occur on the TLS area after the dynamic linker has called free() on it. This diff backs out the change from D20597534, and works around the problem in a more direct & complete way. Reviewed By: yfeldblum Differential Revision: D20671620 fbshipit-source-id: 05a74e709b620391f18467c7a5e4d14dcf9f4a1e
-
Michael Park authored
Summary: Fixes a copy-paste mistake from the `collectAnySemiFuture` deprecation message. Reviewed By: Orvid Differential Revision: D21199692 fbshipit-source-id: e61b740ea238dcbd6ca8481e1ba578a5073fe7bf
-
Yedidya Feldblum authored
Summary: [Folly] Remove unused virtual inheritance in `AsyncSocket`. Differential Revision: D20966977 fbshipit-source-id: 502ab00438eebed0d8ebcf32ef602af50b05df47
-
- 22 Apr, 2020 3 commits
-
-
James Donald authored
Summary: Resolves these warnings: ``` folly\Singleton.cpp(102,1): warning: function declared 'noreturn' should not return [-Winvalid-noreturn] } ^ folly\Singleton.cpp(108,1): warning: function declared 'noreturn' should not return [-Winvalid-noreturn] } ^ folly\Singleton.cpp(126,1): warning: function declared 'noreturn' should not return [-Winvalid-noreturn] } ^ folly\Singleton.cpp(134,1): warning: function declared 'noreturn' should not return [-Winvalid-noreturn] } ^ folly\Singleton.cpp(145,1): warning: function declared 'noreturn' should not return [-Winvalid-noreturn] } ``` Reviewed By: mzlee, yfeldblum Differential Revision: D21130719 fbshipit-source-id: a0f198d69c4fde44f9a5250b6915e36b6ee68642
-
Chris Sarbora authored
Summary: Android doesn't expose `malloc_usable_size` below API-level 17. Correctly reflect this in folly-config.h, and then ensure that all code paths that use `malloc_usable_size` are unreachable when compiling without it. Reviewed By: yfeldblum Differential Revision: D20721326 fbshipit-source-id: d60b3caa1910dc2bf8ed0844177f5cb93a9fd067
-
Chris Sarbora authored
Summary: Relying on `erase()`, which must be able to move elements when erasing in front of other valid elements, causes compilation failures when trying to erase non-assignable elements at the end of the vector even though no elements actually need to be moved (and thus assigned) in that case. Here we help the compiler out and extract the destruction/resizing logic away from the moving logic. Reviewed By: yfeldblum, ot, mkatsevVR Differential Revision: D20718712 fbshipit-source-id: 51c4e6636bc33577494c0c10e95da5f92b58d4b6
-
- 21 Apr, 2020 4 commits
-
-
Mark Santaniello authored
Summary: I think swap() is nothrow as long as value_type is_nothrow_move_constructible. We already do this on the move c'tor. (Note: this ignores all push blocking failures!) Reviewed By: yfeldblum Differential Revision: D21136202 fbshipit-source-id: a5df772c5cafa592fce95bc5ce4149dc738a984c
-
Yang Zhang authored
Summary: `sizeof(symbolizer::FrameArray<kMaxStackTraceDepth>) = 17608`, it is quite big to put on stack. When using folly::fiber we usually only have a few KB of stack space, and will overflow when calling this function. By putting FrameArray on heap we can avoid this issue. Reviewed By: yfeldblum Differential Revision: D21150720 fbshipit-source-id: 7ae1d60d47b1aa3551bf96044aadad5cc21bf914
-
Thong Le authored
Summary: Resolve issue here: https://fb.workplace.com/groups/560979627394613/permalink/1763417530484144/ Differential Revision: D21147181 fbshipit-source-id: 82acb7eb910deff28a722026d1f43bae855f2942
-
Aditya Kumar authored
Differential Revision: D21059558 fbshipit-source-id: 588e6ec2a6fdaf70ea5c03810358c84dedf81911
-
- 20 Apr, 2020 1 commit
-
-
Andrew Krieger authored
Summary: This one DCHECK is the only thing keeping Range from being free of external deps. Lets make it not be a thing, so people are more inclined to pull in folly because Range is an easy gateway class to the rest of folly. Reviewed By: yfeldblum Differential Revision: D21121743 fbshipit-source-id: 2a54e94074135c951526c50d4bb63ebf2076a72f
-
- 18 Apr, 2020 2 commits
-
-
Jonathan Sailor authored
Summary: The README stated "folly requires gcc 5.1+ and a version of boost..." which some people might thing means that folly only supports gcc. Edit the README with more details about supported compilers and platforms. I tried to strike a balance between informative (FB uses folly on many platforms), conservative (the CMake build might not support all of them), and not mentioning specific versions (likely to get outdated.) Reviewed By: yfeldblum Differential Revision: D21093741 fbshipit-source-id: 3a541f22b30736201361d2a10d861d61bd278e47
-
Scott Wolchok authored
Summary: Unbreak -fno-exceptions support for this file. Reviewed By: yfeldblum Differential Revision: D21043400 fbshipit-source-id: aceea45c32d143c723ad6bae68a7403f14d7e0f2
-
- 17 Apr, 2020 1 commit
-
-
zhaoliwei authored
Summary: There are some duplicated unit test in TokenBucketTest.cpp. So this pr is intent to delete these unused unit test. Pull Request resolved: https://github.com/facebook/folly/pull/1354 Reviewed By: yfeldblum Differential Revision: D21061401 Pulled By: Orvid fbshipit-source-id: ea486fc244e2be68196ef015e020b8664bb3670a
-
- 16 Apr, 2020 4 commits
-
-
Andrew Huang authored
Summary: Repurpose the existing `folly::ssl::SSLSession` to be an abstraction for SSL sessions, with the internal implementation hidden. The intention is to soon move to using these abstracted sessions instead of directly using OpenSSL sessions. Reviewed By: yfeldblum, mingtaoy Differential Revision: D20143848 fbshipit-source-id: 01e175668c0afcf8b91d19a289368496717d3150
-
Maged Michael authored
Summary: Fix a bug in overwrite of null data. Null old data should be erased so that the insert of the new data can succeed. Reviewed By: davidtgoldblatt Differential Revision: D20908574 fbshipit-source-id: 6873d9c76daf1289f1d5b97b001c21473c41ea3f
-
Dan Melnic authored
Summary: Fix typo (Note: this ignores all push blocking failures!) Reviewed By: mokomull Differential Revision: D21056053 fbshipit-source-id: 3bf4295f9c6be1c50cdc64f6bbdf1b34cce6bece
-
Adam Simpkins authored
Summary: - Indicate that the EDEN_VERSION_OVERRIDE environment variable affects the build. - Exclude eden/config.py from the shipit path map, as this file is auto-generated in open source builds. - Include pexpect as a dependency, as this is needed for some of the integration tests. Reviewed By: genevievehelsel Differential Revision: D21000163 fbshipit-source-id: 8eec378f66487229c995f637c4787eae530c7845
-
- 14 Apr, 2020 1 commit
-
-
Misha Shneerson authored
Summary: We want to use observer API to correlate tasks across same Thrift request. `RequestContext::getRootId` is the thing for it. Reviewed By: yfeldblum Differential Revision: D20600485 fbshipit-source-id: 1a79bde0f6c5b3692b4fb3805c98f377b1b317c9
-
- 10 Apr, 2020 2 commits
-
-
Felix Handte authored
Summary: Use pre-existing cached local contexts, rather than creating our own. Reviewed By: bimbashrestha Differential Revision: D18890550 fbshipit-source-id: d53d0bdf35ebfcfa5dfb45da6b99a886022d5f8b
-
Dan Melnic authored
Summary: Fix PollIoBackend compile error (Note: this ignores all push blocking failures!) Reviewed By: yfeldblum, kevin-vigor Differential Revision: D20955224 fbshipit-source-id: a2c7a34d9129cb282d3652607e79dcee1ce1cc78
-
- 09 Apr, 2020 7 commits
-
-
Wez Furlong authored
Summary: This diff extracts the fbsource commit hash and the date of that commit and maintains that in place of just the commit hash that we were previously extracting. This data is exported into the environment that we pass on to builders so that it is available if they choose to use it. In a follow on diff I'll use this to default a version number in the watchman project. Reviewed By: fanzeyi Differential Revision: D20949666 fbshipit-source-id: dc12bffe5f0efc4297b15ba0140c4c67a23ab0fd
-
Kirk Shoop authored
Summary: Allow a T that derives from EnableMasterFromThis<T> to use masterLockFromThis() to get a non-owning shared_ptr to this and to use masterRefFromThis() to get a MasterPtrRef<> from this. Adds MasterPtr::cleanup() that returns SemiFuture<Unit>. join() just does a blocking wait on the SemiFuture returned from cleanup(). Allows a T to provide a T::cleanup() method that will be composed into the MasterPtr::cleanup() work. MasterPtr now uses SemiFuture<Unit> instead of Baton. This allows users of MasterPtr::cleanup() to compose cleanup work with other tasks. Andrii suggested that the cleanup feature be extracted out of MasterPtr Adds cleanup traits (that MasterPtr satisfies) and a Cleanup type that satisfies the cleanup traits and allows objects that are not heap-allocated to participate in structured concurrency by deriving from Cleanup. Reviewed By: andriigrynenko Differential Revision: D19584561 fbshipit-source-id: aa2d608effe613ec84b08f902a1c61561f3458bb
-
Yedidya Feldblum authored
Summary: [Folly] Simplify a few cases of writing a loop to test each element of the loop in small-locks and spin-locks unit-tests. Reviewed By: markisaa Differential Revision: D20936029 fbshipit-source-id: fd8a922d8e7b0a00ccd524c9905c641fd97a32f9
-
Lewis Baker authored
Add coroutine-frame memory allocation hooks to enable identifying async coroutine allocations in traces Summary: Customises the coroutine-frame allocation for all async coroutine types to call through the new `folly_coro_async_malloc` and `folly_coro_async_free` functions when heap-allocating coroutine frames. This should allow the identification of samples/traces that are calling into memory allocation for allocating coroutine frames and should enable better quantification of the CPU cycles and memory usage attributable to coroutine-frame allocations by filtering to samples that contain these functions in their stack-traces. Reviewed By: davidtgoldblatt Differential Revision: D20929042 fbshipit-source-id: a94691377b92fab42736942ec8c7316c82a4205d
-
Eric Niebler authored
Summary: Folly OSS does not list range-v3 as a dependency. As a result, test/RangeTest.cpp fails to compile because it tries to include a range-v3 header. This change gates the inclusion of the header with `__has_include`, making the dependency optional. Reviewed By: yfeldblum Differential Revision: D20839733 fbshipit-source-id: 2d5e9c17427a0913f40f1ee80e868e27080a68f0
-
Dan Melnic authored
Summary: Improve IOBuf::clone and IOBuf::cloneOne() perf Reviewed By: yfeldblum Differential Revision: D20882203 fbshipit-source-id: ce37c2bf3c0fbdbe3c316856dc431a0108e4b9bf
-
Dan Melnic authored
Summary: Fix folly::AsyncUDPSocket::gro_.value() check - GRO is enabled if the value is > 0 (Note: this ignores all push blocking failures!) Reviewed By: kevin-vigor Differential Revision: D20930544 fbshipit-source-id: 6672b65cafe3f9859f86ad34a6c3a2d65c2dc355
-
- 08 Apr, 2020 2 commits
-
-
Matthieu Martin authored
Summary: This prevents one acquire/release. Reviewed By: lewissbaker Differential Revision: D20924353 fbshipit-source-id: 8c5135bd2ebc03b736b1ea3dbb385e01218cffbc
-
Hasnain Lakhani authored
Summary: This is a follow up from D16427231; after testing the code in a similar situation on a mac (with `clang` and `libc++`) I realized there were still standards compliance issues. In that diff, the guarantee we provide is: ``` * - insert() single key variants, emplace(), and emplace_hint() only provide * the strong exception guarantee (unchanged when exception is thrown) when * std::is_nothrow_move_constructible<value_type>::value is true. ``` The implementation is eventually backed by `std::vector`. The guarantees provided by `std::vector` in the standard are slightly weaker (https://en.cppreference.com/w/cpp/container/vector/insert): ``` If an exception is thrown when inserting a single element at the end, and T is CopyInsertable or std::is_nothrow_move_constructible<T>::value is true, there are no effects (strong exception guarantee). ``` i.e. it only provides this safety guarantee if the element is inserted at the end, and that's exactly what the new test shows. After discussion with nbronson we discovered that `libstdc++` and `libc++` are using different techniques to handle the corner case of `v.insert(0, v[1])` for `insert(iter, value_type const&)`. `libstdc++` makes the copy into a temporary, and then moves it in, so it does in fact provide a stronger guarantee than necessary. `libc++` checks the address of the reference it is given, and if it is in the moved range it adjusts it (!) and then uses the copy assignment operator. This means on copy assignment exception there will be a moved-from element at the desired index. Section 26.2.1 para 11 says that `insert` or `emplace` will have no effects if an exception is thrown, unless otherwise specified. 26.3.11.5 is the `vector` modifiers, but that only mentions `insert`. That means we can fix this by merely switch our uses of `std::vector::insert` to `std::vector::emplace` inside `sorted_vector_map/set`. On `libstdc++` this should't have any effect, since both insert and emplace make a temporary copy for the non-end insertion case (in different but similar code paths). On `libc++` this will avoid the address-adjusting trick and use the temporary copy technique like in `libstdc++`. Reviewed By: yfeldblum Differential Revision: D20785383 fbshipit-source-id: 290c3c7c061dedf1660da9534f4b9cc338da6224
-