1. 28 Jan, 2021 5 commits
    • Lee Howes's avatar
      Privately expose DefaultCPUExecutor as a form of InlineExecutor · cbb8cd2a
      Lee Howes authored
      Summary: DefaultCPUExecutor is the same as InlineExecutor, but hidden to avoid instantiating it to allow filtering on type, primarily in coro::task.
      
      Reviewed By: mpark, terrelln
      
      Differential Revision: D26077566
      
      fbshipit-source-id: 06704134f2446727cbb9f093df0b1954b46d2e49
      cbb8cd2a
    • Pranjal Raihan's avatar
      Fix MicroLock data storage when it is not word/half-word aligned · f60b081a
      Pranjal Raihan authored
      Summary:
      The current data storage API code assumes that the MicroLock is 4-byte aligned and that the lock lives in the lowest byte of `word()`. This assumption is incorrect (see added test). We should instead rely on `baseShift()`.
      
      This API is only used for `folly::compact_once_flag` which is new so low chance something broke.
      
      Reviewed By: andriigrynenko, davidtgoldblatt
      
      Differential Revision: D26091484
      
      fbshipit-source-id: c6e6e9aa7a963cada16e0ef7783fcc6bf6d2aed6
      f60b081a
    • Pranjal Raihan's avatar
      Disable MSAN for MicroLock functions · db4e040d
      Pranjal Raihan authored
      Summary: Even though `folly::MicroLock` is 1 byte, `detail::Futex<>` (aka `std::atomic<uint32_t>`) operates on 4 bytes. So 3 bytes are accessed but not used in any way. So we need to disable memory sanitizer.
      
      Reviewed By: andriigrynenko
      
      Differential Revision: D26082888
      
      fbshipit-source-id: fe585b60c96f48c02df69d182bd75a8eccde2a42
      db4e040d
    • Mingtao Yang's avatar
      Add ability to hint AsyncTransport to drop certificate · 6477caf1
      Mingtao Yang authored
      Summary:
      Many protocols often only require certificate information at the beginning of
      the connection (for authentication and authorization). Often, the
      protocol implementation will itself store its own representation of a transport
      identity.
      
      Certain certificates, such as X509 certificates, may be large and unnecessary
      to hold onto during the entirety of a connection past the initial connection
      establishment / handshaking phase. It is desirable to hint to transport
      implementations when certificate information is no longer needed.
      
      Reviewed By: AjanthanAsogamoorthy
      
      Differential Revision: D26031748
      
      fbshipit-source-id: de5164acfc141755debc0aa4f36474b1c7fd3109
      6477caf1
    • Philip Pronin's avatar
      skip unmodified keys in dynamic::merge_diff · 2a14eb88
      Philip Pronin authored
      Summary:
      `dynamic::merge_diff` currently fully replicates `target` within the
      patch.
      
      Reviewed By: psjanani, luciang
      
      Differential Revision: D26100408
      
      fbshipit-source-id: f6800e665281d87393fed0bb48bda888e24bbcfc
      2a14eb88
  2. 27 Jan, 2021 4 commits
    • Francesco Zoffoli's avatar
      atomic_wait expects the old value, not the new one · 141f44cb
      Francesco Zoffoli authored
      Summary: The linked paper, the implementation and the tests use the parameter as the old value, but the parameter name is called `expected`.
      
      Reviewed By: aary
      
      Differential Revision: D25975108
      
      fbshipit-source-id: bb67a95b057973e31512e9f972e1646e5a0f7d77
      141f44cb
    • Cameron Pickett's avatar
      Fix bug in folly coro GtestHelpers · 65c55155
      Cameron Pickett authored
      Differential Revision: D26084514
      
      fbshipit-source-id: ab7e94bb0f0da04d60af7112f34c7c221125feb7
      65c55155
    • Pedro Eugenio Rocha Pedreira's avatar
      Add getdeps.py manifest · d141da43
      Pedro Eugenio Rocha Pedreira authored
      Summary: Adding simple getdeps.py manifest for f4d.
      
      Reviewed By: amitkdutta
      
      Differential Revision: D25842791
      
      fbshipit-source-id: eabc33ec526c454f301f8cd401156f6250e5eaa1
      d141da43
    • Dan Melnic's avatar
      Fix flakey test · c21a0011
      Dan Melnic authored
      Summary: Fix flakey test
      
      Reviewed By: kevin-vigor
      
      Differential Revision: D26090290
      
      fbshipit-source-id: f03d6abf389815993e8742d5c27c2ccbcb13949a
      c21a0011
  3. 26 Jan, 2021 6 commits
    • Chad Austin's avatar
      substitute surrogates in log file (#8076) · 3aa8f275
      Chad Austin authored
      Summary:
      Pull Request resolved: https://github.com/facebookincubator/resctl/pull/8076
      
      D26025779 (https://github.com/facebook/folly/commit/4731bb0c37cc39a7a689a8369c9564eddeae146c) may have broken the getdeps build when logging
      surrogates. Use errors=surrogateescape to try to avoid that.
      
      Reviewed By: danobi
      
      Differential Revision: D26079717
      
      fbshipit-source-id: 98d938bfced417e0b39a6dcddb241225ffb69c06
      3aa8f275
    • Alexey Spiridonov's avatar
      Stop trying to build on Darwin, Windows · e8955d38
      Alexey Spiridonov authored
      Reviewed By: nilesr
      
      Differential Revision: D26059442
      
      fbshipit-source-id: d323ab38d7171b344c5a15863ec8d0a70b877853
      e8955d38
    • Pranjal Raihan's avatar
      Use compact_once_flag for DelayedInit · 1ab6a01f
      Pranjal Raihan authored
      Summary: Use the 1 byte version of `once_flag` such that there is no more memory overhead than `Optional`.
      
      Reviewed By: andriigrynenko
      
      Differential Revision: D25909346
      
      fbshipit-source-id: 1bb2f41200917ba58b20815bfafe3314137e9680
      1ab6a01f
    • Pranjal Raihan's avatar
      Refactor MicroLock and remove its slots · 6808ac5a
      Pranjal Raihan authored
      Summary:
      `folly::MicroLock` is actually 4 locks in one. Turns out that it's not very useful considering there is not a single use in fbcode. Instead `MicroLock` should allow a nicer API for exposing the 6 unused bits as user data.
      
      By limiting the lock to one slot (least significant 2 bits), we can make the assumption that the 6 contiguous most significant bits are user data. This means that all the masking logic can go away (see `slotMask` and `LockGuardWithDataSlots`).
      
      Now `lockAndLoad`, `unlockAndStore`, `LockGuardWithData` "just work" with needing to worry about user data interfering with the slots used for locking.
      
      Reviewed By: davidtgoldblatt
      
      Differential Revision: D25909068
      
      fbshipit-source-id: 3f050fa7393b40cff949ed6e30b691d7f40d0edf
      6808ac5a
    • Xiangyu Bu's avatar
      Fix typo about MutableStringPiece. · 3c764a2d
      Xiangyu Bu authored
      Summary:
      This diff corrects two references to `MutableStringPiece` that are misspelled
      as `MutablesStringPiece` which doesn't exist.
      
      Reviewed By: Orvid
      
      Differential Revision: D26011095
      
      fbshipit-source-id: 2503e13b84e04654c242bcd1f7bb17f9c1b757dc
      3c764a2d
    • David Detlefs's avatar
      Fix comment explaining how to use thenValue/thenError. · 0fd2fc2f
      David Detlefs authored
      Summary: I thought that since I noticed it, and it tripped me up a bit, we might as well fix it.
      
      Reviewed By: LeeHowes
      
      Differential Revision: D26048767
      
      fbshipit-source-id: 91ba9f834df411eb2d775691be4aec8a8d99776b
      0fd2fc2f
  4. 25 Jan, 2021 4 commits
    • Pranjal Raihan's avatar
      compact_once_flag · 88382fbf
      Pranjal Raihan authored
      Summary: `folly::compact_once_flag` is implemented using 1 byte. `folly::MicroLock` slot0 is used as the mutex for the slow path and slot1 is used for the stored boolean.
      
      Reviewed By: andriigrynenko
      
      Differential Revision: D25797066
      
      fbshipit-source-id: 529de84b50e61523318a19606bc24c54f1ffa3a4
      88382fbf
    • Chad Austin's avatar
      always write log files as UTF-8 to avoid cp1252 encoding errors · 4731bb0c
      Chad Austin authored
      Summary:
      The log file should be opened with a defined encoding rather than
      whatever the platform default is. On Windows, that might be cp1252,
      which throws an encoding error when the text is unicode.
      
      Reviewed By: genevievehelsel
      
      Differential Revision: D26025779
      
      fbshipit-source-id: 0102b2555e91812dfe94a7c332eb896ca2c9ef7e
      4731bb0c
    • Xiao Shi's avatar
      fix assembly interrupt instruction for ARM/AARCH · 3fb7ce4f
      Xiao Shi authored
      Summary:
      As title
      
      https://gcc.godbolt.org/z/58Mqb6
      
      Reviewed By: Orvid
      
      Differential Revision: D26012680
      
      fbshipit-source-id: 7c8859fec4a5f3a58b05e4ff7924273bd05891ec
      3fb7ce4f
    • Kevin Vigor's avatar
      co-routine interface · bf66d627
      Kevin Vigor authored
      Summary: Add co-routine interface to SImpleAsyncIO.
      
      Reviewed By: iahs
      
      Differential Revision: D25932969
      
      fbshipit-source-id: df14e25a0fe293a218d6bef0c4bd1bc8e690efba
      bf66d627
  5. 24 Jan, 2021 2 commits
  6. 22 Jan, 2021 4 commits
  7. 21 Jan, 2021 7 commits
    • Niles Rogoff's avatar
      Retry bistro tests up to 5 times · e3400d87
      Niles Rogoff authored
      Differential Revision: D25985696
      
      fbshipit-source-id: 52ede8dc494f8bf1991dbfed455fbc6bbba83d87
      e3400d87
    • Orvid King's avatar
      Guard call to weak __asan_region_is_poisoned properly · 5b44809e
      Orvid King authored
      Summary:
      It wasn't guarded at all, which is causing issues for non-sanitizer builds on platforms without shared library support.
      
      Ref: https://github.com/facebook/folly/issues/1507
      
      Reviewed By: meyering
      
      Differential Revision: D25970872
      
      fbshipit-source-id: f710e752fdf8ebc5529314d335f4559e690b787a
      5b44809e
    • Victor Zverovich's avatar
      Reduce binary size via format string compilation · 66f614d7
      Victor Zverovich authored
      Summary: Switch to format string compilation to prevent pulling in too many symbols from the {fmt} library into `folly/detail:ip_address`. This change saves ~64k (fixed cost) in opt mode compared to the current master or ~36k compared to the old code using Folly Format. This doesn't matter for server projects especially since {fmt} will likely be linked anyway but matters for some mobile ones.
      
      Reviewed By: Orvid
      
      Differential Revision: D25904078
      
      fbshipit-source-id: 56473cf9bf4456a3cb3c5aa375c16393e144b6e1
      66f614d7
    • Udip Pant's avatar
      update to libbpf-0.3 in getdeps · 7ba43ce3
      Udip Pant authored
      Summary: Allows us to use new APIs in libbpf
      
      Reviewed By: anakryiko
      
      Differential Revision: D25933787
      
      fbshipit-source-id: f0988caae351760b814eba74f6f716db51f728bd
      7ba43ce3
    • Adam Simpkins's avatar
      update EXPECT_THROW_RE() to accept the pattern as a string_view · 9c9f1d2d
      Adam Simpkins authored
      Summary:
      Previously the `EXPECT_THROW_RE()` macro required the regular expression be
      passed in as a `const char*`.  This updates the code to accept a
      `std::string_view` instead.
      
      This allows the API to accept either `const char*` arguments, `std::string`,
      or `std::string_view` objects.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D25837542
      
      fbshipit-source-id: e6fb00034046ad7f2810367f946f0135858ed065
      9c9f1d2d
    • Dan Melnic's avatar
      Handle values different from pending_ · 59b47473
      Dan Melnic authored
      Summary: Handle values different from pending_
      
      Reviewed By: kevin-vigor
      
      Differential Revision: D25968014
      
      fbshipit-source-id: fd70dd6339d02a6325b237e6c9401d8962b17b51
      59b47473
    • Xiao Shi's avatar
      fix inline asm syntax on MSVC · 3fa09cb1
      Xiao Shi authored
      Summary:
      This diff moves the gdb related test into `folly/support/test` (as opposed to
      `tests`) so that CMake rules
      [here](https://github.com/facebook/folly/blob/194b7732bd65d56b4afb58b6d9e411c1b014b3e3/CMakeLists.txt#L155)
      will exclude these files from OSS library builds--also to maintain consistency
      with other test folder names under folly.
      
      I still separated out the auto gdb breakpoint functionality into GdbUtil.h so
      that if MSVC users want to manually compile and use the gdb script tests, they
      have the option to do so.
      
      Re: asm syntax on MSVC:
      https://gcc.godbolt.org/z/1rMh4v
      
      Fixes #1515.
      
      Reviewed By: Orvid
      
      Differential Revision: D25947735
      
      fbshipit-source-id: 97e75e972fcf8eea280df804c98c400f03c37496
      3fa09cb1
  8. 20 Jan, 2021 2 commits
    • Pedro Eugenio Rocha Pedreira's avatar
      Add protobuf manifest · f184a28f
      Pedro Eugenio Rocha Pedreira authored
      Summary: Adding protobuf manifest, which will be used to compile f4d/velox.
      
      Reviewed By: spershin
      
      Differential Revision: D25926384
      
      fbshipit-source-id: 08a2dffc9e9baa0d393e5f648ce99ca032a9df5f
      f184a28f
    • Pedro Eugenio Rocha Pedreira's avatar
      Add lzo manifest · 266ecae7
      Pedro Eugenio Rocha Pedreira authored
      Summary: Adding lzo manifest, which will be used by f4d/velox
      
      Reviewed By: amitkdutta
      
      Differential Revision: D25926434
      
      fbshipit-source-id: 4d7efe5eba7cdca1f682fbd4cfd6ff0337ce7c19
      266ecae7
  9. 19 Jan, 2021 1 commit
    • Stepan Palamarchuk's avatar
      Fix bug with calling addTaskEager from another FiberManager · bc4e31a8
      Stepan Palamarchuk authored
      Summary:
      The current code is calling `runInMainContext` on the FiberManager that we're scheduling to, which will do nothing if we're calling it from another fiber manager. This will assume fiber stack as a main stack which is incorrect.
      
      This diff fixes it to call `folly::fibers::runInMainContext` that would properly call `runInMainContext` on the active FiberManager.
      
      Reviewed By: andriigrynenko
      
      Differential Revision: D25116215
      
      fbshipit-source-id: 1d13f436a0599c077e7531dc1fe75f3a143e3478
      bc4e31a8
  10. 16 Jan, 2021 1 commit
    • Giuseppe Ottaviano's avatar
      Simplify ThreadedExecutor · 194b7732
      Giuseppe Ottaviano authored
      Summary: The implementation doesn't need explicit locking or condition variables, everything can be done with a single concurrent queue.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D25919429
      
      fbshipit-source-id: a2b1e6332305174ba41d02fd79d9525a12b82218
      194b7732
  11. 15 Jan, 2021 3 commits
    • Giuseppe Ottaviano's avatar
      Handle task exceptions in ThreadedExecutor · 6a6ea7ca
      Giuseppe Ottaviano authored
      Summary: Make it consistent with the other executors.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D25926045
      
      fbshipit-source-id: ad2f101fbba918fe2a421e394870bf67c0a044b9
      6a6ea7ca
    • Xiao Shi's avatar
      move folly gdb pretty printers to OSS repo · 118e9141
      Xiao Shi authored
      Summary: As title, move gdb pretty printers from internal repo to OSS repo
      
      Reviewed By: yfeldblum
      
      Differential Revision: D25684325
      
      fbshipit-source-id: b7999dee1379801ee68553de64f16ac4db78b174
      118e9141
    • Niles Rogoff's avatar
      Migrate bistro to getdeps · 63154657
      Niles Rogoff authored
      Summary:
      This took a lot of cmake fuckery. I am guessing it will break the current travis-ci.org based build, since it no longer downloads gflags.
      
      As I put this diff up, mvfst (a dependency of quic (a dependency of proxygen)) is not building right now due to another diff - a fix is in progress but isn't landed yet. I applied the fix locally for the test plan, but didn't include it in the diff.
      
      Reviewed By: snarkmaster
      
      Differential Revision: D25651851
      
      fbshipit-source-id: b4f15ac7fa5293123710fe367c20d355c0970c42
      63154657
  12. 14 Jan, 2021 1 commit
    • Pranjal Raihan's avatar
      Allow using unused MicroLock slots as data · 3d7f331c
      Pranjal Raihan authored
      Summary: `folly::MicroLock` is actually 4 locks, each using 2 bits. In cases we don't need all the slots, we can use the other bits to store some data which is loaded/stored atomically with locking and unlocking. There is no change in existing `MicroLock` usage behavior.
      
      Reviewed By: davidtgoldblatt
      
      Differential Revision: D25842148
      
      fbshipit-source-id: 5f6ff705c35529d279629ccc256a9c210907ea5c
      3d7f331c