1. 09 Jun, 2015 10 commits
    • 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
  2. 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
  3. 03 Jun, 2015 23 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
    • Woo Xie's avatar
      enrich network-quality HTTPHeader field with retransmission rate · d9e08fac
      Woo Xie authored
      Summary:
      estimating tcp retransmission rate of the socket
      
      Test Plan: unit tests
      
      Reviewed By: afrind@fb.com
      
      Subscribers: folly-diffs@, njormrod, bmatheny, trunkagent, chalfant, yfeldblum, jsedgwick
      
      FB internal diff: D2097198
      
      Tasks: 4888253
      
      Signature: t1:2097198:1433196365:16db26dfd721514481497eddfc7820a453618d33
      d9e08fac
    • Lucian Grijincu's avatar
      folly: exception_tracer: add throw() to __cxa_begin_catch · 1706959a
      Lucian Grijincu authored
      Summary:
      http://libcxxabi.llvm.org/spec.html
      
      void* __cxa_begin_catch(void* exceptionObject) throw();
      
      ```
      folly/experimental/exception_tracer/ExceptionTracerLib.cpp:145:7: error: '__cxa_begin_catch' is missing exception specification 'throw()' [-Werror]
      void* __cxa_begin_catch(void *excObj) {
      ^
      throw()
      folly/experimental/exception_tracer/ExceptionTracerLib.cpp:35:7: note: previous declaration is here
      void* __cxa_begin_catch(void* excObj);
      ^
      1 error generated.
      11.44s error: folly/experimental/exception_tracer/ExceptionTracerLib.cpp
      fbmake: *** [_build/opt/folly/experimental/exception_tracer/b187621/ExceptionTracerLib.o] Error 1
      ```
      
      Test Plan: fbmake
      
      Reviewed By: philipp@fb.com
      
      Subscribers: folly-diffs@, yfeldblum, tudort, chalfant
      
      FB internal diff: D2115305
      
      Tasks: 5908365
      
      Signature: t1:2115305:1433186210:3652d81ab10effe1be6da86705322ce090fb6cd4
      
      Blame Revision: https://phabricator.fb.com/D2114085
      1706959a
    • Lucian Grijincu's avatar
      folly: -Wsign-compare · 45339b04
      Lucian Grijincu authored
      Test Plan: runtests
      
      Reviewed By: philipp@fb.com
      
      Subscribers: folly-diffs@, jsedgwick, yfeldblum, tudort, chalfant
      
      FB internal diff: D2114063
      
      Signature: t1:2114063:1433111051:6686508d78de39ea4ea5dc283189c472e23f8f42
      45339b04
    • Abhik Chatterjee's avatar
      Comparing against tlsExthostname_ · 8ec98dd8
      Abhik Chatterjee authored
      Summary:
      Instead of comparing tlsExthostname_ with NULL, we are comparing it
      against tlsExthostname_.
      
      Test Plan: Automated tests
      
      Reviewed By: afrind@fb.com
      
      Subscribers: folly-diffs@, yfeldblum, chalfant, moa
      
      FB internal diff: D2106257
      
      Tasks: 4751985
      
      Signature: t1:2106257:1432932687:78c6244392d7842e844a3c1e654ffc4dc0e760a2
      8ec98dd8
    • Hans Fugal's avatar
      update wangle/rx/README.md · b044e5c9
      Hans Fugal authored
      Summary:
      https://github.com/facebook/wangle/pull/1
      
      Test Plan: reads better
      
      Reviewed By: jsedgwick@fb.com
      
      Subscribers: fugalh, exa, folly-diffs@, jsedgwick, yfeldblum, chalfant
      
      FB internal diff: D2111498
      
      Signature: t1:2111498:1432927058:1f14b38faa324d0bdef9421ae5592244a6b78928
      b044e5c9
    • Sarang Masti's avatar
      Fix asan test crashes · b89b79d9
      Sarang Masti authored
      Summary: We need to prevent the socket from being deleted while in the loopCallback.
      
      Test Plan: --  fbconfig '--sanitize' 'address' 'folly/io/async/test' && fbmake runtests
      
      Reviewed By: davejwatson@fb.com
      
      Subscribers: trunkagent, folly-diffs@, yfeldblum, chalfant
      
      FB internal diff: D2109031
      
      Tasks: 7250307
      
      Signature: t1:2109031:1432918801:77f0352254925d3f33f1e004c8bba89cde63e2cf
      
      Blame Revision: D2102601
      b89b79d9
    • Dave Watson's avatar
      Chain executor in timeout functions · 8900cad8
      Dave Watson authored
      Summary: within, onTimeout, etc use the executor of the future if it is set.
      
      Test Plan: added unittest
      
      Reviewed By: hans@fb.com
      
      Subscribers: doug, folly-diffs@, jsedgwick, yfeldblum, chalfant
      
      FB internal diff: D2104770
      
      Tasks: 6958727
      
      Signature: t1:2104770:1432773599:a71c00827071bef46e5700de04c7125142e4eb17
      8900cad8
    • Delyan Kratunov's avatar
      Make TurnSequencer non-x86-safe · 8b9a09ce
      Delyan Kratunov authored
      Summary:
      `TurnSequencer` uses inline assembly, which obviously won't work on ARM.
      Guard said assembly to x86{,_64} targets.
      
      Test Plan:
      Added an always-false `static_assert` to the `ifdef` block, confirmed it gets
      triggered (i.e., we're not removing the `pause` on x86_64).
      
      Reviewed By: ngbronson@fb.com
      
      Subscribers: folly-diffs@, yfeldblum, chalfant
      
      FB internal diff: D2069320
      
      Signature: t1:2069320:1431663264:3b3fb4282cf2b755f9b26c76b608b91ff665e226
      8b9a09ce
    • Delyan Kratunov's avatar
      Make detail/Futex.cpp bionic-safe · 7a4c7813
      Delyan Kratunov authored
      Summary:
      The headers that the Android NDK exports are all sorts of screwed up.
      In particular, they expose a subset of the `futex.h`, so, even though the
      kernel supports newer options, we can't reference them from the NDK headers.
      
      This diff ensures Futex.cpp redefines all the things it uses, if the headers
      are lacking.
      
      It also transitions away from `SYS_` to `__NR_` which is apparently the newer
      convention.
      
      Lastly, the duration usage is made explicitly `time_t`-safe for use on 32-bit
      platforms where `time_t` is `long int` but `std::chrono:seconds` is stored as
      `long long int`.
      
      Test Plan:
      Existing tests, sample app compiled and ran cleanly on Android as well
      (tests not verified on Android due to folly largely being unported to Android yet).
      
      Reviewed By: ngbronson@fb.com
      
      Subscribers: folly-diffs@, yfeldblum, chalfant
      
      FB internal diff: D2069306
      
      Signature: t1:2069306:1431721711:36c77b1afe8dd9259c1050f11a87511dcf7dd25f
      7a4c7813
    • Delyan Kratunov's avatar
      LockFreeRingBuffer · fff701bf
      Delyan Kratunov authored
      Summary:
      This introduces a lock-free ring buffer with the following expected semantics:
      
      1. Writers can't block on readers
      2. Writers are mostly lock-free
      3. Readers can detect if they're being too slow
      4. Be usable on Android (TBD but should work as-is with the armeabi-v7a ABI; armeabi (ARMv5) support is explicitly a non-goal)
      
      Non-goals:
      1. Match MPMCQueue in level of optimization. There's no need for that yet.
      
      Test Plan: iloveunittests
      
      Reviewed By: ngbronson@fb.com
      
      Subscribers: trunkagent, folly-diffs@, yfeldblum, chalfant
      
      FB internal diff: D2037718
      
      Signature: t1:2037718:1432850250:c57963510d8cda58edc006f4c3260f5ac34d4996
      fff701bf
    • Delyan Kratunov's avatar
      Extract TurnSequencer to detail/TurnSequencer · a95dbe43
      Delyan Kratunov authored
      Summary:
      A completely mechanical transformation that moves TurnSequencer into its own
      header, to be used by other collections.
      
      Test Plan: Existing tests.
      
      Reviewed By: jmkaldor@fb.com
      
      Subscribers: folly-diffs@, yfeldblum, chalfant
      
      FB internal diff: D2065108
      
      Signature: t1:2065108:1431474613:a3a9d063ebd2bedb31abb37be5fd33f0fb3eca6a
      a95dbe43
    • Tudor Bosman's avatar
      Fix toString() for authority-less URIs · 5b39efc2
      Tudor Bosman authored
      Summary: Uri("foo:bar").str() would incorrectly return "foo://bar"
      
      Test Plan: test added
      
      Reviewed By: savasp@fb.com, markisaa@fb.com
      
      Subscribers: folly-diffs@, yfeldblum, chalfant
      
      FB internal diff: D2107530
      
      Tasks: 7248055
      
      Signature: t1:2107530:1432837143:c100f148c07b5b141cc036b1b39e6c8317e9bbd6
      5b39efc2
    • Dave Watson's avatar
      Chain interrupt handlers · fa248777
      Dave Watson authored
      Summary: Chain interrupt handlers in then().  User can always choose to set a new one later.
      
      Test Plan: added unittest
      
      Reviewed By: hans@fb.com
      
      Subscribers: doug, folly-diffs@, jsedgwick, yfeldblum, chalfant
      
      FB internal diff: D2091569
      
      Signature: t1:2091569:1432760579:ea7afa9b4e62e4b04b4d5f17950b9b7356a57f09
      fa248777
    • Sarang Masti's avatar
      Fix AsyncSocket::handleRead · f92ce30d
      Sarang Masti authored
      Summary:
      If openssl has buffered data read from the socket, we might not get a
      read event on the socket. So, we must schedule a readCallback to ensure
      before exiting from AsyncSocket::handleRead if we have exhausted the
      maxReadsPerEvent_ limit.
      
      Test Plan: -- modifying existing test to test this corner case.
      
      Reviewed By: davejwatson@fb.com
      
      Subscribers: net-systems@, trunkagent, folly-diffs@, yfeldblum, chalfant
      
      FB internal diff: D2102601
      
      Tasks: 7168699
      
      Signature: t1:2102601:1432837605:82e72a2a1875c08c9c1e8e831796c9c90df927fa
      f92ce30d
    • Lucian Grijincu's avatar
      folly: MemoryMapping: madvise: round the end to lower bound · 23bc29b8
      Lucian Grijincu authored
      Test Plan: n/a
      
      Reviewed By: ott@fb.com
      
      Subscribers: ott, folly-diffs@, yfeldblum, tudort, chalfant
      
      FB internal diff: D2100535
      
      Tasks: 4421175
      
      Signature: t1:2100535:1432674713:6f5f40a8462851b2b8972c68d34ae23aaf1e9340
      23bc29b8