1. 15 Oct, 2021 3 commits
    • Gabe Levi's avatar
      Port OpenSSL to sockets · 5fadaded
      Gabe Levi authored
      Summary: Added another line to the rsys sample app's `main.cpp`, which forced me to enable sockets and fix errors in order to get it compile and link.
      
      Reviewed By: usikder
      
      Differential Revision: D30192527
      
      fbshipit-source-id: 10eb9714900ca7f7a48c11b5d8308558ca5e8208
      5fadaded
    • Veselin Petrov's avatar
      Enable basic folly::Future support for XROS builds. · df5cac55
      Veselin Petrov authored
      Summary:
      `folly/io/async:async_base` is not fully migrated to XROS, mitigate futures implementation for now:
      * Craft out `fibers::Baton` and `IO pool` dependencies from futures.
      * Add futures to CI targets.
      * Add build time test to ensure `folly::Future<Unit>` symbols are generated.
      
      This closely follows mitigation in `AROS` branch:
      https://www.internalfb.com/code/aros/[a0c19baba13b]/xros/third-party/folly/folly/futures/Future.h
      
      (any suggestions on how to properly proceed with such change are greatly appreciated!)
      
      Reviewed By: egorich239
      
      Differential Revision: D31497625
      
      fbshipit-source-id: c0b2406496ca3c4f69ddadd61dbd1d75f309e8a1
      df5cac55
    • Dan Melnic's avatar
      Workaround for protected default constructor issue · 27ff58f4
      Dan Melnic authored
      Summary: Workaround for protected default constructor issue
      
      Reviewed By: yfeldblum, mpark, luciang
      
      Differential Revision: D31618662
      
      fbshipit-source-id: f7e2d498f2da01971b4f67dd28897026f405c0fb
      27ff58f4
  2. 14 Oct, 2021 9 commits
    • Dan Melnic's avatar
      csl_iterator fix · 07acbad2
      Dan Melnic authored
      Summary: csl_iterator fix
      
      Reviewed By: yfeldblum
      
      Differential Revision: D31664052
      
      fbshipit-source-id: 338b60ddc9575a7d73ee431e9cef848cecfbcdad
      07acbad2
    • Dan Melnic's avatar
      Async socket test workaround for -Werror,-Wsign-compare · 6b63ce1a
      Dan Melnic authored
      Summary: Async socket test workaround for -Werror,-Wsign-compare
      
      Reviewed By: mpark, ispeters, luciang
      
      Differential Revision: D31625210
      
      fbshipit-source-id: 387bf6172d4e518dfd850f456b859605aa9a6d0f
      6b63ce1a
    • Dan Melnic's avatar
      Address ConstructorCallback -Werror,-Wsign-compare · 36eb4497
      Dan Melnic authored
      Summary: Address ConstructorCallback -Werror,-Wsign-compare
      
      Reviewed By: ispeters, luciang
      
      Differential Revision: D31625450
      
      fbshipit-source-id: d5be388fc0d62eb715b5a8fe8e5758a8345cbbb0
      36eb4497
    • Misha Shneerson's avatar
      fix a unit test · be319ae4
      Misha Shneerson authored
      Differential Revision: D31641668
      
      fbshipit-source-id: a733dbd2dc4e3f20e82d75514ded1a51788d378f
      be319ae4
    • Giuseppe Ottaviano's avatar
      Promote DigestBuilder out of detail · d06843a4
      Giuseppe Ottaviano authored
      Summary: `DigestBuilder` is a useful companion to `TDigest` (already public), has a simple and well-defined interface, better documentation than most classes in the parent directory, tests, and benchmarks. It doesn't need to be in `detail/`, and it can be useful for use cases not covered by `BufferedStat`, for example when sub-second resolution and a precise flush schedule are required.
      
      Reviewed By: philippv, luciang
      
      Differential Revision: D31643638
      
      fbshipit-source-id: 4f2f54a933942cbe02d08cd63ab5fc04f13630e3
      d06843a4
    • Yedidya Feldblum's avatar
      operator symmetry for folly::dynamic · 9eef9f86
      Yedidya Feldblum authored
      Summary: Symmetric operators are done using free or non-member operators. This ensures that whatever conversions could happen to the RHS can also happen to the LHS, symmetrically.
      
      Reviewed By: philippv
      
      Differential Revision: D31582089
      
      fbshipit-source-id: ecae61bc810ee9538b1c2b738c58d4e9e01f1483
      9eef9f86
    • Mohammed Das's avatar
      Add CO_TYPED_TEST to GtestHelpers.h (#1669) · e2504d85
      Mohammed Das authored
      Summary:
      Pull Request resolved: https://github.com/facebook/folly/pull/1669
      
      Similar to CO_TEST_[F|P], adding CO_TYPED_TEST which allows test cases to use co_await/co_return and blocks on the Task<> separately.
      
      Reviewed By: iahs
      
      Differential Revision: D31621981
      
      fbshipit-source-id: 83618de2d106954bde819d90afde0c0140674d54
      e2504d85
    • Cameron Pickett's avatar
      AtScopeExit for coroutine cleanups · e9943344
      Cameron Pickett authored
      Reviewed By: iahs
      
      Differential Revision: D31271338
      
      fbshipit-source-id: 10cbd083c4da7461a43d4d0a9d4ab5455dcee270
      e9943344
    • Yedidya Feldblum's avatar
      fix a typo in Baton comments · 951a2b92
      Yedidya Feldblum authored
      Summary: While `wake()` is an accurate-enough description of what the function in question does, the actual name of the function is `post()`.
      
      Reviewed By: luciang
      
      Differential Revision: D31617933
      
      fbshipit-source-id: b45f062dccada3cedab2e2b7e7734f6b0b501e63
      951a2b92
  3. 13 Oct, 2021 3 commits
    • Jun Wu's avatar
      edenapi: remove tools · b6bf13bb
      Jun Wu authored
      Summary:
      `hg debugapi` now provides easier ways to test edenapi endpoints.
      Remove the `edenapi/tools` to reduce code bloat. This also unblocks removing
      `To/FromJson` complexity so adding new endpoints become easier.
      
      Reviewed By: yancouto
      
      Differential Revision: D31465796
      
      fbshipit-source-id: fdc0a47b4302c876e78455101068f27949d1b645
      b6bf13bb
    • Yedidya Feldblum's avatar
      Use relaxed_atomic in IOThreadPoolExecutor · 64fd47a2
      Yedidya Feldblum authored
      Summary:
      [Folly] Use `relaxed_atomic` in `IOThreadPoolExecutor`.
      
      For the `nextThread_` field, which may be mutated within `pickThread` in any number of threads concurrently. While `pickThread` is only ever called with a shared lock held, the shared lock does not actually help with concurrent mutations.
      
      Since the mutations of `nextThread_` by `pickThread` is always a `std::atomic::fetch_add` with `std::memory_order_relaxed`, and since that case is a bit more nicely solved with `folly::relaxed_atomic`, switch to that.
      
      Reviewed By: ot
      
      Differential Revision: D6290451
      
      fbshipit-source-id: e473fa6321e462c9b3df9d2bd9650967cca3444a
      64fd47a2
    • Misha Shneerson's avatar
      Capture correct TID passed to deadlock detector · 7d707de4
      Misha Shneerson authored
      Summary:
      we are currently capture the ID of the thread that is spawning IO threads, not
      the ids of the IO threads themselves. Fix it.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D31577084
      
      fbshipit-source-id: 869f9ad20ad379327db513501392bd6bc1ced7e8
      7d707de4
  4. 12 Oct, 2021 2 commits
    • Alan Frindell's avatar
      Fix readable in Async*Socket · f704135e
      Alan Frindell authored
      Summary: I'm not sure this API is actually used anywhere, but the implementations don't account for cases where the underlying socket is unreadable but setting a read callback would immediately provide data.
      
      Reviewed By: simpkins
      
      Differential Revision: D25324200
      
      fbshipit-source-id: 4176432feea09a4d1387b9025f485e537a5b8da5
      f704135e
    • Shai Szulanski's avatar
      Use fold expression in CancellationToken::merge · e3f57750
      Shai Szulanski authored
      Summary: Avoids temporary array
      
      Reviewed By: yfeldblum
      
      Differential Revision: D31547083
      
      fbshipit-source-id: e8c8246145428079a00999da7b3d2c4f59105300
      e3f57750
  5. 08 Oct, 2021 3 commits
    • Fred Qiu's avatar
      Parse and capture client alpns from client hello info · c47d0c77
      Fred Qiu authored
      Summary:
      Add code to capture client alpns from client hello packet and store them in
      ssl socket object for later logging.
      
      Reviewed By: AjanthanAsogamoorthy
      
      Differential Revision: D31176714
      
      fbshipit-source-id: 888fd9949ede5209234bb3ab1959a6f9c14043b2
      c47d0c77
    • Misha Shneerson's avatar
      fix deadlock folly::RequestContext::try_get() · dfe13560
      Misha Shneerson authored
      Summary:
      `folly::RequestContext::try_get()` might deadlock if accessor to all threads is
      held alive.
      
      Reviewed By: amlannayak
      
      Differential Revision: D31496646
      
      fbshipit-source-id: 6edfd0a54f8bfaf72218d78ba1a6c09dc92a8e63
      dfe13560
    • Andrew Smith's avatar
      Remove custom equality/hash function for ChannelBridge · c3bb66ae
      Andrew Smith authored
      Summary:
      Currently, both Merge and MergeChannel use a folly::F14FastSet of channel bridge unique pointers. In order to look up items inside this hash set by raw pointer, a custom equality and hash function are provided. These functions just check for equality of the underlying raw pointers (and run std::hash on the raw pointers).
      
      This has turned into a large performance bottleneck. For some reason, folly::F14FastSet's performance tanks when using custom equality/hash functions. The performance seems to get worse as more items are added. In tests I was running, a single lookup took over 5ms with a set of 200k items.
      
      This diff removes the custom equality/hash functions for ChannelBridge. Merge and MergeChannel are changed to use hash sets of raw pointers. Lifetime is managed outside of the F14FastSet (by explicitly deleting the raw pointers after items are removed from the set).
      
      Reviewed By: aary
      
      Differential Revision: D31426627
      
      fbshipit-source-id: 1ce7fd1b431704f6353b9ea3d689cee002dd9bdc
      c3bb66ae
  6. 07 Oct, 2021 2 commits
    • Mingtao Yang's avatar
      portability/OpenSSL: Don't assume 1.1.1 implies blake2 availability · 24759fc8
      Mingtao Yang authored
      Reviewed By: yfeldblum
      
      Differential Revision: D31414552
      
      fbshipit-source-id: 0a814de998d88950f5e6e61c23b20f40c2eb0a37
      24759fc8
    • Kenny Yu's avatar
      ensure next stack frame address is valid when walking async stacks · cb895545
      Kenny Yu authored
      Summary:
      We have cases where the C++ -> Lua calls are not properly following the calling convention and the pointer to the previous normal stack frame is not correctly pushed after the lua call. This results in segfaults when we try to walk the normal stack.
      
      Stack frame addresses for the normal stack frames should always be increasing. A simple fix is check whether the next stack frame address <= starting stack frame address. If it is, this indicates the end fo the stack (nullptr) or likely stack corruption, as in the case above.
      
      This means that we might miss out on the stack frames right before the stack frame that breaks the calling convention, but we should correctly get the rest of the async stack trace before this frame, and the stack frames after this frame.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D30907903
      
      fbshipit-source-id: 7d78b53570fd24dbb23b4fc49afa995d44c9e549
      cb895545
  7. 06 Oct, 2021 5 commits
    • Emanuele Altieri's avatar
      Fix flaky unit test for ThreadPoolExecutor CPU counter · e6c19c13
      Emanuele Altieri authored
      Summary:
      Using a per-thread CPU clock when burning CPU time (instead of the system
      clock), so measurements should be accurate independently of the load on the
      system.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D31436995
      
      fbshipit-source-id: 3e732e2f4d2c04846dcafef32b00a87617c940b8
      e6c19c13
    • Yedidya Feldblum's avatar
      fix MSVC C5219 in to_ascii · 4bd3e4e0
      Yedidya Feldblum authored
      Summary:
      Fixes the following warning:
      
      ```
      folly/lang/ToAscii.h(224): warning C5219: implicit conversion from 'T' to 'double', possible loss of data
              with
              [
                  T=size_t
              ]
      folly/lang/ToAscii.h(236): note: see reference to function template instantiation 'size_t folly::detail::to_ascii_size_clzll<10>(uint64_t)' being compiled
      folly/lang/ToAscii.h(349): note: see reference to function template instantiation 'size_t folly::detail::to_ascii_size_route<10>(uint64_t)' being compiled
      folly/lang/ToAscii.h(358): note: see reference to function template instantiation 'size_t folly::to_ascii_size<10>(uint64_t)' being compiled
      ```
      
      Reviewed By: luciang
      
      Differential Revision: D31314625
      
      fbshipit-source-id: b32a566b67d2f04225b59ee682931d5f8d9ede1e
      4bd3e4e0
    • Orvid King's avatar
      Support libdwarf prior to 5 · 4dbcd7ba
      Orvid King authored
      Summary:
      Not all systems have a libdwarf that supports dwarf 5. We only need a single tag from it, so just define it when needed.
      Fixes: https://github.com/facebook/folly/issues/1654
      
      Reviewed By: luciang
      
      Differential Revision: D31423305
      
      fbshipit-source-id: 89fecccb5ac68830a33b1fad51210cbaa9754bf8
      4dbcd7ba
    • Andrew Huang's avatar
      Add TLS 1.3 ciphersuites to SSLCommonOptions and SSLServerOptions · c15766d0
      Andrew Huang authored
      Reviewed By: AjanthanAsogamoorthy
      
      Differential Revision: D31399112
      
      fbshipit-source-id: ea98963536de42136642809d2bd07b9567464f68
      c15766d0
    • Giuseppe Ottaviano's avatar
      Add IOBuf convenience methods to convert to std::string · a79234f0
      Giuseppe Ottaviano authored
      Summary:
      Getting an `std::string` out of the data in a `IOBuf` chain is a common operation in tests, logging, and at interface boundaries. Currently there isn't an easy way to do it, so either the same boilerplate is replicated everywhere, or people resort to `coalesce().str()`, which is inefficient (it can end up copying the data twice) and non-`const`.
      
      Add methods to append and convert to any char container, like `string`, `fbstring`, `vector<char>`, ...
      
      Reviewed By: philippv
      
      Differential Revision: D31385345
      
      fbshipit-source-id: 8a331771786f7bf1043b59d5c36ac4051e442531
      a79234f0
  8. 05 Oct, 2021 1 commit
    • Saar Gross's avatar
      Further changes to support building over XROS · 45082113
      Saar Gross authored
      Summary: Include the xr_socket compatibility header in multiple places in folly (net_net_ops, network_address etc.) to have these parts of folly build-able over XROS
      
      Reviewed By: yfeldblum, luciang
      
      Differential Revision: D31057430
      
      fbshipit-source-id: 2aceaa1c1c50da2b1a6a1aa9d401df050d68cef1
      45082113
  9. 02 Oct, 2021 2 commits
    • Yedidya Feldblum's avatar
      unique_lock_guard, shared_lock_guard · 5b38d6fa
      Yedidya Feldblum authored
      Reviewed By: iahs
      
      Differential Revision: D31183931
      
      fbshipit-source-id: e97fcc99bbe6271def731916321eaf081d82d942
      5b38d6fa
    • Saar Gross's avatar
      Minor fixes for supporting a build of network_address over XROS · 6e0b7ffe
      Saar Gross authored
      Summary:
      1. sockaddr, sockaddr_in and sockaddr_in6 are all the same at XROS, so we should have only one version of setFromSockaddr() when running over XROS
      2. Since AF_UNIX is not really a supported address family on XROS, add a cast to (int) when checking the family. This will suppress a compilation warning
      
      Reviewed By: yfeldblum
      
      Differential Revision: D31057427
      
      fbshipit-source-id: ef5af0aed6800c9beadfbb217795416afab9e08c
      6e0b7ffe
  10. 01 Oct, 2021 6 commits
  11. 30 Sep, 2021 4 commits
    • Emanuele Altieri's avatar
      Expose total CPU time used by a ThreadPoolExecutor · 57de05c8
      Emanuele Altieri authored
      Summary: New method to return the cumulative CPU time consumed by the pool. Requires support for per-thread CPU clocks.
      
      Reviewed By: yfeldblum, iahs
      
      Differential Revision: D30685002
      
      fbshipit-source-id: ac103e581585832bcda245e8f034bbc71489c831
      57de05c8
    • Cameron Pickett's avatar
      Do not swallow child exceptions on cancellation · 118a3923
      Cameron Pickett authored
      Summary:
      Aligns `collectAll` and `collectAny` behaviour and simplifies the logic for propagating child exceptions on cancellation.
      
      Prior to this change, we were conditionally setting `firstException` dependent on whether cancellation was requested or not. Additionally, `collectAny` was unconditionally returning `co_cancelled` even if all the child tasks completed successfully.
      
      Now, the behaviour is consistent between general errors and cancellation: If any child task completes in error (including folly::OperationCancelled), then the parent `collectAll`/`collectAny` will propagate that failure. Otherwise, if no child fails, then `collectAll`/`collectAny` will propagate that success.
      
      (Note: this ignores all push blocking failures!)
      
      Reviewed By: iahs
      
      Differential Revision: D31266586
      
      fbshipit-source-id: b6eba6ab2a0a3634b112318b1810819d7916acdb
      118a3923
    • Dmytro Stechenko's avatar
      Add ssl sha512/blake2b wrappers · ff7c3177
      Dmytro Stechenko authored
      Summary: Adding sha512/blake2b evp wrappers for digest/hmac.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D31220261
      
      fbshipit-source-id: af190fef5d269dda6e7fed549641a6cffb3ce08d
      ff7c3177
    • Orvid King's avatar
      Spellcheck · eecfd465
      Orvid King authored
      Summary: Spellcheck everything in the root and docs directory.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D31228715
      
      fbshipit-source-id: 3c5ace5d8879fbca17ebacf4fb6edee5e28a1b42
      eecfd465