- 09 Aug, 2018 9 commits
-
-
Adam Simpkins authored
Summary: Update all of the RequestContext tests to use a test fixture that helps ensure they all start from a consistent state. Otherwise tests can end up running with RequestContxt settings left over from previous test functions, which can affect their results. In particular, several tests leave behind data for the "test" key. This causes subsequent calls to `setContextData()` to not actually set new data for this key, but to instead reset its value to null. This would cause many tests to segfault since they did not check if `getContextData()` returned null before dereferencing the result. Reviewed By: yfeldblum, A5he Differential Revision: D9233617 fbshipit-source-id: ce7a7c738592305f01b16fec7796505ea192ede4
-
Adam Simpkins authored
Summary: - Fix the variable name passed to FIND_PACKAGE_HANDLE_STANDARD_ARGS() so that it matches the module name (`FindGMock.cmake`). This makes sure that the failure is detected correctly if GMock is not found. - googletest depends on pthreads, so use `find_package(Threads)` and add `Threads::Threads` to the list of required library dependencies. Reviewed By: yfeldblum Differential Revision: D9212536 fbshipit-source-id: eae6220a2dbfe777bff1ac0ee0fb4df53de16955
-
Adam Simpkins authored
Summary: Use CMake's built-in FindThreads module rather than having our own custom FindPThread.cmake module. Reviewed By: yfeldblum Differential Revision: D9212535 fbshipit-source-id: 9a652c510cb310c18547d31bd8215dedd8532a4c
-
Adam Simpkins authored
Summary: Ubuntu 18.04 (and presumably other Debian-based distributions) install dwarf.h at /usr/include/libdwarf/dwarf.h. However other platforms like Mac typically install dwarf.h directly inside include/ without a libdwarf subdirectory. Commit e66fb34c previously changed the code to look only for "dwarf.h" to support Homebrew installations of dwarfutils on Mac, but accidentally broke finding dwarf.h on Ubuntu in the process. This change should hopefully work on both platforms. Fixes: #905 Reviewed By: yfeldblum Differential Revision: D9212428 fbshipit-source-id: a4520a47718a2da25e597ac7350344931ba21634
-
Yedidya Feldblum authored
Summary: [Folly] Import `Policy` members into `F14Table` to deduplicate repeated uses of `Policy::`. Reviewed By: shixiao Differential Revision: D9176546 fbshipit-source-id: bbd32a17cca7d38b3e5d55c1840353821f4e2ddc
-
Dan Melnic authored
Summary: Add thread cached ints benchmark Reviewed By: yfeldblum Differential Revision: D9212949 fbshipit-source-id: 552aab15e7421f74b5cec3ce4abd211ab3141153
-
Eric Niebler authored
Summary: Given an exception_wrapper `ew` holding a `std::runtime_error`, the following assertion fails: ``` try { ew.handle(); } catch( std::runtime_error const & ) { } catch( std::exception const & ) { assert(false); } ``` Reviewed By: simpkins Differential Revision: D9199924 fbshipit-source-id: b6f90ccf269a1b58f0dd07723451ff34cde1d529
-
Victor Zverovich authored
Summary: Move the definition of the `ZSTD_STATIC_LINKING_ONLY` and `ZDICT_STATIC_LINKING_ONLY` macros from code to the target to fix the modular build. It is needed because these macros affect the public API of `zstd.h`. Reviewed By: terrelln Differential Revision: D9189720 fbshipit-source-id: efacc1456803900fd65159a43cf1fba2daf15673
-
Fred Emmott authored
Summary: On fork, flush the secureRandom buffer, so that we don't share entropy between the parent and child. Reviewed By: ricklavoie Differential Revision: D9196474 fbshipit-source-id: 12ff8488d814466186df61328a5f1d4000beb27f
-
- 08 Aug, 2018 12 commits
-
-
Aaryaman Sagar authored
Summary: Print benchmark results as and when they complete instead of outputting the whole thing once at the end Reviewed By: djwatson, ot Differential Revision: D9177038 fbshipit-source-id: 54898b303771f214c21163cd87b11f8e2083cdf4
-
Sven Over authored
Summary: When passing a callable to `folly::via` that returns a SemiFuture, via should return a Future. The implementation does the correct thing but the declaration's return type is not correct. This diff fixes that. Reviewed By: yfeldblum Differential Revision: D9219041 fbshipit-source-id: e61544231e7846c713ff43394c3bf5d1aae18233
-
Lee Howes authored
Summary: Late change in D9175807 removed necessary temporaries. This caused a lifetime management problem for GCC. Reviewed By: Orvid Differential Revision: D9227937 fbshipit-source-id: d5fea8a98855c6302189a7dee8cd5862d13a63a3
-
Marshall Cline authored
Summary: folly::Future's map() functions create a std::vector<Future<...>>, then use push_back to populate that vector. This could result in reallocations. Avoid that by reserving proper space ahead of the push_backs. Reviewed By: yfeldblum Differential Revision: D9204713 fbshipit-source-id: 51d9154f483a47c6196a4d4d9d4af14e4eeab6e0
-
Caleb Marchent authored
Summary: autotools-based builds are being deprecated, but they lack the symbolizer library target. Reviewed By: yfeldblum Differential Revision: D9216312 fbshipit-source-id: 585ce3c43a0800823c7de4ece99b56a1af82bae4
-
Lee Howes authored
Summary: Overall plan to modify Future<T>::then to be r-value qualified and use Future<T>::thenTry or Future<T>::thenValue. The goal is to disambiguate folly::Future and to improve type and lifetime safety of Future and its methods. * Deprecate l-value qualified calls to Future<T>::then. * Make appropriate changes to folly to make this correct without local deprecation warnings. Reviewed By: yfeldblum Differential Revision: D9175807 fbshipit-source-id: 9dc9812270ca3fb800f3a56d3aef8ef3d1d209e6
-
Yedidya Feldblum authored
Summary: [Folly] Dead Code: `folly/experimental/symbolizer/ElfUtil.cpp`. Reviewed By: calebmarchent Differential Revision: D9218592 fbshipit-source-id: e231852c068eb797c7c3a4a3955fefc38e4be2fc
-
Caleb Marchent authored
Summary: Original commit changeset: 6b5faf000e5f Breaks builds on Ubuntu Bionic, effectivly undoing the work of D3878961. Note: both autotools and CMake builds incorrect on Bionic, its just that autotools build fails explicitly where CMake fails silently; failing to detect a correctly installed libdwarf headers. The difference being that CMake does not build symbolizer. Reviewed By: yfeldblum Differential Revision: D9194639 fbshipit-source-id: c6798a0672195a70ced4898535f2f932018224d5
-
Marc Celani authored
Summary: When merging centroids together, we recalculate the mean and weight. This can sometimes lead to inaccuracy due to floating point arithmetic. In a bad scenario, this can actually lead to the digest being unsorted, which triggers assertions in the code. To fix this, sort the digest at the end of merge. Since this is bounded to 100 elements that are mostly sorted, this appears to be cheap according to benchmarks. Reviewed By: yfeldblum Differential Revision: D9213936 fbshipit-source-id: 5a2978a1b759b70206aef57245bef193aed65efd
-
Tingzhe Zhou authored
Summary: Blocking algorithm: Push: 1. push 2. increase the PTicket number 3. put (PTicket << 1) to the corresponding place in futex array. 4. if the original futex value & 1 == 1, wake up () Pop: 1. increase the CTicket number 2. spin if the corresponding CTicket futex is not ready 3. set the right bit of the CTicket futex to 1, wait on it. 4. pop Add additional control to improve the accuracy: For the top several levels (top 0 - 3 levels by default), it does not arbitrarily insert any node in the middle of the list. Thus guaranteeing no later coming lower priorities can be insert at the top levels (pruning strategy still valid for the top four levels). For the bottom levels (start from level 7 by default), if insertion requires to hold parent + child locks, it traverses the parent list to check whether the parent list has lower priority nodes than the new node. If the condition holds, insert the new node to the parent and get the last node in the parent list and insert it to the child list. Reviewed By: magedm Differential Revision: D9094903 fbshipit-source-id: fa4d31fb0c21da746570029e0e3b4b3fbeaa2024
-
Matthieu Martin authored
Summary: This code is hot enough that this might matter. Though likely over-optimization. Reviewed By: djwatson Differential Revision: D9197636 fbshipit-source-id: d9e2a90410c03a73d1754d99c72967f5dcd96c0f
-
Matthieu Martin authored
Summary: Production data shows that it performs significantly worse under common RequestContext load (few elements, clang lto compiled). Reviewed By: djwatson Differential Revision: D9182929 fbshipit-source-id: 0c638268d9b6cd2451b48ccc4e228faf90f0e18e
-
- 07 Aug, 2018 10 commits
-
-
Alex Guzman authored
Summary: Currently, fbcode_builder assumes you're building code living in the facebook github org. If you try to do travis builds using a facebookincubator repo, an error occurs due to hard-coded assumptions about the org. This fixes that Reviewed By: knekritz Differential Revision: D9183307 fbshipit-source-id: 0a1ac399953485e84f0534cc0616765227088c80
-
Lee Howes authored
Summary: Overall plan to modify Future<T>::then to be r-value qualified and use Future<T>::thenTry or Future<T>::thenValue. The goal is to disambiguate folly::Future and to improve type and lifetime safety of Future and its methods. Add a std::move that was missed in the folly benchmark. Reviewed By: shixiao Differential Revision: D9197265 fbshipit-source-id: d02ab7b0dc22f6465910a80b2d0af1b54fb7bde7
-
Harsh Poddar authored
Summary: This update adds the name of the function which called the LOG() to the `LogMessage` object so that a custom formatter could use it to show method name with logs. Reviewed By: simpkins Differential Revision: D9071926 fbshipit-source-id: 9d5359d84cf2544371c6f1826f99d8b47a272dd1
-
Xiao Shi authored
Summary: Apparently certain Android NDK does not support numeric conversion functions of `basic_string`. Use folly/Conv instead. Changes generated by `%s/std::to_string/to<std::string>/g`. In addition, Android SDK's treatment of `long double` is inconsistent. Avoid that in the tests for now. Reviewed By: yfeldblum Differential Revision: D9196009 fbshipit-source-id: 54a32c426a4beb6a0e2d7f95d6b30bf6d7cc67cf
-
Misha Shneerson authored
Summary: When we have a single thread handling both connections and requests, we end up call the accept callback on the same thread. The code handling the incoming connections does intend to short-circuit such connection and not place them on EventBase's queue but it only checks only whether there is no EventBase registerd for the accept callback. However, by default, we are registering an EventBase for this callback so this short-circuit falls short (yay puns). Reviewed By: djwatson Differential Revision: D8986246 fbshipit-source-id: 45b817669ae4fd908b39c93ae5b82bb9a14cc2ed
-
Dave Watson authored
Summary: It's only two stores, but for move that ends up being a large percentage of the work it has to do. Add initializers in the move constructor, so that we don't both default-initialize and then swap() inline. Reviewed By: yfeldblum Differential Revision: D8678422 fbshipit-source-id: 71b574145182ad3a4a3e9d0d824d83abe65fb6fa
-
Marc Celani authored
Summary: The algorithm in the TDigest paper does not handle weird outliers very well. This diff changes the clamp logic to clamp between the prev and next centroids rather than min_ and max_. This gives much better results. Reviewed By: yfeldblum Differential Revision: D9192686 fbshipit-source-id: 171a7b7db5552802f91e6e95bb541a1b03c8821d
-
Victor Zverovich authored
Summary: Add a missing include in `folly/detail/FingerprintPolynomial.h` to fix the modular build. Reviewed By: andrewjcg Differential Revision: D9182707 fbshipit-source-id: c498b10bd02f6528a62fce8145521a97755d6496
-
Matthieu Martin authored
Summary: We have a surprisingly high number of unrelated dependencies on those 2 imports Reviewed By: djwatson Differential Revision: D9155350 fbshipit-source-id: e85e42934af8378cdc0db909d8a6afacb504df8f
-
Andrii Grynenko authored
Reviewed By: yfeldblum, palmtenor Differential Revision: D9144908 fbshipit-source-id: 6201a4beaf1e2d2cf16c8e3986097a6e8e47c6f3
-
- 06 Aug, 2018 2 commits
-
-
Kimberly Jinxia Lim authored
Summary: Per title Reviewed By: mingtaoy Differential Revision: D9159614 fbshipit-source-id: d26320587ae55b4415185206a7a6a5f8f38ff428
-
Joe Loser authored
Summary: - Several files have the executable bit set and do not need to. Pull Request resolved: https://github.com/facebook/folly/pull/904 Differential Revision: D9177526 Pulled By: yfeldblum fbshipit-source-id: 5dd5d5cfca5b184b42de4db4a052daaadfef2496
-
- 05 Aug, 2018 3 commits
-
-
Joe Loser authored
Summary: Resubmitting as https://github.com/facebook/folly/pull/743 failed internal builds according to yfeldblum Edit: as pointed out in the conversation below, this check needs to be gated for Boost versions [1.59, 1.64] as Boost 1.65 removed this method. Closes https://github.com/facebook/folly/pull/745 Reviewed By: Orvid Differential Revision: D6853821 Pulled By: yfeldblum fbshipit-source-id: 2e0c8f425055ee82c317146c4c836c28f7130e9b
-
Drogon authored
Summary: Replace `folly/Histogram.h` by `folly/stats/Histogram.h`. Use `auto` to declare type of `getNumBuckets`. Pull Request resolved: https://github.com/facebook/folly/pull/892 Reviewed By: aary Differential Revision: D9043331 Pulled By: yfeldblum fbshipit-source-id: 51dc6164f78ab72b947327e31f198a33a56c5fc4
-
Joe Loser authored
Summary: Problem: - There was a bug in a much older version of MSVC relating to accessing functions in an anonymous namespace with the workaround being to have an extra anonymous namespace. Solution: - Remove the workaround as the MSVC versions that Folly now targets (MSVC 2015 and MSVC 2017) should not have this bug. Pull Request resolved: https://github.com/facebook/folly/pull/898 Reviewed By: aary Differential Revision: D9176601 Pulled By: yfeldblum fbshipit-source-id: 7db87d28f8968eb5b3ff9d9375777f997b060a59
-
- 04 Aug, 2018 1 commit
-
-
Xiao Shi authored
Summary: According to https://github.com/pytorch/pytorch/pull/6697, ARM64 clang from the Android SDK does not define the newer `__ARM_NEON` macro (specified in the ARM C language extensions 2.1: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ihi0053d/index.html), but rather, it uses `__ARM_NEON__`. Portability should check for both until full deprecation? Reviewed By: nbronson Differential Revision: D9163276 fbshipit-source-id: db6407f85b21b0ad3e4d564c73ef3ca5d8a16c2f
-
- 03 Aug, 2018 3 commits
-
-
Subodh Iyengar authored
Summary: Add some missing headers required for other oss projects. These were not synced to the makefile. Reviewed By: shixiao Differential Revision: D9161271 fbshipit-source-id: 283042c35ac9f78fef24348e0d78b26ab8f2eeb8
-
Nathan Bronson authored
Summary: On architectures with SSE2 but not AVX2, the _mm_set1_epi8 intrinsic at the core of F14Table::findImpl expands to multiple instructions. One of those is a MOVD of either 4 or 8 byte width. Only the bottom byte of that move actually affects the result, but if a 1-byte needle has been spilled then this will be a 4 byte load. GCC 5.5 has been observed to reload (or perhaps fuse a reload and a narrow) needle using a MOVZX with a 1 byte load in parallel to the MOVD. This combination causes a failure of store-to-load forwarding, which has a big performance penalty (60 nanoseconds per find on a microbenchmark). Keeping needle >= 4 bytes avoids the problem and also happens to result in slightly more compact code. Reviewed By: yfeldblum Differential Revision: D9149727 fbshipit-source-id: 9e957207c23914da317e763eb944bf7dd43a5c51
-
yenshan98 authored
Summary: Change "If advanced debugging functionality is required" to "If advanced debugging functionality is required, use:" for consistency in README.md and to be more reader friendly. Pull Request resolved: https://github.com/facebook/folly/pull/894 Reviewed By: shixiao Differential Revision: D9094182 Pulled By: yfeldblum fbshipit-source-id: 147d436aaee291104b67eab1e549554696740907
-