- 06 May, 2020 6 commits
-
-
Adam Simpkins authored
Summary: Remove the `HANGING` tag from this test, so that it is run by default in the CMake build. Differential Revision: D21367512 fbshipit-source-id: 4bb707c83005ee8cd39ed2ce6b82b7f0c53f2c88
-
Adam Simpkins authored
Summary: This puts the `writeFileAtomic()` function behind and `#ifndef _WIN32` check, to disable it on Windows. While this function currently compiles on Windows, it does not behave correctly: it often fails with "Permission denied" errors when trying to use folly's emulated `fchmod()` function. Additionally, even the `fchmod()` succeeds (or is skipped) it fails if the destination path already exists, as `rename()` on Windows does not allow replacing an existing file. While we could attempt to replace the existing file, doing so would not be atomic. We might be able to achieve this with transactional NTFS features if the underlying file system is NTFS, but according to Microsoft these APIs are discouraged and may be removed in future versions of Windows. Therefore for now simply disable `writeFileAtomic()` on Windows. Differential Revision: D21367511 fbshipit-source-id: 50a5a1004feacc8bdb0a24421bea339962e1d546
-
Adam Simpkins authored
Summary: Add a CMakeLists.txt file to build the logging example program in CMake builds. This also disables the `AsyncFileWriter.fork` test on Windows, since `fork()` isn't available on Windows. Reviewed By: yfeldblum Differential Revision: D21332968 fbshipit-source-id: b578df92576e79d34b7fe2bf79dc8f30e0fd6d6b
-
Adam Simpkins authored
Summary: D8941725 changed the default log level from WARNING to INFO. This updates the comments in the example logging program to reflect that. Reviewed By: yfeldblum Differential Revision: D21332969 fbshipit-source-id: 88b206bf4dc891d8868a34ea02d91cc79b7c5c48
-
Wez Furlong authored
Summary: D21364132 accidentally broke this; we can't run the fetcher for projects for which we pulled the build out of cache, because there is no source to update in that case. This commit adjusts the logic so that we write out a marker file to indicate that we installed a build from cache and to look for that file being present to gate the new update logic. Reviewed By: lnicco Differential Revision: D21419122 fbshipit-source-id: 304670848add22531d88549d66f22c40ff255140
-
Dan Melnic authored
Summary: Return 0 from PollIoBackend::eb_event_add if the event type is not set Reviewed By: danobi Differential Revision: D21416811 fbshipit-source-id: 5825e473dca06d33017785e4d73947aade5f554c
-
- 05 May, 2020 18 commits
-
-
Maged Michael authored
Summary: Add warnings for pathological cases: - Too large retired lists - Thread cache overflow Move the warning for executor backlog to a separate function for clearer profiling. Reviewed By: davidtgoldblatt Differential Revision: D21314798 fbshipit-source-id: e07d6182309a0940adbdf76774a9c44fb1aa200c
-
Andrew Huang authored
Summary: Giving SSLContext ownership over the new session callback attached to SSL_CTX, so that it may do additional work with the new session (i.e. forward the session to its corresponding abstracted SSLSession). Reviewed By: yfeldblum Differential Revision: D21021333 fbshipit-source-id: f1dc8bd17150d45498ae1c22ef4eed1d2ca00c01
-
Andrew Huang authored
Summary: Adding SSLContext members to SSL_CTX ex data to access them inside callbacks attached to SSL_CTX (e.g. session callbacks) Reviewed By: yfeldblum, mingtaoy Differential Revision: D21021353 fbshipit-source-id: 6aa3995f7d719ca7e87bad798876a92dd5765b86
-
Lewis Baker authored
Summary: Clarify that the RequestContext is captured at the time the coroutine is started (e.g. due to co_awaiting it or calling .start()) rather than at the time the coroutine is called. Reviewed By: andriigrynenko Differential Revision: D21353947 fbshipit-source-id: 40ec7b25d84e96a611a1f63b6184a0d6a016948d
-
Shannon Zhu authored
Summary: Migrating buck integration to use configurations, which is more performant and is the primary supported way to run Pyre. Mypy is no longer supported at Facebook, so mypy buck integration is covered in this migration as well. Reviewed By: grievejia Differential Revision: D21398810 fbshipit-source-id: 12c0cd395e243703f4380b31527d0c202d58cec2
-
Adam Simpkins authored
Summary: On Windows, implement `readvFull()` and `writevFull()` by calling `read()` and `write()` repeatedly, rather than `readv()` and `writev()`. Windows does not provide native implementations of `readv()` and `writev()`, so the code was previously using implementations provided by folly in `folly/portability/SysUio.cpp`. The folly implementations attempted to lock the file to provide similar atomicity guarantees that `readv()` and `writev()` provide on POSIX. However, callers of `readvFull()` and `writevFull()` don't care about this atomicity (since they are willing to do multiple `readv()` and `writev()` calls if necessary). Therefore this locking behavior is not needed. Locking in this case is undesirable because it adds extra overhead, and fails in some cases. For instance, attempting to lock stderr blocks for 9 seconds before eventually failing. Differential Revision: D21367446 fbshipit-source-id: b2ae3c9c5da977402336c750d3d21ba9825527d9
-
Dan Melnic authored
Summary: Use zerocopy only if all the IOBufs in the chain have a SharedInfo Reviewed By: knekritz Differential Revision: D21342852 fbshipit-source-id: 458c32ef336b76ed0dc226ea670b7c04c1427bee
-
Andrew Huang authored
Summary: Add session resumption functionality in AsyncSSLSocket for the new abstracted SSLSession. Add logic to resume sessions correctly no matter which API is used, allowing for a piecewise transition to using the abstracted SSLSession. Reviewed By: mingtaoy Differential Revision: D20600380 fbshipit-source-id: bb81d5be95ccaa6486a7431391676f3e5c0b5b8e
-
Nate Stedman authored
Summary: I temporarily enabled Clang's `-Wdocumentation` flag, which reports things like using an `param` for a parameter that doesn't exist. [Full explanation with examples here](https://clang.llvm.org/docs/DiagnosticsReference.html#wdocumentation). Reviewed By: yfeldblum Differential Revision: D21396362 fbshipit-source-id: d7b34bc14af7bb1b0901a8f195c02674eb587fbc
-
Lukas Piatkowski authored
Summary: The oss jobs are causing problems to the developers now, lets disable them temporarily. Reviewed By: StanislavGlebik Differential Revision: D21400898 fbshipit-source-id: f7a3567056633d9eef98a8d05a37cd029c9e506c
-
Xavier Deguillard authored
Summary: While compiling EdenFS on Windows, for every single file being compiled, cl.exe complains that 2 incompatible /std option are being passed in on the command line, a c++latest, and a c++17. The former is added by this file, while the later is added by cmake via CMAKE_CXX_STANDARD. I'm not exactly sure why the default is set to c++latest, but it's guaranteed to always force cl.exe to generate a warning, as it simply cannot be set via CMAKE_CXX_STANDARD. A better fix to this would be to set CMAKE_CXX_STANDARD to 17, but since folly still supports cmake 3.0, that didn't know about c++17, this can't be done. Reviewed By: yfeldblum Differential Revision: D21392360 fbshipit-source-id: fc0e29ed89adf0a2c0b0193e7bd5f033463ed376
-
Ilya Maykov authored
Summary: Add support for detecting x86_64 vectorized AES (VAES) and vectorized carry-less multiplication (VPCLMULQDQ) CPU flags. Reviewed By: yfeldblum Differential Revision: D21271564 fbshipit-source-id: 08be20c07d6dfb562b8a0c1e86b77a9a416445fb
-
Wez Furlong authored
Summary: When the commit hash changed in fbsource, we would correctly decide that we'd need to rebuild first-party projects but we would incorrectly skip running the fetcher.update method. This would mean that we'd not perform the shipit run and that our shipit tree would diverge from the source tree. This commit resolves this by performing the fetcher.update but ignoring the source update status in this case. Reviewed By: xavierd Differential Revision: D21364131 fbshipit-source-id: b4001e549c7d3f27aa4a21b19893c9bb7c0f6d1f
-
Wez Furlong authored
Summary: We didn't do a great job of recognizing that we'd need to build a project when one of its dependencies had changed: we relied chiefly on the dependency hash for this and could fail to handle changes in individual source files. This commit helps to improve this situation by checking to see if any installed files in the dependencies of a manifest are newer than the most recent built time of a given manifest. If so, we'll trigger a build. We try to be reasonably smart about deciding when to trigger a cmake reconfigure if it looks like cmake files in the deps have been changed. Reviewed By: xavierd Differential Revision: D21364132 fbshipit-source-id: 7534496e10d1f532aa9cf865900ace84a8785327
-
Wez Furlong authored
Summary: Only run cmake reconfigure for .cmake, .cmake.in and CMakeLists.txt files changes. Previously we would reconfigure for any change to a file with a path that matched `cmake` which could result in false positives in cases where you may be iterating on .py or .c files in shared cmake directories. This also reclassifies non-cmake files under fbcode_builder/CMake as source files so that we run cmake for those; previously they would cause a reconfigure and build, now they just cause a build. Reviewed By: xavierd Differential Revision: D21364133 fbshipit-source-id: a1231f657d6c6056b269656c677d3449d8715cf6
-
Wez Furlong authored
Summary: Our linter really wants to include formatting changes unrelated to my diff stack. This is a formatting only change to avoid clouding my diffs; no functional effect. Reviewed By: xavierd Differential Revision: D21364519 fbshipit-source-id: 7670dd4154e788f593f256aabdfdeef6d17aeec4
-
Adam Simpkins authored
Summary: Previously getdeps would remove the entire top-level `CMakeFiles` directory from the build output when it wanted to invalidate the CMake cache. This directory is used to keep all of the compiled object files for any libraries or executables defined in the top-level CMakeLists.txt file. Blowing away this directory forces all of these sources to be re-compiled, even if this was not necessary. This is particularly problematic for folly, which compiles all of its source files via rules in the top-level CMakeLists.txt target file. I did have the code still blow away the CMake error and output logs in this directory: in the past I have seen situations where CMake would not update these files on new CMake runs if they already existed. Reviewed By: wez Differential Revision: D21360668 fbshipit-source-id: 6fcd1a8e371d756114fbab60d8636be8cd5f8978
-
Adam Simpkins authored
Summary: Update the manifest file for folly to indicate a dependency on lz4. folly does not require lz4 be available, but it will use it if it is found at configure time. getdeps is unfortunately not strict about providing projects only with the dependencies that they require at build time. This causes it to sometimes make lz4 available to folly (if you are also building another project that requires lz4), and sometimes not. This ends up causing changes in folly-config.h depending on which projects you are building, forcing all of the folly sources to be recompiled. In the future we perhaps should update getdeps to consistently only pass in include directories for dependencies actually listed in the manifest file. However, specifying that folly depends on lz4 also works to mitigate this particular issue for now, and it is also generally desirable to build folly with lz4 support. Reviewed By: wez Differential Revision: D21359995 fbshipit-source-id: aaf61671b7750d6c47e3613c732d220b3311b5ba
-
- 04 May, 2020 2 commits
-
-
Yedidya Feldblum authored
Summary: [Folly] `c_array`, a container for returning C arrays from `constexpr` functions. May be used until C++17 may be assumed, since C++17 specifies `constexpr` member functions of `std::array` which make `std::array` suitable for the purpose and a better choice since it can house zero-sized arrays. Reviewed By: markisaa Differential Revision: D21382680 fbshipit-source-id: 56a6528bb05988c1f1c8916f9267575783dc6276
-
Misha Shneerson authored
Summary: fix D21371986's sadness (SEGV for `folly::make_exception<TException>().class_name()`) Reviewed By: yfeldblum Differential Revision: D21373766 fbshipit-source-id: 0dd951fd9393e73c5c38670167312c3d2e619fb5
-
- 01 May, 2020 2 commits
-
-
Andrew Doran authored
Summary: Sorry about the churn (& time spent on this), but this backs out the change in D20671620. Despite best efforts it seems I've missed something and the issue runs deeper than TSAN observing thread exit. My change has possibly only altered the timing of events, and has exposed another related failure during testpilot runs that didn't occur before, so I think it's best to return to baseline. Reviewed By: yfeldblum Differential Revision: D21310561 fbshipit-source-id: 369865f185415123ea8fddf6007115b87ea8fe82
-
Wez Furlong authored
Summary: In the initial stages of the windows port we had problems building rocksdb on windows, so we disabled it. These days we're able to build it and detect it--we even require it in the cmake code, but hadn't gotten around to telling the rest of the code that we can use it. This commit re-enables it in the build but leaves sqlite as the default engine until we're able to perform some benchmarking. Rocksdb itself has some build issues on Windows; it doesn't use cmake to locate dependencies, so even though we built snappy it doesn't know how to find it without modifying the source: https://github.com/facebook/rocksdb/blob/master/thirdparty.inc#L4 For that reason, we disable the use of Snappy in the Windows build. However, in the version of rocksdb that we were using, it would default to trying to use Snappy even though it wasn't compiled in and throw an exception. I've upgraded to a newer version of rocksdb that will simply not use compression if no compression was enabled at build time. Given that we mostly store relatively small objects, I'm assuming that the lack of compression is fine for now. Reviewed By: xavierd Differential Revision: D21319896 fbshipit-source-id: 2a2d06d4bd5382706e9220f9b4a2de99dc18311d
-
- 30 Apr, 2020 9 commits
-
-
Dan Melnic authored
Summary: Add support for io_uring based async read/recvmsg (Note: this ignores all push blocking failures!) Reviewed By: kevin-vigor Differential Revision: D21208891 fbshipit-source-id: 21b3b5e0f201e982ecb50a284d03ab53413ec3e3
-
Adam Simpkins authored
Summary: Upgrade to the 1.10.0 release. This includes some new features like the `GTEST_SKIP()` macro. Reviewed By: genevievehelsel Differential Revision: D21309360 fbshipit-source-id: 163db628fc99aaa786aeb207f35c7d6295cb5e25
-
Adam Simpkins authored
Summary: Update the generated `run_cmake.py` script to tell ctest to print the test output on failure. Also pass in a `-j` flag to run tests in parallel by default. These flags are already passed in by default when running `getdeps.py test`; this simply updates this developer utility script to do the same. Reviewed By: wez Differential Revision: D21307806 fbshipit-source-id: 42045b0f9362494042c79bc946a1004ff8ad98b6
-
Pranav Thulasiram Bhat authored
Summary: Use template parameter packing in the constructor to make the implicit constructor usable for the uniform intialization of container types. We want the return syntax to be unchanged to the extent possible when annotating functions. Reviewed By: A5he Differential Revision: D21290083 fbshipit-source-id: 140bbaf987cdfd673046e92dd263b5180c8e9daa
-
Dan Melnic authored
Summary: Add DecoratedAsyncTransportWrapper zerocopy support (Note: this ignores all push blocking failures!) Reviewed By: mingtaoy Differential Revision: D21317312 fbshipit-source-id: 9a33402bbea5ab975231d812febe48ac2517ebe0
-
Yedidya Feldblum authored
Summary: [Folly] `MacAddress` updater and factory suite for parsing string and binary representations and throwing or returning unexpected on parse failures. Differential Revision: D21273907 fbshipit-source-id: 664cd1980cb12f3352eecf0e25671dca04c4a8a0
-
Yang Chi authored
Summary: otherwise the one in Mock doesn't work Reviewed By: yfeldblum Differential Revision: D21264567 fbshipit-source-id: c73e6bac1f0293edb67355ee88b6c2ec1b9684fd
-
Wez Furlong authored
Summary: On Linux the debug info sections in projects downstream from folly and thrift are huge due to a lot of C++ template usage. We build in RelWithDebInfo mode as that is most useful when debugging locally and because the build times are long, but most casual consumers of the binaries via GH actions really don't care about debug info, and this should save ~180MB of size in (for example) the watchman executables. Pull Request resolved: https://github.com/facebook/watchman/pull/809 Refs: https://github.com/facebook/watchman/issues/804 Test Plan: Review the artifact size on the linux build in this PR (see https://github.com/facebook/watchman/actions/runs/91688952) and confirm that it is a bit smaller than 180MB; now under 3 MB. Reviewed By: simpkins Differential Revision: D21318302 Pulled By: wez fbshipit-source-id: f78bc5e735dd78771e0604abae64c0a23cf9158d
-
Wez Furlong authored
Summary: The mismatched project output settings were causing the dyndeps fixup to fail to find any objects and thus none of the artifacts are populated for posix platforms. Pull Request resolved: https://github.com/facebook/watchman/pull/808 Test Plan: The PR published artifacts to: * https://github.com/facebook/watchman/actions/runs/91617994 * https://github.com/facebook/watchman/actions/runs/91617996 * https://github.com/facebook/watchman/actions/runs/91617997 Reviewed By: simpkins Differential Revision: D21315090 Pulled By: wez fbshipit-source-id: 60461809f55e73119f7206e3f392d5b237722f85
-
- 29 Apr, 2020 3 commits
-
-
Wez Furlong authored
Summary: Rather than have a single main.yml file containing all off the different builds, split that up so that we have one file per build environment (linux, mac, windows). This has a couple of advantages: * It is quicker to see the status of just one of the platforms * Artifact collection for one platform is not blocked pending completion of the builds for all systems * It's a little easier to understand what is happening for a single platform To support having multiple files I've changed the output-file option to be an output-dir. I've included the rm of main.yml in this commit. Once this gets imported back to the FB internal system I'll amend in an update to the helper script that updates all of our opensource builds and run and amend that. Pull Request resolved: https://github.com/facebook/folly/pull/1360 Test Plan: the GH action status on this PR should show three different actions running, one for each platform. I updated and ran `fbcode/opensource/fbcode_builder/getdeps/facebook/update-all-github-actions.sh` to regenerate all the actions files for FB. Reviewed By: yfeldblum Differential Revision: D21310991 Pulled By: wez fbshipit-source-id: 604ef652c8f746781a4b410c6b996cdee4524e0d
-
Wez Furlong authored
Summary: This commit resolves an issue with our zipapp executables on Windows that meant that the only reliable way to start them was to use the fully path to the executable. The root cause is that the __wargv array is produced by parsing the process command line into an array, and if you ran `watchman-wait -h` __wargv[0] would have `watchman-wait` rather than the fully qualified path to the executable that the zipapp plumbing requires. The fix is to ask the system for the fully qualified path and ensure that that gets set as both argv[0] AND argv[1]. Reviewed By: xavierd Differential Revision: D21190350 fbshipit-source-id: eeb95084592d30a028a93b2b03877f8cc6c72729
-
Wez Furlong authored
Summary: The environment changed since I tested D20740410 and now it appears that we'll need to re-export a versioned variable in order for cmake to detect boost on the GH actions hosts. Pull Request resolved: https://github.com/facebook/folly/pull/1359 Test Plan: the GH actions status of this diff. The workflow was updated via: ``` python3 build/fbcode_builder/getdeps.py generate-github-actions folly --output-file .github/workflows/main.yml ``` Reviewed By: yfeldblum Differential Revision: D21307640 Pulled By: yfeldblum fbshipit-source-id: 1555cbcade822775379cd9054be37fdbc17b4d93
-