1. 11 Jun, 2015 2 commits
    • James Sedgwick's avatar
      wangle::getEventBase() · 33191ca3
      James Sedgwick authored
      Summary: this is going to be a really common pattern, so I'm providing a shortcut
      
      Reviewed By: @fugalh
      
      Differential Revision: D2146008
      33191ca3
    • James Sedgwick's avatar
      optimize makeFuture and Future<T>::Future() · dce6e23d
      James Sedgwick authored
      Summary: No reason to go through the whole Promise rigamarole. Add an appropriate Core ctor and use that to make a completed Future with just the core alloc
      
      Note the big win in the `constantFuture` benchmark.
      
      ```
      Before:
      ============================================================================
      folly/futures/test/Benchmark.cpp                relative  time/iter  iters/s
      ============================================================================
      constantFuture                                             120.50ns    8.30M
      promiseAndFuture                                  91.99%   130.98ns    7.63M
      withThen                                          28.17%   427.77ns    2.34M
      ----------------------------------------------------------------------------
      oneThen                                                    430.48ns    2.32M
      twoThens                                          58.03%   741.86ns    1.35M
      fourThens                                         31.85%     1.35us  739.97K
      hundredThens                                       1.61%    26.80us   37.32K
      ----------------------------------------------------------------------------
      no_contention                                                4.58ms   218.48
      contention                                        83.70%     5.47ms   182.86
      ----------------------------------------------------------------------------
      throwAndCatch                                                8.09us  123.55K
      throwAndCatchWrapped                              94.43%     8.57us  116.67K
      throwWrappedAndCatch                             154.69%     5.23us  191.12K
      throwWrappedAndCatchWrapped                      614.06%     1.32us  758.70K
      ----------------------------------------------------------------------------
      throwAndCatchContended                                     967.54ms     1.03
      throwAndCatchWrappedContended                    103.48%   935.04ms     1.07
      throwWrappedAndCatchContended                    148.24%   652.70ms     1.53
      throwWrappedAndCatchWrappedContended            14313.28%     6.76ms   147.94
      ============================================================================
      
      After:
      ============================================================================
      folly/futures/test/Benchmark.cpp                relative  time/iter  iters/s
      ============================================================================
      constantFuture                                              69.11ns   14.47M
      promiseAndFuture                                  55.12%   125.37ns    7.98M
      withThen                                          16.49%   419.18ns    2.39M
      ----------------------------------------------------------------------------
      oneThen                                                    370.39ns    2.70M
      twoThens                                          55.11%   672.05ns    1.49M
      fourThens                                         29.00%     1.28us  782.89K
      hundredThens                                       1.23%    30.22us   33.09K
      ----------------------------------------------------------------------------
      no_contention                                                4.56ms   219.46
      contention                                        82.82%     5.50ms   181.77
      ----------------------------------------------------------------------------
      throwAndCatch                                                8.30us  120.42K
      throwAndCatchWrapped                              96.40%     8.61us  116.08K
      throwWrappedAndCatch                             162.66%     5.11us  195.89K
      throwWrappedAndCatchWrapped                      680.39%     1.22us  819.36K
      ----------------------------------------------------------------------------
      throwAndCatchContended                                     979.17ms     1.02
      throwAndCatchWrappedContended                    103.09%   949.84ms     1.05
      throwWrappedAndCatchContended                    153.55%   637.71ms     1.57
      throwWrappedAndCatchWrappedContended            10468.47%     9.35ms   106.91
      ============================================================================
      ```
      
      Reviewed By: @fugalh, @​hannesr
      
      Differential Revision: D2144664
      dce6e23d
  2. 10 Jun, 2015 7 commits
    • Praveen Kumar's avatar
      Fix libc++ use · 86b19dbf
      Praveen Kumar authored
      Summary: Use of std::max from libc++ resulted in error.
      std::max found type of its arguments diffrent
      whereas it expected them to be same.
      This diff fix the error.
      Closes #223
      
      Reviewed By: @yfeldblum
      
      Differential Revision: D2144639
      
      Pulled By: @sgolemon
      86b19dbf
    • Yadwinder Grewal's avatar
      Fix capitalization error in README.md · b8595746
      Yadwinder Grewal authored
      Summary: Closes #211
      
      Reviewed By: @Gownta, @lbrandy
      
      Differential Revision: D2144702
      
      Pulled By: @sgolemon
      b8595746
    • Austin McKinley's avatar
      Fixing typos in README.md · aa427b17
      Austin McKinley authored
      Summary: Closes #202
      
      Reviewed By: @paulbiss
      
      Differential Revision: D2144850
      
      Pulled By: @sgolemon
      aa427b17
    • Ed Baunton's avatar
      Update FBVector.md · e2755116
      Ed Baunton authored
      Summary: Minor typo when referencing `std::allocator`
      Closes #84
      
      Reviewed By: @yfeldblum
      
      Differential Revision: D2144830
      
      Pulled By: @sgolemon
      e2755116
    • Stewart Henderson's avatar
      Update github.com/floitsch/double-conversion to new location · 8c681d3d
      Stewart Henderson authored
      Summary: Closes #212
      
      Reviewed By: @JoelMarcey, @paulbiss
      
      Differential Revision: D2144749
      
      Pulled By: @sgolemon
      8c681d3d
    • Praveen Kumar's avatar
      fix Baton.h typo · 320a9600
      Praveen Kumar authored
      Summary: checked the sense
      Closes #224
      
      Reviewed By: @paulbiss
      
      Differential Revision: D2144508
      
      Pulled By: @sgolemon
      320a9600
    • Hannes Roth's avatar
      (Wangle) Re-add race test · bf590e16
      Hannes Roth authored
      Summary: I figured this test would be useless since it tests a check added before
      everything was converted to FSM. But since it appears to fail on Mac OS
      X, it might be useful to have after all.
      
      Reviewed By: @fugalh
      
      Differential Revision: D2143500
      bf590e16
  3. 09 Jun, 2015 16 commits
    • woo's avatar
      Bump version to 45:0 · 8e845aca
      woo authored
      8e845aca
    • James Sedgwick's avatar
      fix typo in SharedPromise comment · dbd0777d
      James Sedgwick authored
      Summary: ^
      
      Test Plan: OK
      
      Reviewed By: yfeldblum@fb.com
      
      Subscribers: folly-diffs@, jsedgwick, yfeldblum, chalfant
      
      FB internal diff: D2140212
      
      Signature: t1:2140212:1433877717:86b7bf372091b455cdb25a377451e1ed4e21f50d
      dbd0777d
    • Sara Golemon's avatar
      Bump version to 44:0 · 9fd0d36b
      Sara Golemon authored
      9fd0d36b
    • Dave Watson's avatar
      AsyncSSLSocket StartTLS · 727f779b
      Dave Watson authored
      Summary:
      Adds a StartTLS mode to AsyncSSLSocket.  Previously I could only find anyone doing something like this by using AsyncSocket, calling detachFd, then creating a new AsyncSSLSocket, and calling sslConn/sslAccept.
      
      That had a couple downsides: 1) All pointers to the previous AsyncSocket become invalid and similarly 2) have to be super careful reads/writes happen on the correct socket, are flushed before changing socket types, etc.
      
      This makes it super easy to just use the same AsyncSSLSocket for everything:
      a) Create AsyncSSLSocket in StartTLS mode
      b) send/recv anything
      c) Call sslAccept/sslConn.  Existing writes are still flushed in the correct order, any additional writes are buffered until handshake completes
      d) Start receiving encrypted data.
      
      I made it a new mode (vs. the default), since it seems bad to unintentionally send unencrypted data.
      
      Use case is easy secure thrift upgrade (similar to how current kerberos does it)
      
      Test Plan: New unittest
      
      Reviewed By: afrind@fb.com
      
      Subscribers: doug, ssl-diffs@, folly-diffs@, yfeldblum, chalfant, haijunz, andrewcox, alandau, alikhtarov, jsedgwick, simpkins
      
      FB internal diff: D2120114
      
      Signature: t1:2120114:1433798448:caeddc8feb6cc10fb34200ba97ea323bcaf09f7a
      727f779b
    • Hans Fugal's avatar
      fix osx bootstrap for new double-conversion directory structure · 2ef7ef74
      Hans Fugal authored
      Summary:
      Because https://github.com/google/double-conversion/commit/64702b40a2499702f9157ef015f0da6e006114bf
      
      If this breaks an existing checkout, it is because you have an old version of double-conversion now. Go ahead and `rm -rf` it, or start with a clean folly clone.
      
      Test Plan: Clean repo, `./bootstr<tab>`.
      
      Reviewed By: jsedgwick@fb.com
      
      Subscribers: exa, folly-diffs@, yfeldblum, chalfant
      
      FB internal diff: D2136836
      
      Signature: t1:2136836:1433874889:6f6c6a7bd337e052c088aabf89955e9b21b1d8e1
      2ef7ef74
    • Anton Likhtarov's avatar
      Add a guard page to a limited number of stacks · 2aa61de1
      Anton Likhtarov authored
      Summary:
      GuardedPageAllocator now maintains a process-wide cache
      of preallocated stacks with guard pages.  We can't create too many of these, since
      each stack has the overhead of two memory mappings.  Once we run out of preallocated stacks
      we simply fallback on the default allocator.
      
      Test Plan:
      unit tests
      
      perflab
      TAO unit tests
      
      Reviewed By: pavlo@fb.com
      
      Subscribers: zhuohuang, trunkagent, sameen, folly-diffs@, yfeldblum, chalfant
      
      FB internal diff: D2129510
      
      Tasks: 7319041
      
      Signature: t1:2129510:1433542031:324942af3c9813344c1b331ee2c9b66c4bfa3f03
      2aa61de1
    • Hannes Roth's avatar
      (Wangle) variadic collect · db57efd0
      Hannes Roth authored
      Summary:
      For D2099047 (matthieu) and also for symmetry. Can re-use most of the
      code, also refactored it a bit (using an empty base case).
      
      Test Plan:
      Run all the tests.
      
      Will add some more before committing.
      
      Reviewed By: jsedgwick@fb.com
      
      Subscribers: folly-diffs@, jsedgwick, yfeldblum, chalfant, matthieu
      
      FB internal diff: D2131515
      
      Signature: t1:2131515:1433776852:544166fbfdfabf6760fd78f87821290e17e6e4a3
      db57efd0
    • James Sedgwick's avatar
      remove Singleton from io/async deps · 023eb4f8
      James Sedgwick authored
      Summary: unused, caused circular dep issues
      
      Test Plan: compiles
      
      Reviewed By: mzlee@fb.com
      
      Subscribers: subodh, folly-diffs@, yfeldblum, chalfant
      
      FB internal diff: D2135780
      
      Signature: t1:2135780:1433786607:015cfa9bb14472f55f80467f2cfeb7426be9f7ea
      023eb4f8
    • Woo Xie's avatar
      fix the compling error caused by tcpinfo of low version · 64f036b4
      Woo Xie authored
      Summary: my D2097198 break the project relying on old glibc
      
      Test Plan: compling
      
      Reviewed By: wez@fb.com
      
      Subscribers: trunkagent, fugalh, folly-diffs@, jsedgwick, yfeldblum, chalfant
      
      FB internal diff: D2135297
      
      Tasks: 7283522
      
      Signature: t1:2135297:1433791259:8b82b8d9b16da32be54c0dff1214fa20c94840e2
      64f036b4
    • Alan Frindell's avatar
      Add internal mode for HHWheelTimer · 64699b9b
      Alan Frindell authored
      Summary:
      This allows an EventBase to exit loop() even if there are pending timeouts in the timer (make sure to cancelAll before deleting!)
      
      Test Plan: Unit tests
      
      Reviewed By: davejwatson@fb.com
      
      Subscribers: doug, folly-diffs@, yfeldblum, chalfant
      
      FB internal diff: D2111942
      
      Signature: t1:2111942:1432934212:7ac1973bdbbfdbda714699ab373618399f29ef76
      64699b9b
    • Dave Watson's avatar
      Fix haystack threading crashes · c768c3f4
      Dave Watson authored
      Summary:
      proxygen/facebook/httpserver/filter/StatsFilter expects the threadlocal stats_ variable to be initialized before any requests, and destroyed on the same thread.
      
      There were two issues:
      1) addObserver was being called after bind(), so it was possible to get some requests before the stats_ variable was initialized.  Moved up the observer, should fix it (although I don't have a repro for this)
      
      2) on server stop(), sometimes the observer onServerStop() callback was called, but the eventBase had already stopped.  The IOThreadPoolExecutor eventually deleted the eventBase, causing consumeUntilDrained to be called, but in the main thread, and not in the eventBase's thread.  I'm not as sure about this fix, hopefully @jsedgwick can chime in: I explicitly deleted the eventBase on the eventBase thread before join.  Here's the stack for this issue:
      
      P19866015
      
      Reviewed By: shiva@fb.com
      
      Subscribers: doug, fugalh, bmatheny, folly-diffs@, yfeldblum, chalfant, shiva, jsedgwick
      
      FB internal diff: D2132208
      
      Signature: t1:2132208:1433537787:4379ba50a908ca6f19924c2339876afaf663364c
      c768c3f4
    • James Sedgwick's avatar
      FileServer · f406269a
      James Sedgwick authored
      Summary: Based on new FileRegion interface
      
      Test Plan: ran it, streamed lots of files. I have found an obscure way to break it but I don't think it's a FileRegion issue, rather a pipeline/bootstrap issue. Still digging
      
      Reviewed By: hans@fb.com
      
      Subscribers: fugalh, folly-diffs@, jsedgwick, yfeldblum, chalfant
      
      FB internal diff: D2088094
      
      Signature: t1:2088094:1432758904:0f1e5765dbedea5ddbe047db50e7b632cfb0c053
      f406269a
    • James Sedgwick's avatar
      AsyncSocket::writeRequest() and its first user wangle::FileRegion · 7dbfd2f8
      James Sedgwick authored
      Summary: similar to D2050808, but move the functionality into AsyncSocket itself so that you have a consistent interface and contiguous writes for a single file
      
      Test Plan: added unit, will hook this up to a file server example next
      
      Reviewed By: davejwatson@fb.com
      
      Subscribers: fugalh, net-systems@, folly-diffs@, jsedgwick, yfeldblum, chalfant
      
      FB internal diff: D2084452
      
      Signature: t1:2084452:1433181933:175158618966706db00bf6620cc86ae145d04ecf
      7dbfd2f8
    • Steve O'Brien's avatar
      Conv.h: fix a type error caught by clang · 7cae5640
      Steve O'Brien authored
      Summary: Need to be more explicit about types; it was trying to add types deduced to be `unsigned long` + `long` which didn't agree and could be an overflow.  Be explicit anyway about the types involved.  Appease Clang, and also make the code more obvious to the reader.
      
      Test Plan: Tried with gcc 4.9, clang 3.5, clang 3.6.
      
      Reviewed By: yfeldblum@fb.com
      
      Subscribers: mathieubaudet, maoy, folly-diffs@, yzhan, yfeldblum, chalfant
      
      FB internal diff: D2134814
      
      Tasks: 7337462
      
      Signature: t1:2134814:1433726862:5dd80b198187c610f793e26160919922863a22a2
      
      Blame Revision: D1934777
      7cae5640
    • Steve O'Brien's avatar
      decimal conversion: digits10 using bit-counting instructions on x86-64 · 7efcdea3
      Steve O'Brien authored
      Summary: To estimate length of a number's base-10 length in digits, use insn `bsrq` (Bit Scan Reverse) to count significant bits.  From that, approximate base-10 length.  Tries to avoid branchiness, expensive math, and loops.
      
      Test Plan:
      1) Tested correctness by comparing results with `snprintf` and ensuring same string lengths.  Tested at each boundary condition (2^k)-1, 2^k, (2^k+1); and similar for base 10.
      2) Benchmarked with gcc 4.9 and clang 3.5.
      
      Before/after values are millions operations / sec
      GCC 4.9                             Clang 3.5
      1       111.09  111.7   1.005       1       115.36  393.81  3.414
      2       115.36  111.7   0.968       2       115.36  393.89  3.414
      3       114.91  111.34  0.969       3       111.09  393.56  3.543
      4       114.91  111.34  0.969       4       111.09  393.86  3.545
      5       115.36  111.36  0.965       5       111.09  392.18  3.530
      6        99.99  104.32  1.043       6       103.43  393.74  3.807
      7        83.31   84.71  1.017       7        81.06  268.39  3.311
      8        76.9    78.23  1.017       8        76.91  268.26  3.488
      9        62.48   68.26  1.093       9        65.56  190     2.898
      10        59.98   63.65  1.061      10        61.17  190.54  3.115
      11        50.6    55.87  1.104      11        54.54  148.03  2.714
      12        47.19   51.7   1.096      12        50.84  148.57  2.922
      13        40.53   46.99  1.159      13        43.33  115.91  2.675
      14        40.48   43.42  1.073      14        41.5   115.97  2.794
      15        34.92   40.21  1.151      15        37.27   94.89  2.546
      16        33.49   37.51  1.120      16        35.77   94.88  2.653
      17        29.89   35.02  1.172      17        31.7    80.67  2.545
      18        29.11   32.98  1.133      18        30.76   80.63  2.621
      19        26.58   31.05  1.168      19        28.22   70.15  2.486
      20        25.64   29.38  1.146      20        27.96   70.16  2.509
      
      Reviewed By: ldbrandy@fb.com
      
      Subscribers: dancol, trunkagent, marcelo, chalfant, maoy, folly-diffs@, yzhan, yfeldblum
      
      FB internal diff: D1934777
      
      Signature: t1:1934777:1433523486:3acbe7ed9c9560c44194f854754529041eaa289d
      7efcdea3
    • Hannes Roth's avatar
      (Wangle) Clean up tests · 5180b662
      Hannes Roth authored
      Summary:
      This always bothered me. Now:
      
      1) Separate tests for each feature
      2) `XTest.cpp` contains `TEST(X, lowerCaseCamelCase)`
      
      Also cleaned up some header files and using statements.
      
      Shamelessly trying to increase the number of lines that blame to me.
      
      Test Plan:
      Run all the tests.
      
      `git grep 'TEST' -- 'folly/futures/test/*Test.cpp' | cut -d ',' -f 1 | cut -d '/' -f 4 | sort -u`
      
      `diff <(git ls-files -- 'folly/futures/test/*Test.cpp' | cut -d '/' -f 4 | sort) <(git grep 'Test.cpp' -- folly/futures/TARGETS | cut -d '/' -f 4 | cut -d "'" -f 1 | sort)`
      
      Reviewed By: jsedgwick@fb.com
      
      Subscribers: trunkagent, folly-diffs@, jsedgwick, yfeldblum, chalfant
      
      FB internal diff: D2127359
      
      Tasks: 6019442
      
      Signature: t1:2127359:1433459532:54a91ae83d7fb2d0b3f3769f673fefea20f35435
      5180b662
  4. 05 Jun, 2015 7 commits
    • Noam Lerner's avatar
      Bump version to 43:0 · 66476fc9
      Noam Lerner authored
      66476fc9
    • Nathan Bronson's avatar
      disable stack madvise optimization on non-Linux platforms · 2df2c550
      Nathan Bronson authored
      Summary:
      This diff strengthens the preconditions for attempting to use
      optimize by madvising away idle stacks, because it seemed to be causing
      problems on OS X (https://github.com/facebook/proxygen/issues/3).
      
      Test Plan: unit tests
      
      Reviewed By: ldbrandy@fb.com
      
      Subscribers: folly-diffs@, yfeldblum, chalfant
      
      FB internal diff: D2129100
      
      Signature: t1:2129100:1433458268:0b6b3696dde6c2bd13b89bc7ec58f0b1898be458
      2df2c550
    • Josh Watzman's avatar
      Add missing include · 59badf85
      Josh Watzman authored
      Summary:
      `std::runtime_error` is defined in this header. Most build
      systems seem to end up including it transitively anyways, but one version
      of Clang on my Mac does not.
      
      Test Plan:
      `fbconfig -r folly && fbmake dbg` still works. Builds on my
      Mac with MacPorts clang 3.6.
      
      Reviewed By: ldbrandy@fb.com
      
      Subscribers: folly-diffs@, yfeldblum, chalfant
      
      FB internal diff: D2127268
      
      Signature: t1:2127268:1433437985:546d0de71d8973d10f8ae3fdb6c61efae59444b9
      59badf85
    • Hans Fugal's avatar
      merge dex and readme · dd5fa012
      Hans Fugal authored
      Summary:
      This is still manual as in the previous DEX.md revision, but I incorporated README.md into dex and redid the manual export.
      
      Test Plan: reading_intensifies
      
      Reviewed By: yfeldblum@fb.com
      
      Subscribers: exa, folly-diffs@, jsedgwick, yfeldblum, chalfant
      
      FB internal diff: D2124555
      
      Tasks: 6047407
      
      Signature: t1:2124555:1433370669:91f8bb55c1e6de4dbeccbb85556f54ae49464c7a
      dd5fa012
    • Giuseppe Ottaviano's avatar
      Reduce footprint of EliasFanoReader · f85b4b76
      Giuseppe Ottaviano authored
      Summary:
      `EliasFanoReader` has a copy of `EliasFanoCompressedList` as member, but it only needs few of its members. With this diff, it only copies the members it needs.
      Also, `progress_` is a duplicate of `upper_.position()`, so it was removed.
      Microbenchmarks do not indicate any significant change in performance.
      
      Test Plan: unit tests
      
      Reviewed By: philipp@fb.com
      
      Subscribers: chaoyc, search-fbcode-diffs@, unicorn-diffs@, folly-diffs@, yfeldblum, tudort, chalfant
      
      FB internal diff: D2125956
      
      Signature: t1:2125956:1433381848:2a333ce7a741bec5d059e9e771309463d6018ea2
      f85b4b76
    • Tudor Bosman's avatar
      Add cloning constructor to folly::IOBuf · a3537a0f
      Tudor Bosman authored
      Summary:
      ``` lang=cpp
      folly::IOBuf buf(folly::IOBuf::CLONE, other);
      ```
      
      is more convenient (and expression-friendly) than
      
      ``` lang=cpp
      folly::IOBuf buf;
      other.cloneInto(buf);
      ```
      
      Test Plan: used it
      
      Reviewed By: davejwatson@fb.com
      
      Subscribers: net-systems@, folly-diffs@, yfeldblum, chalfant
      
      FB internal diff: D2124605
      
      Signature: t1:2124605:1433372767:c167a36ffdc6d20c740aa57895532e9445766fce
      a3537a0f
    • Louis Brandy's avatar
      remove useless self-assignment in folly::iobuf · 26395e9b
      Louis Brandy authored
      Summary:
      I'm pretty sure this doesn't do anything.
      
      Based on a cursory review, I also don't think this is a bug (ie, it should have been assigned to something else).
      
      Test Plan: fbconfig -r folly && fbmake runtests
      
      Reviewed By: tudorb@fb.com
      
      Subscribers: net-systems@, enis, folly-diffs@, yfeldblum, darshan, chalfant
      
      FB internal diff: D2124497
      
      Tasks: 7306976
      
      Signature: t1:2124497:1433368083:1097dc22734dacad59b30d4b721be111d021bb43
      26395e9b
  5. 03 Jun, 2015 8 commits
    • Noam Lerner's avatar
      Bump version to 42:0 · 1b62ef8e
      Noam Lerner authored
      1b62ef8e
    • Hans Fugal's avatar
      (Futures) manually-generated and manually-sanitized DEX.md · 8f51abc5
      Hans Fugal authored
      Summary:
      
      Test Plan: I copied this to a test github project and see that it renders well enough.
      
      Reviewed By: jsedgwick@fb.com
      
      Subscribers: exa, folly-diffs@, jsedgwick, yfeldblum, chalfant
      
      FB internal diff: D2120950
      
      Tasks: 7295194
      
      Signature: t1:2120950:1433289846:8fbf5123e71d5594742305009fadb516206e2ba6
      8f51abc5
    • Giuseppe Ottaviano's avatar
      More flexible constructors for Elias-Fano lists · f9eb4bb4
      Giuseppe Ottaviano authored
      Summary:
      Implement constructors for EliasFanoCompressedList to read a list from a contiguous byte range given either size and upper bound, or size, lower bits width, and upper bits size.
      
      Refactor the rest accordingly.
      
      Test Plan: unit tests
      
      Reviewed By: philipp@fb.com
      
      Subscribers: trunkagent, chaoyc, search-fbcode-diffs@, unicorn-diffs@, folly-diffs@, yfeldblum, tudort, chalfant
      
      FB internal diff: D2105658
      
      Tasks: 5474196
      
      Signature: t1:2105658:1433270469:9948b159504e08c1b00eeb4cbe327752364ec300
      f9eb4bb4
    • Alecs King's avatar
      fix mem leak · 79ae7831
      Alecs King authored
      Summary:
      - use folly::ThreadLocal to work around GCC bug 57914 (with the benefit of accessAllThreads)
      - clean up corresponding thread-local and global cache entries before eventbase gets destructed since there was a possible memory leak for short-term living eventbase.
      
      Test Plan:
      tests
      
      Reviewed By: andrii@fb.com
      
      Subscribers: smarlow, rushix, ilyam, trunkagent, folly-diffs@, yfeldblum, chalfant, jinfu
      
      FB internal diff: D2116216
      
      Tasks: 7291028, 7279391
      
      Signature: t1:2116216:1433212893:e57a7df90b15b89ccd9471469e669c6e7dc477bf
      
      Blame Revision: D1941662
      79ae7831
    • Hannes Roth's avatar
      (Wangle) Don't use std::bind in Core · 789dbd17
      Hannes Roth authored
      Summary:
      Seems like an unnecessary indirection that might make it harder to for
      the compiler to inline everything (if that's even possible with
      `std::bind`)?
      
      Test Plan: Run all the tests.
      
      Reviewed By: hans@fb.com
      
      Subscribers: folly-diffs@, jsedgwick, yfeldblum, chalfant
      
      FB internal diff: D2115032
      
      Signature: t1:2115032:1433182233:3938d0498cad50df32c8b6ee4536de14ae5fd006
      789dbd17
    • Delyan Kratunov's avatar
      Minor fix · 6f8699fc
      Delyan Kratunov authored
      Summary:
      `LockFreeRingBuffer` was using `std::unique_ptr` but not importing `memory`.
      Also, Android NDK's libstdc++ doesn't provide `std::llround`, use straight
      `llround`, we don't need the constexpr-ness anyway.
      
      Test Plan: `fbmake runtests`
      
      Reviewed By: jmkaldor@fb.com
      
      Subscribers: folly-diffs@, yfeldblum, chalfant
      
      FB internal diff: D2116923
      
      Signature: t1:2116923:1433210832:9ec0ed7f558c271a51d528b8f88fbce9b466ba3a
      6f8699fc
    • Mark McDuff's avatar
      AsyncServerSocket: more tries for binding to a port · ff7e12b6
      Mark McDuff authored
      Summary: User reports of intermittent failures at 5.  Setting up a server is expensive.  Binding to a socket is pretty cheap.  Why not 25 tries?  Why not 100?
      
      Test Plan: hope
      
      Reviewed By: alandau@fb.com
      
      Subscribers: folly-diffs@, yfeldblum, chalfant
      
      FB internal diff: D2116187
      
      Signature: t1:2116187:1433199889:09d6916eddf8521f120894ce361c3e1a96905c90
      ff7e12b6
    • Haim Grosman's avatar
      folly: adding folly::ltrimWhitespace / folly::rtrimWhitespace · 5a2591ef
      Haim Grosman authored
      Summary:
      folly: adding folly::trimWhitespace
      
      extending the idea of folly::skipWhitespace.
      the reason for adding it, we want to be able to do:
      
      auto s = skipWhitespace(trimWhitespace(" aaaa "))
      
      very similar to python's strip()
      
      Test Plan:
      adding unit tests:
      
      # make ; _bin/folly/test/string_test --gtest_filter="String.whitespace"
      # fbmake --ccache off --distcc off dbg -j 16
      fbmake dbg -j 16
      Fbmake run id: G62i4cDP42U
      Note: Google Test filter = String.whitespace
      [==========] Running 1 test from 1 test case.
      [----------] Global test environment set-up.
      [----------] 1 test from String
      [ RUN      ] String.whitespace
      [       OK ] String.whitespace (0 ms)
      [----------] 1 test from String (0 ms total)
      
      [----------] Global test environment tear-down
      [==========] 1 test from 1 test case ran. (0 ms total)
      [  PASSED  ] 1 test.
      
      Reviewed By: ldbrandy@fb.com
      
      Subscribers: ldbrandy, folly-diffs@, yfeldblum, chalfant, azhavnerchik
      
      FB internal diff: D2109364
      
      Signature: t1:2109364:1433192444:862e237bba1928fcb94be1f95c57a68d457939e9
      5a2591ef