1. 22 Jan, 2020 3 commits
    • Victor Zverovich's avatar
      Pass benchmark name as StringPiece · 683c7bb8
      Victor Zverovich authored
      Summary: In cases where `addBenchmark` is called directly the name often resides in `std::string` which requires calling `c_str()`. Make it possible to pass `std::string` by making the function take `StringPiece` instead of `const char*`.
      
      Reviewed By: rhodo
      
      Differential Revision: D19507553
      
      fbshipit-source-id: 49dd2bb77daefffeda3fc2153215de77b530f214
      683c7bb8
    • Mohamed Bassem's avatar
      Find the backtrace function using find_package instead of check_function_exists · 6aecd684
      Mohamed Bassem authored
      Summary: When building folly with clang, backtrace was marked as not found. This diff uses `find_package(Backtrace)` instead which allowed us to use the symbolizer libs.
      
      Reviewed By: simpkins
      
      Differential Revision: D19497120
      
      fbshipit-source-id: a8f8b4ffe9a2d53a53b6c7be32ac2a832a840877
      6aecd684
    • Joe Kirchoff's avatar
      Don't static_cast literal value · f656e771
      Joe Kirchoff authored
      Summary: Use functional style cast on literal value instead of static_cast
      
      Reviewed By: yfeldblum, jdonald
      
      Differential Revision: D19459138
      
      fbshipit-source-id: 103f644322394779fc5cd8512d7a5244d2231091
      f656e771
  2. 21 Jan, 2020 2 commits
  3. 20 Jan, 2020 1 commit
  4. 18 Jan, 2020 3 commits
    • Shrikrishna Khare's avatar
      fbcode_builder: getdeps: OpenNSA: install more headers · 4db6e3b7
      Shrikrishna Khare authored
      Summary:
      FBOSS needs to use header files from more directories in OpenNSA,
      so make those available in include directory.
      
      Differential Revision: D19461874
      
      fbshipit-source-id: 1fe3fbbc39477baecf9cd4f7c7a964be40cbbb12
      4db6e3b7
    • Dan Melnic's avatar
      Fix linter issue · 044b292a
      Dan Melnic authored
      Summary:
      Fix linter issue
      
      (Note: this ignores all push blocking failures!)
      
      Reviewed By: danobi
      
      Differential Revision: D19435633
      
      fbshipit-source-id: 858755eda1873b20cd7dae6e24b39ce21d15608a
      044b292a
    • Lee Howes's avatar
      Fix logging function choice · 5a54b7a9
      Lee Howes authored
      Summary: Corrects incorrect logging function being called.
      
      Reviewed By: lewissbaker
      
      Differential Revision: D19453995
      
      fbshipit-source-id: 5268a8ed5ef8379da84e83ec05db9e88317f3b9a
      5a54b7a9
  5. 17 Jan, 2020 3 commits
    • Dan Melnic's avatar
      Workaround for warning caused by clang pretending to be cl · 6d886fc7
      Dan Melnic authored
      Summary: Workaround for warning caused by clang pretending to be cl
      
      Differential Revision: D19426072
      
      fbshipit-source-id: ba59913fe9b6c27f32db06f341429952fc4312b5
      6d886fc7
    • Shrikrishna Khare's avatar
      fbcode_builder: getdeps: OpenNSA update source URL · 413451f0
      Shrikrishna Khare authored
      Summary:
      This is an interim solution that unblocks failing FBOSS OSS builds.
      
      Broadcom's OpenNSA is available on github and contains large precompiled
      libraries. For large files (> 100Mb), github uses git-lfs.
      
      git clones to OpenNSA started failing yesterday with:
      
      Error downloading object: lib/x86-64/libopennsa.a (7f21d94): Smudge error:
      Error downloading lib/x86-64/libopennsa.a
      (7f21d941ac32ccae38adb05b3386be739bdccd502a878364d386e7a5cb172f35): batch
      response: This repository is over its data quota. Account responsible for LFS
      bandwidth should purchase more data packs to restore access.
      
      Github documents (refer:
      https://help.github.com/en/github/managing-large-files/about-storage-and-bandwidth-usage)
      “When you download a file tracked with Git LFS, the total file size is counted
      against the repository owner’s bandwidth limit”. It appears we are hitting that
      limit.
      
      Thus, github is not a good choice here. Even if we create a 'github release
      tarball', the tarball continues to carry lfs files and thus downloading those
      counts towards the quota (which is limited).
      
      Broadcom paid some amount to bump up the quota, but it is matter of time before
      we hit it esp given that these builds run on-diff.
      
      A better solution is to download a tarball (that contains real files, not lfs),
      and then allow Facebook lfs to cache it.
      
      While github does not support that, it seems bitbucket does.
      
      Thus, we forked OpenNSA from github into a bitbucket repo and this patch
      modifies the manifest to download a tarball from bitbucket that will be cached.
      
      Broadcom is working on a cleaner solution but this will keep our FBOSS OSS build
      clean in the interim.
      
      Reviewed By: wez
      
      Differential Revision: D19437386
      
      fbshipit-source-id: b1213a186a0af57b9fd71b30e8899e80affd4cc0
      413451f0
    • Maged Michael's avatar
      hazptr: Make using a thread pool executor for default domain asynchronous reclamation the default · b9f837ee
      Maged Michael authored
      Summary: Add a call in folly init to folly::start_hazptr_thread_pool_executor() to make the default hazptr domain use a CPUThreadPoolExecutor by default.
      
      Reviewed By: davidtgoldblatt
      
      Differential Revision: D19107125
      
      fbshipit-source-id: 1cebe0864de14b54349f723061c4c2b5905b105b
      b9f837ee
  6. 16 Jan, 2020 3 commits
    • Lewis Baker's avatar
      Add overload of blockingWait() that takes DrivableExecutor · 8c7f9c00
      Lewis Baker authored
      Summary:
      This allows the caller to, for example, pass their own ManualExecutor or EventBase
      and have the task scheduled onto that executor and have the current thread drive
      that executor until it completes.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D19205803
      
      fbshipit-source-id: 6042f68decf8d7d9bb1d37977e5804b0504daa41
      8c7f9c00
    • Subodh Iyengar's avatar
      Add socket to notifyDataAvailable · d4d80f77
      Subodh Iyengar authored
      Summary: add the socket to the callback parameter
      
      Reviewed By: yangchi
      
      Differential Revision: D19192549
      
      fbshipit-source-id: 068bdb560273ab3203a1b7eaefa5b01c4e4e9968
      d4d80f77
    • Dan Melnic's avatar
      Add support for registered fds · 584b74cf
      Dan Melnic authored
      Summary: Add support for registered fds
      
      Reviewed By: kevin-vigor
      
      Differential Revision: D19313387
      
      fbshipit-source-id: 19527958b3986992cdafbad2c4c4902c887a9e9f
      584b74cf
  7. 15 Jan, 2020 8 commits
    • Shrikrishna Khare's avatar
      fbcode_builder: getdeps: fboss remove OpenNSL manifest · dafd4506
      Shrikrishna Khare authored
      Summary:
      Broadcom has formally replaced OpenNSL with newer OpenNSA:
      https://github.com/Broadcom-Network-Switching-Software/OpenNSA/blob/master/README.md
      
      With D16401189, FBOSS no longer depends on OpenNSL, but uses the new OpenNSA
      instead. Remove this manifest.
      
      Reviewed By: wez
      
      Differential Revision: D19413708
      
      fbshipit-source-id: f3662f1101d59a5e0e59cb7238797d652564ff90
      dafd4506
    • Yedidya Feldblum's avatar
      Use getrandom instead of /dev/urandom when available · 6fc7dd10
      Yedidya Feldblum authored
      Summary:
      [Folly] Use `getrandom` instead of `/dev/urandom` when available.
      
      The C library function `getrandom` is available on linux >= 3.17 and glibc >= 2.25.
      
      Reviewed By: ot, simpkins, luciang
      
      Differential Revision: D19211519
      
      fbshipit-source-id: 07e7e856fc81d1f04efca4a6cfa0b76ada08f443
      6fc7dd10
    • Eric Niebler's avatar
      make msan happy with exception_wrapper · 44e0aff1
      Eric Niebler authored
      Summary:
      When reading a `std::exception_ptr` out of a moved-from `folly::exception_wrapper`, we end up reading a `std::exception_ptr` field of a deleted `ExceptionPtr` object. This was causing MSAN much consternation.
      
      The fix is to test for emptiness in `to_exception_ptr` and return a default-constructed `std::exception_ptr`.
      
      This commit also adds extra test cases, since `to_exception_ptr` does something slightly different depending on whether the `exception_wrapper` object is `const` or not.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D19403528
      
      fbshipit-source-id: fde74a5c4b2ddb2025703432c1ac5a19d26b9426
      44e0aff1
    • Kirk Shoop's avatar
      prevent asan failures in SingletonThreadLocal · 9450078d
      Kirk Shoop authored
      Summary:
      I have been encountering
      
      ```
      AddressSanitizer:DEADLYSIGNAL
      =================================================================
      ==937752==ERROR: AddressSanitizer: SEGV on unknown address 0x24a12000e4f18 (pc 0x7f3902a6e696 bp 0x7f37bc5e4380 sp 0x7f37bc5e42a0 T107)
      ==937752==The signal is caused by a READ memory access.
      SCARINESS: 20 (wild-addr-read)
      
          #0 0x7f3902a6e695 in folly::ThreadLocalPtr<folly::SingletonThreadLocal<folly::hazptr_tc<std::atomic>, void, folly::detail::DefaultMake<folly::hazptr_tc<std::atomic> >, void>::Wrapper, void, void>::get() const folly/ThreadLocal.h:160
          #1 0x7f3902a6d600 in get folly/ThreadLocal.h:69
          #2 0x7f3902a6d600 in folly::ThreadLocal<folly::SingletonThreadLocal<folly::hazptr_tc<std::atomic>, void, folly::detail::DefaultMake<folly::hazptr_tc<std::atomic> >, void>::Wrapper, void, void>::operator*() const folly/ThreadLocal.h:78
          #3 0x7f3902a6ca1b in folly::SingletonThreadLocal<folly::hazptr_tc<std::atomic>, void, folly::detail::DefaultMake<folly::hazptr_tc<std::atomic> >, void>::getWrapper() folly/SingletonThreadLocal.h:149
          #4 0x7f3902a6cbe5 in folly::SingletonThreadLocal<folly::hazptr_tc<std::atomic>, void, folly::detail::DefaultMake<folly::hazptr_tc<std::atomic> >, void>::LocalLifetime::~LocalLifetime() folly/SingletonThreadLocal.h:121
          #5 0x7f38f04d9fd5 in (anonymous namespace)::run(void*) /data/users/kirkshoop/gcc/trunk/libstdc++-v3/libsupc++/atexit_thread.cc:75:16
          #6 0x7f38ef9ee551 in __nptl_deallocate_tsd.part.8 /home/engshare/third-party2/glibc/2.26/src/glibc-2.26/nptl/pthread_create.c:301:8
          #7 0x7f38ef9ef7c8 in __nptl_deallocate_tsd /home/engshare/third-party2/glibc/2.26/src/glibc-2.26/sysdeps/nptl/futex-internal.h:200:3
          #8 0x7f38ef9ef7c8 in start_thread /home/engshare/third-party2/glibc/2.26/src/glibc-2.26/nptl/pthread_create.c:475:3
      ```
      
      I tried using a unique Tag for the SingletonThreadLocal for debugging purposes and this seemed to fix the issue.
      
      Reviewed By: magedm
      
      Differential Revision: D19356179
      
      fbshipit-source-id: a18c6b02f0a40e0509753075614eeff71d859bf7
      9450078d
    • Shrikrishna Khare's avatar
      OpenNSA: Don't use opennsl, switch to bcm-only API · 8dc11efb
      Shrikrishna Khare authored
      Summary:
      With the release of OpenNSA (https://github.com/Broadcom-Network-Switching-Software/OpenNSA), we can stop using opennsal altogether!
      
      This diff was created using following steps:
      
      cd fboss/agent
      find . ! -path "*\/oss*" -type f \( ! -iname "*TARGETS*" \) -exec sed -i -e 's/opennsl_spl_//g' {} \;
      find . ! -path "*\/oss*" -type f \( ! -iname "*TARGETS*" \) -exec sed -i -e 's/opennsl/bcm/g' {} \;
      find . ! -path "*\/oss*" -type f \( ! -iname "*TARGETS*" \) -exec sed -i -e 's/OPENNSL/BCM/g' {} \;
      find . ! -path "*\/oss*" -type f \( ! -iname "*TARGETS*" \) -exec sed -i -e 's/OpenNSL/Bcm/g' {} \; # for symbols like snmpBcmTransmittedPkts2048to4095Octets
      
      Furthermore:
      
      - In all TARGETS under fboss/agent replace wrapped_opennsl_symbols with wrapped_bcm_symbols.
      - hg mv agent/facebook/test/OpenNSLInterface.h agent/facebook/test/BcmInterface.h
      - BcmEgress.cpp remove operator== overload for opennsl API altogether, and remove operator== BCM API version from inside unnamed namespace, and put it in fboss namespace.
      - BcmCinter.h and BcmCinter.cpp now have some duplicate definitions as opennsl_ got renamed to bcm_. Delete one of the definitions "as appropriate".
      - Similarly, remove duplicate definitions in FakeSdk.h and FakeSdk.cpp
      - Similarly, remove duplicate definitions in SdkTracer.cpp (remove definitions calling CALL_WRAPPERS_RV_NO_CINTER). And lastly, remove CALL_WRAPPERS_RV_NO_CINTER itself.
      - arc lint
      - Remove OpennslCompatTests.cpp
      - Fix ./agent/hw/bcm/tests/facebook/BcmEgressTest.cpp to have #include
        "fboss/agent/facebook/test/MockOpenNSL.h" instead of MockBcm.h
      
      TODO:
      - This patch retains the directory structure (facebook/ subdirectory), which will be fixed in subsequent patches.
      - Remove opennsl references from TARGETS file, additional cleanup etc.
      - Remove all oss directories...
      
      Differential Revision: D16401189
      
      fbshipit-source-id: 607b6c0f97ffcacf3707f6b7a4c9454cc0b24476
      8dc11efb
    • Shrikrishna Khare's avatar
      fbcode_builder: getdeps: fboss: rename OpenBCM to OpenNSA · 0449e7e4
      Shrikrishna Khare authored
      Summary:
      Broadcom provides this library and they decided to rename it from OpenBCM to
      OpenNSA. Thus, rename corresponding fbcode_builder code.
      
      Reviewed By: wez
      
      Differential Revision: D19396687
      
      fbshipit-source-id: 8233dbf4de9342b5a0e54ae275d6c73d43abe6d0
      0449e7e4
    • Yedidya Feldblum's avatar
      Cut unused AsyncSocketException::SASL_HANDSHAKE_TIMEOUT · 777263f8
      Yedidya Feldblum authored
      Summary: [Folly] Cut unused `AsyncSocketException::SASL_HANDSHAKE_TIMEOUT`.
      
      Reviewed By: vitaut
      
      Differential Revision: D19343864
      
      fbshipit-source-id: ed4374bc2b376ff71e592323ed8c37290700e870
      777263f8
    • Konstantin Tsoy's avatar
      Add recvmmsg · be83edaf
      Konstantin Tsoy authored
      Summary: Add recvmmsg
      
      Differential Revision: D18927890
      
      fbshipit-source-id: de500dd1c266f21fbfc39c2972df787da50c7a80
      be83edaf
  8. 14 Jan, 2020 3 commits
  9. 13 Jan, 2020 7 commits
    • Phil Willoughby's avatar
      add FOLLY_ATTR_NO_UNIQUE_ADDRESS · 4ed21909
      Phil Willoughby authored
      Summary:
      Add `FOLLY_NO_UNIQUE_ADDRESS ` to expose C++20's `[[no_unique_address]]` where available.
      
      (Note: this ignores all push blocking failures!)
      
      Reviewed By: pixelb
      
      Differential Revision: D19375089
      
      fbshipit-source-id: 9a83ae791002e02df5b93b61f20209e5f467a959
      4ed21909
    • Igor Sugak's avatar
      disable VDSO getcpu optimization in MSAN build mode · e1af1b05
      Igor Sugak authored
      Reviewed By: yfeldblum
      
      Differential Revision: D19359860
      
      fbshipit-source-id: b084d8cd603238e76d61de1eed3f233cf5b7fb27
      e1af1b05
    • Igor Sugak's avatar
      disable VDSO clock_gettime optimization in MSAN build mode · 800e1f62
      Igor Sugak authored
      Reviewed By: yfeldblum
      
      Differential Revision: D19359673
      
      fbshipit-source-id: 610ae77e205038267e0e331a04486eef0329c165
      800e1f62
    • Felix Handte's avatar
      IOBuf: Add goodSize() Allocation-Sizing Method · a113000d
      Felix Handte authored
      Summary:
      For long-lived IOBufs, it can be useful to know whether their memory footprint
      can be usefully shrunk. This diff exposes a method that lets users see the
      smallest capacity an IOBuf could have while wrapping a particularly sized
      object.
      
      Without this, they have to do hacky math.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D18440359
      
      fbshipit-source-id: 1324700b58f0b2762cb3347b907ca5e04ebecb99
      a113000d
    • Gabriel Russo's avatar
      Remove unused initializer from abstract DefaultKeepAliveExecutor · 3c712d67
      Gabriel Russo authored
      Summary: This constructor would never be called since the class is abstract (the method `add` from `Executor` is not implemented). This causes a warning which fails builds because of `-Werror`.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D19345492
      
      fbshipit-source-id: 20f185e0903a03acbde2e55e5a575e20deb5ad2a
      3c712d67
    • Gabriel Russo's avatar
      Rename variable to remove shadow warning on FiberManagerInternal.h · 0ded2678
      Gabriel Russo authored
      Summary: This variable shadows the field `options_`, so rename it to get rid of the warning `constructor parameter 'options_' shadows the field 'options_' of 'FiberManager'` (which is turned into an error because of `-Werror`). This happens on clang 8.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D19331755
      
      fbshipit-source-id: 3615cf9b6c7516775f1dc198a08bc784a52c0fb4
      0ded2678
    • Dan Melnic's avatar
      Add non persistent events overflow tests · 50135cdf
      Dan Melnic authored
      Summary: Add non persistent events overflow tests
      
      Reviewed By: danobi, kevin-vigor
      
      Differential Revision: D19349804
      
      fbshipit-source-id: 360d1f41d074b3d1af5f163213dadfc35f28c353
      50135cdf
  10. 11 Jan, 2020 2 commits
    • Igor Sugak's avatar
      default initialize Synchronized test data · dec61fcb
      Igor Sugak authored
      Reviewed By: yfeldblum
      
      Differential Revision: D19357723
      
      fbshipit-source-id: d099419271f74b013a276079723250ce842e2b24
      dec61fcb
    • Yedidya Feldblum's avatar
      Fix evaluation-order assumption in futures varidic collect · 087f5273
      Yedidya Feldblum authored
      Summary: [Folly] Fix evaluation-order assumption in futures varidic collect - argument evaluation order is unspecified so it must not be relied on when side-effects must occur in a specific order.
      
      Reviewed By: lewissbaker
      
      Differential Revision: D19347873
      
      fbshipit-source-id: db4326d995a241619f96ff2bacdf5a5fa2332091
      087f5273
  11. 10 Jan, 2020 4 commits
  12. 09 Jan, 2020 1 commit