- 27 Apr, 2015 27 commits
-
-
James Sedgwick authored
Summary: this was a fun one. Add a specialized implementation that builds up the results in a map with their indices and aggregates them into a vector at the end Test Plan: unit tests Reviewed By: hans@fb.com Subscribers: folly-diffs@, jsedgwick, yfeldblum, chalfant FB internal diff: D2002444 Signature: t1:2002444:1429642589:ee5aa5e8c461db97a28642b9887b3158df317813
-
James Sedgwick authored
Summary: simple sugary syrup, best used in conjunction with collect/whenAll Test Plan: unit Reviewed By: hans@fb.com Subscribers: trunkagent, folly-diffs@, jsedgwick, yfeldblum, chalfant, cgthayer FB internal diff: D1999047 Tasks: 6045623 Signature: t1:1999047:1429570631:62361bb43dc5489fe3d4eb31af404faf8a765402
-
Hans Fugal authored
Summary: Rather than crashing spectacularly, if `Executor::add` throws (e.g. because the queue is full), then discard the result we got and assume the exception the executor threw instead. Alternatively, we could pass this exceptional Try to the callback (without an executor, as it is here), but not perturb `result_`. This would mean two different world views in these two code snippets: auto f1 = makeFuture(42).via(&crappyExecutor); f1.value(); // 42 (no callback happened) f1.then(...); // would see the executor's exception. Would also be ill-advised to do this after value() auto f2 = makeFuture(42).via(&crappyExecutor) .then([](int x) { return x * 2; }); // skipped f2.value(); // throws executor's exception It feels rude to throw away the result, but it feels too potentially dangerous to allow this split view of the world. Test Plan: modified unit Reviewed By: jsedgwick@fb.com Subscribers: exa, folly-diffs@, jsedgwick, yfeldblum, chalfant FB internal diff: D2007729 Tasks: 5306911 Signature: t1:2007729:1429627114:b627ce758ce9231298f1b28e203ccc1ee415ed9a
-
James Sedgwick authored
Summary: This reverts commit bb08e2405dc68e6dab1f0066b15faa2821ad3dc7. Test Plan: revert-hammer Reviewed By: hans@fb.com Subscribers: mathieubaudet, folly-diffs@, jsedgwick, yfeldblum, chalfant FB internal diff: D2006283 Signature: t1:2006283:1429556243:41e6b3189ce2da5a0f1a32a663ff8761628ca574
-
Dave Watson authored
Summary: Moar unittests. Test Plan: unittests Reviewed By: hans@fb.com Subscribers: doug, fugalh, folly-diffs@, jsedgwick, yfeldblum, chalfant FB internal diff: D1959161 Signature: t1:1959161:1429292487:b7d10be35c2cf1d0bc1b399f4f523392a138a217
-
Nicholas Ormrod authored
Summary: This reverts commit 95a80fd4cb5a4b31b41b34fd24d591e0fc1b0650. Test Plan: n/a Reviewed By: andrewjcg@fb.com Subscribers: trunkagent, folly-diffs@, yfeldblum, chalfant FB internal diff: D2004342 Tasks: 6804947 Signature: t1:2004342:1429332777:4dd1c45e22ee4da69e5e84d3c5f67bada263f307 Blame Revision: D2002345
-
Nicholas Ormrod authored
Summary: This reverts commit 42add531d4bdb1f95c40e41981f908a1b70865fb. Test Plan: n/a Reviewed By: andrewjcg@fb.com Subscribers: folly-diffs@, yfeldblum, chalfant FB internal diff: D2002345 Tasks: 6804947 Signature: t1:2002345:1429296810:7db71fe4748d5c71f0f0486751ee426c2cdff653
-
Hans Fugal authored
Summary: Pass an Executor to `then`, which applies only for that callback. This is on the one hand just a convenience method, but it's a major convenience when it's needed, because grabbing, storing, and restoring the old Executor in the middle of a chain is very inconvenient indeed. Test Plan: new unit Reviewed By: jsedgwick@fb.com Subscribers: robbert, exa, folly-diffs@, jsedgwick, nkgupta, yfeldblum, chalfant, davejwatson FB internal diff: D1985475 Signature: t1:1985475:1429148056:0450120263ba8110e8825420cbefe3b1887f7306
-
James Sedgwick authored
Summary: as above Test Plan: compile Reviewed By: agoder@fb.com Subscribers: folly-diffs@, jsedgwick, yfeldblum, chalfant FB internal diff: D1999218 Signature: t1:1999218:1429217794:0278955bb471fe73a14ccedb59eae80b98acdbf3
-
Nicholas Ormrod authored
Summary: (from @njormrod) This changes the READMEs to be .md, appropriate for github. I viewed the docs on github, and they looked WAY better as .md files. Signed-off-by: Nicholas Ormrod <njormrod@fb.com> Test Plan: view on github Reviewed By: markisaa@fb.com Subscribers: fugalh, folly-diffs@, jsedgwick, yfeldblum, chalfant FB internal diff: D1999531 Tasks: 6783581 Signature: t1:1999531:1429220432:68c6d8dc70806d993c83cacce6369cb7e6e964c8
-
Nicholas Ormrod authored
Summary: This broke the HHVM (on ubuntu at least) Test Plan: compiled it Signed-off-by: Nicholas Ormrod <njormrod@fb.com> Reviewed By: andrei.alexandrescu@fb.com Subscribers: folly-diffs@, yfeldblum, chalfant FB internal diff: D1999341 Tasks: 6783581 Signature: t1:1999341:1429219016:235beef7522c4ada020eedf4f0a2ae200e94b7c8
-
Nicholas Ormrod authored
Summary: Adds x64 arch-specific test inside the if HAVE_X86_64 Signed-off-by: Nicholas Ormrod <njormrod@fb.com> Test Plan: tests Reviewed By: markisaa@fb.com Subscribers: folly-diffs@, yfeldblum, chalfant FB internal diff: D1999428 Tasks: 6783581 Signature: t1:1999428:1429220350:4287342a5a99823c9e4ffe20d0e47039f9fdbc0b
-
Nicholas Ormrod authored
Summary: Signed-off-by: Nicholas Ormrod <njormrod@fb.com> Test Plan: Comments only Reviewed By: markisaa@fb.com, yfeldblum@fb.com Subscribers: fugalh, folly-diffs@, jsedgwick, yfeldblum, chalfant FB internal diff: D1999373 Tasks: 6783581 Signature: t1:1999373:1429219027:225446bb418f3f8d65fb195682e4e7fe315ed41a
-
Marcelo Juchem authored
Summary: Deprecating folly::is_complete. Replacement is fatal::is_complete. Test Plan: unit tests Reviewed By: njormrod@fb.com Subscribers: njormrod, folly-diffs@, yfeldblum, chalfant FB internal diff: D1979124 Tasks: 6697454, 6697600 Signature: t1:1979124:1429153237:dc5736ed0f546dd4dd57bda9176e3c3c13b1235d
-
Nicholas Ormrod authored
Summary: This is folly github pull request https://github.com/facebook/folly/pull/184 It seems we might avoid some temporaries in putMessagesImpl function. To do so we pass arguments directly to constructors with the help of emplace_back member. Test Plan: All folly/tests, make check for 37 tests, passed. Signed-off-by: Nicholas Ormrod <njormrod@fb.com> Reviewed By: davejwatson@fb.com Subscribers: folly-diffs@, yfeldblum, chalfant FB internal diff: D1998515 Tasks: 6783581 Signature: t1:1998515:1429207683:056db129405bed212f50a50821f095c8d3694ec8
-
James Sedgwick authored
Summary: ^ Test Plan: compiles Reviewed By: hans@fb.com Subscribers: folly-diffs@, jsedgwick, yfeldblum, chalfant FB internal diff: D1998822 Signature: t1:1998822:1429211074:3ff9b0827a8ce029efa06a4a78ecea2b07eae3a8
-
Dave Watson authored
Summary: Should also work if eventbase isn't looping Test Plan: added new unittest Reviewed By: hans@fb.com Subscribers: doug, folly-diffs@, yfeldblum, chalfant FB internal diff: D1984259 Signature: t1:1984259:1428691788:edb89424a48b8071a776d828300b7c1094f1c48f
-
James Sedgwick authored
Summary: title Test Plan: unit Reviewed By: hans@fb.com Subscribers: fbcode-common-diffs@, targeting-diff-backend@, zhuohuang, thom, folly-diffs@, jsedgwick, yfeldblum, chalfant FB internal diff: D1992144 Tasks: 6025255 Signature: t1:1992144:1429120337:7678f790dd0f383295c036e6627bdf417ae43fc7
-
James Sedgwick authored
Summary: title Test Plan: tests Reviewed By: hans@fb.com Subscribers: cgist, cold-storage-diffs@, fugalh, atlas2-eng@, zhuohuang, folly-diffs@, jsedgwick, yfeldblum, chalfant, andrii FB internal diff: D1994472 Tasks: 6768508 Signature: t1:1994472:1429117362:218c4fac3c88fcc8d37dc22ff8fe4135a73ec5d5
-
Andre Pinto authored
Summary: Add option to setup fibers' instrumentation. Test Plan: Unit tests Reviewed By: andrii@fb.com Subscribers: folly-diffs@, yfeldblum, chalfant FB internal diff: D1991638 Tasks: 6347990 Signature: t1:1991638:1429144487:3c3586b9943b4cc6bbef0297e48b8bffaf586f0d
-
Andrii Grynenko authored
Summary: We can access LocalData while currentFiber is set. We should make sure it's set to null when LocalData::reset is called. Test Plan: unit test Reviewed By: alikhtarov@fb.com Subscribers: folly-diffs@, yfeldblum, chalfant, bwatling FB internal diff: D1996071 Tasks: 6725667 Signature: t1:1996071:1429135408:d549d577e140ce2867aff4130e73be3884dbd2ed
-
James Sedgwick authored
Summary: title Test Plan: unit Reviewed By: hans@fb.com Subscribers: folly-diffs@, jsedgwick, yfeldblum, chalfant, hannesr, vloh FB internal diff: D1984864 Tasks: 6045789 Signature: t1:1984864:1429116418:b4a9cdbb88f605a09b5753eea41dd970c96b9d4e
-
James Sedgwick authored
Summary: let's not do this to ourselves :) Test Plan: unit Reviewed By: yfeldblum@fb.com Subscribers: folly-diffs@, jsedgwick, yfeldblum, chalfant FB internal diff: D1993491 Signature: t1:1993491:1429063112:b8664b365ad12fa4b51e9bd7fde9e4d197dbc648
-
Brian Watling authored
Summary: Previously we'd call ensureLoopScheduled() but it'd be a no-op since the loop was already scheduled. Delaying the call to ensureLoopScheduled() fixes the issue Test Plan: unit tests (FiberManager.yieldTest fails without the changes to FiberManager-inl.h) Reviewed By: andrii@fb.com Subscribers: folly-diffs@, yfeldblum, chalfant FB internal diff: D1993686 Signature: t1:1993686:1429070253:af933abbbbb33868a402f1d643e4e6f5fef1be83
-
Louis Brandy authored
Summary: During destruction, we enqueue a callback to `eventBase_` that references `wheelTimer_`. So long as that callback exists, we have a circular dependency as both reference the other and we -cannot- safely destroy this object (and its members). The fix is to break this dependency someway. In this case, I've chosen to simply `AndWait` until the eventBase has consumed the message referencing the timer. From here normal destruction of members can proceed safely (destorying HHWheelTimer first, EventBase second). The problem in the current code is that the Eventbase will attempt to consume all messages during it's own destruction. If `wheelTimer_->cancelAll()` is still enqueued, it will attempt to use the now destroyed `wheelTimer_`. Test Plan: Running this test repeatedly was able to repro: ./folly/futures/futures-test --gtest_filter=Timekeeper.futureWithinVoidSpecialization Reviewed By: yfeldblum@fb.com Subscribers: enis, folly-diffs@, jsedgwick, yfeldblum, darshan, chalfant FB internal diff: D1985967 Tasks: 6332729, 6741095 Signature: t1:1985967:1428726270:997ec277c6a73554e54b8cf673acd36ff62976e6
-
Louis Brandy authored
Summary: This code has useful logging when turned up high enough (e.g. --v=11). But we need to parse the flags to see it. Test Plan: trial & error Reviewed By: yfeldblum@fb.com Subscribers: enis, folly-diffs@, jsedgwick, yfeldblum, darshan, chalfant FB internal diff: D1985965 Signature: t1:1985965:1428713065:4607610ec438416fffb5fced1867efa13544eef0
-
Hans Fugal authored
Summary: We need to do forward declarations first, and types.h already does declarations, so just make sure it gets included first in each file. Test Plan: tests Reviewed By: davejwatson@fb.com Subscribers: trunkagent, fugalh, exa, folly-diffs@, jsedgwick, yfeldblum FB internal diff: D1861040 Tasks: 6258585 Signature: t1:1861040:1428604059:de6393e3c87e0694a6b04ad6d440cc9635a1008d
-
- 10 Apr, 2015 13 commits
-
-
Viswanath Sivakumar authored
-
Nathan Bronson authored
Summary: SharedMutex used a saturating counter that records the number of waiting lock() calls, but an ABA problem on futexWait could lead to a lost wakeup when there was exactly 3 or 4 threads contending on the RW lock in W mode. This diff changes the kWaitingE count to be heuristic (it is possible that the count says 1 but there are two waiters), saturates at 2 instead of 3 (because there is no benefit from differentiating those two), and doesn't decrement the count on a successful wakeup. Also, I noticed while debugging this that boost::noncopyable was causing SharedMutex to be 8 bytes when it should only be 4. One way the wakeup could be lost in the old code: 1. A calls lock() 2. A updates state <- kHasE 3. A returns 4. B calls lock() 5. B spins 6. B updates state <- kHasE + 1 * kIncrWaitingE 7. A calls unlock() 8. A updates state <- 0 9. A calls futexWake(), which returns 0 10. A calls lock() 11. A updates state <- kHasE 12. A returns 13. C calls lock() 14. C spins 15. C updates state <- kHasE + 1 * kIncrWaitingE 16. C calls futexWait, expecting kHasE + 1 * kIncrWaitingE 17. B calls futexWait, expecting kHasE + 1 * kIncrWaitingE 18. A calls unlock() 19. A updates state <- 0 20. A calls futexWake(), which returns 1 21. C receives the wakeup 22. C updates state <- kHasE 23. C returns 24. C calls unlock() 25. C updates state <- 0 B missed the wakeup that was intended for it (sent at step 9, wait started at step 17), but went to sleep anyway because it saw the write state at step 17. Now there are two waiters but only 1 recorded in the SharedMutex, at which point failure is inevitable. Test Plan: 1. DeterministicSchedule test using uniformSubset that can repro the problem 2. Test in production scenario that produced occasional deadlocks under high stress Reviewed By: yfeldblum@fb.com Subscribers: folly-diffs@, yfeldblum, chalfant FB internal diff: D1980210 Tasks: 6720328 Signature: t1:1980210:1428623932:ef1c00c3f88154578b2b253ac0cfdbadf9f31d8c
-
Dave Watson authored
Summary: Move this from a test to its own file in codec folder Test Plan: already has a unittest fbconfig -r folly/wangle; fbmake runtests Reviewed By: hans@fb.com Subscribers: doug, fugalh, folly-diffs@, jsedgwick, yfeldblum, chalfant FB internal diff: D1959152 Signature: t1:1959152:1427935371:9d1338986df97fd94f98ad2bf08c731d229bc2b1
-
Dave Watson authored
Summary: Copy of netty's line based decoder. Test Plan: unittests fbconfig folly/wangle/codec; fbmake runtests Reviewed By: hans@fb.com Subscribers: doug, fugalh, folly-diffs@, jsedgwick, yfeldblum, chalfant FB internal diff: D1959155 Signature: t1:1959155:1427935150:e11280c5567df9ad9964dbb656aa090267856f57
-
Dave Watson authored
Summary: Part 2 of pipeline. Use OutputBufferingHandler, which is exactly the same output buffering thrift does currently. Test Plan: A couple canaries, unittests. Specific issues of previous pipeline diffs I think are fixed already and should be fine with this one: * Previously there were missing DestructorGuards. I don't think anything in OutputBUfferHandler needs a DG * previously broke http GET handling. There is a unittest for it now. Canary Reviewed By: alandau@fb.com Subscribers: doug, fugalh, alandau, bmatheny, mshneer, folly-diffs@, jsedgwick, yfeldblum, chalfant, vloh, andreib FB internal diff: D1970949 Signature: t1:1970949:1428360621:a0db142032894525f69c2b144cf946d63f790fe1
-
Lucian Grijincu authored
Test Plan: ran it Reviewed By: philipp@fb.com Subscribers: folly-diffs@, yfeldblum, chalfant FB internal diff: D1974936 Signature: t1:1974936:1428453023:1a83ed8336f75b745bffc633b8471231423b0fb0
-
Lucian Grijincu authored
Summary: the file needs to be opened with write-permissions before it can be mmaped with PROT_WRITE. Test Plan: n/a Reviewed By: philipp@fb.com Subscribers: folly-diffs@, yfeldblum, chalfant FB internal diff: D1974895 Signature: t1:1974895:1428451664:1106019abf02b9de659ce0d305e3d788ae7d60bc
-
Dave Watson authored
Summary: Is there any reason we shouldn't just cache the chain length everywhere? Currently the pipeline does a lot of passing of buffers between IOBufQueues, I wonder if we can get even smarter about passing the length around Test Plan: used in telnet server diff Reviewed By: hans@fb.com Subscribers: doug, fugalh, folly-diffs@, jsedgwick, yfeldblum, chalfant FB internal diff: D1959167 Signature: t1:1959167:1427934568:eb9a49514b2bb7d157879bb8efa99f12092d5e95
-
Andrii Grynenko authored
Summary: LoopController and Fibers keep references to FiberManager, so implementing move-constructor for it is non-trivial. The only purpose of move constructor was to have a create() static method, replaced it with a constructor accepting a type tag. Test Plan: unit test + tao build Reviewed By: stepan@fb.com, pavlo@fb.com Subscribers: folly-diffs@, yfeldblum, chalfant FB internal diff: D1971881 Signature: t1:1971881:1428374073:945d913e69eaa6f957dace981c23835105d91935
-
Dave Watson authored
Summary: AsyncUDPServerSocket doesn't make it easy to write to the same socket you read from. Add the socket as a callback param, similar to AsyncServerSocket Test Plan: fbconfig -r folly; fbmake dbg Will fixup any other spots contbuild finds Reviewed By: hans@fb.com Subscribers: bmatheny, doug, fugalh, folly-diffs@, jsedgwick, yfeldblum, chalfant FB internal diff: D1948936 Signature: t1:1948936:1427841651:20d13d73c06d31c75056624f051a6fd35b9701fb
-
Brian Watling authored
Summary: This diff allows fibers to explicitly yield execution to other fibers and the event loop Test Plan: unit tests Reviewed By: andrii@fb.com Subscribers: folly-diffs@, yfeldblum, chalfant, tao-eng@ FB internal diff: D1965297 Signature: t1:1965297:1428082686:e524e9dd21b3fb951e1d3556e4cb3eedc3e6511a
-
Andrii Grynenko authored
Test Plan: contbuild Reviewed By: pavlo@fb.com Subscribers: alikhtarov, folly-diffs@, yfeldblum, chalfant FB internal diff: D1966698 Signature: t1:1966698:1428367351:62f2218c23d4911c15055917c0fbae31a2420903
-
Hans Fugal authored
Summary: We were forward-declaring `Executor` and `IOExecutor` for great compilation speed. However, this leaves users of this header to include at least one of those headers in their cpp file to actually use it, and that's kind of annoying. `Executor` and `IOExecutor` are not templated and are quite small, so it seems like the compilation speed benefit is minimal compared to the convenience factor, so this diff just includes the two headers. (Probably including `Executor.h` is redundant since `IOExecutor.h` probably includes it, but for completeness and explicitness, and in case `IOExecutor` also just forward-declares `Executor` now or in the future.) Test Plan: stuff still builds Reviewed By: davejwatson@fb.com Subscribers: fugalh, exa, folly-diffs@, jsedgwick, yfeldblum, chalfant FB internal diff: D1970179 Signature: t1:1970179:1428351076:e9c3700a868688035e7ff50486b8cead751d3c02
-