1. 17 Jan, 2020 2 commits
    • 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
  2. 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
  3. 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
  4. 14 Jan, 2020 3 commits
  5. 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
  6. 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
  7. 10 Jan, 2020 4 commits
  8. 09 Jan, 2020 6 commits
    • generatedunixname89002005287564's avatar
      Remove dead includes in folly/stats · 4e7473be
      generatedunixname89002005287564 authored
      Reviewed By: yfeldblum
      
      Differential Revision: D19328769
      
      fbshipit-source-id: 5d929eaa3bf4e2d0a63b8f1d95a613fee68525b4
      4e7473be
    • Dan Melnic's avatar
      Fix mem leak when running in overflow mode · 0923f2bd
      Dan Melnic authored
      Summary: Fix mem leak when running in overflow mode
      
      Reviewed By: danobi
      
      Differential Revision: D19333236
      
      fbshipit-source-id: f8a93113d095cb227808c9c8e5704112c7f5c4fb
      0923f2bd
    • Eric Niebler's avatar
      Remove folly's ColdClass, which was of dubious utility · 26f1c45b
      Eric Niebler authored
      Summary: `folly::cold_detail::ColdClass` was marking things (like `folly::Unexpected`) cold, but at the cost of inhibiting the inliner from doing its job. This is leading to bad codegen, which offsets any small wins we mind get for the `cold` attribute.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D19324159
      
      fbshipit-source-id: 7ed431b6c9d6e963c3bf438c707fa6cf6a38bf9d
      26f1c45b
    • Wez Furlong's avatar
      getdeps: dyndeps: gracefully handle empty files · c125c65e
      Wez Furlong authored
      Summary:
      Don't error out if we can't read the ELF/MACH-O header; just treat
      it is not an object.
      
      Reviewed By: chadaustin, simpkins
      
      Differential Revision: D19253434
      
      fbshipit-source-id: c5ecc7f0bc7a20e2611b7e2ff754355155f095da
      c125c65e
    • Gabriel Russo's avatar
      Remove static from for_each_impl · 821088c5
      Gabriel Russo authored
      Reviewed By: yfeldblum
      
      Differential Revision: D19312260
      
      fbshipit-source-id: 9751f70ac83d801cbc8708741e608f73cad8a464
      821088c5
    • Nick Terrell's avatar
      Remove compression counters · 870cfabf
      Nick Terrell authored
      Summary:
      We haven't found them super useful, so lets delete them and replace them with USDTs.
      
      The problems with the counters are:
      * We only have the aggregated results. We can't look at a particular process, stack trace, etc.
      * The speed reported isn't accurate.
      
      Reviewed By: yfeldblum
      
      Differential Revision: D18319361
      
      fbshipit-source-id: 778213fb63eae90cc7900b075e054c021ecf561e
      870cfabf
  9. 08 Jan, 2020 3 commits
    • Dan Melnic's avatar
      Add IP_BIND_ADDRESS_NO_PORT AsyncSocket support. Add the ability to set the... · f9eaa745
      Dan Melnic authored
      Add IP_BIND_ADDRESS_NO_PORT AsyncSocket support. Add the ability to set the socket options pre and post bind()
      
      Summary:
      Add IP_BIND_ADDRESS_NO_PORT AsyncSocket support. Add the ability to set the socket options pre and post bind()
      
      (Note: this ignores all push blocking failures!)
      
      Reviewed By: danobi
      
      Differential Revision: D19315183
      
      fbshipit-source-id: a8dc330c1f585766a00ba7724dcd9f7a6e64bbfb
      f9eaa745
    • Eric Hammerle's avatar
      Fix leak when calling AsyncSSLSocket::cancelConnect() · 3289d2ed
      Eric Hammerle authored
      Summary: AsyncSSLSocket::connect() creates a new instance of AsyncSSLSocketConnector referred with a raw pointer and passes it to AsyncSocket::connect(). AsyncSSLSocket assumed a callback irrespective of connection success or failure so that this raw pointer will be properly disposed off.  However currently, if a connect attempt is cancelled the parent class may end up clearing the connect callback without invoking a connection error, thereby causing a leak. Since the cancelConnect() function also cancels the callback, the raw pointer should be cleaned up during cancellation.
      
      Reviewed By: knekritz
      
      Differential Revision: D18365027
      
      fbshipit-source-id: 2cc171fc1a026b771dcb0bdd7c45b7ee450b97f7
      3289d2ed
    • Yedidya Feldblum's avatar
      atomic_ref · 80d0f4b4
      Yedidya Feldblum authored
      Summary: [Folly] `folly::atomic_ref`, a partial backport of `std::atomic_ref` from C++20.
      
      Reviewed By: davidtgoldblatt
      
      Differential Revision: D18413170
      
      fbshipit-source-id: dddaabd69d2119ee695c75b214ca1c0204edfe6b
      80d0f4b4
  10. 07 Jan, 2020 2 commits