- 27 Apr, 2015 37 commits
-
-
James Sedgwick authored
Summary: Similar to Promise::fulfil -> setWith change, this name is a lot clearer Test Plan: tests Reviewed By: hans@fb.com Subscribers: netego-diffs@, fugalh, mwa, jgehring, fuegen, folly-diffs@, tingy, jsedgwick, yfeldblum, chalfant FB internal diff: D2013124 Tasks: 6837405 Signature: t1:2013124:1429735106:e8861925dfeb6d7f0662c1057cbcf2ad8dcf008c
-
Dave Watson authored
Summary: Change ThreadManager interface to more generic Executor interface. Specific example of supporting fibers. This diff would replace D1967655 Test Plan: added several unittests Reviewed By: alandau@fb.com Subscribers: doug, alandau, bmatheny, mshneer, folly-diffs@, jsedgwick, yfeldblum, chalfant, alikhtarov, andrii, yitingli FB internal diff: D1994663 Signature: t1:1994663:1429640509:d729ce6f020563b680d1d549f9aa273c739eb925
-
Hans Fugal authored
Summary: We don't need to check for void after all, and with perfect forwarding we don't need separate const& and && versions. Test Plan: tests still pass Reviewed By: jsedgwick@fb.com Subscribers: exa, folly-diffs@, jsedgwick, yfeldblum, chalfant FB internal diff: D2014264 Tasks: 6847876 Signature: t1:2014264:1429735036:01ac166399ef8d0f2f34adb51e965809022c2b64
-
James Sedgwick authored
Summary: This covers the ubiquitous case. If the approach is approved (the task mentioned changing impl to use 'auto for' so this is a bit different) i'll codemod callsites Test Plan: unit Reviewed By: hans@fb.com Subscribers: trunkagent, folly-diffs@, jsedgwick, yfeldblum, chalfant FB internal diff: D2013573 Tasks: 6779710 Signature: t1:2013573:1429735631:cfa0d3f6672a8966afc0ea18308307e2153793ce
-
Jun Li authored
Summary: MIN_WRITE_SIZE is used to avoid small write calls to SSL_write. If there are consecutive small buffers to write, then will be combined together(by being copied to a local buffer) until total size exceeds MIN_WRITE_SIZE. This reduces number of calls SSL_write, improving performance, and avoiding overhead in OpenSSL. Currently, MIN_WRITE_SIZE is hard coded to be 1500 bytes. Wormhole could benefit from this, as our average message size is several hundreds of bytes. We could get even better throughput with larger MIN_WRITE_SIZE. As discussed with Adam and Alan, there is a good reason to make it configurable, though default value is still 1500. Test Plan: unit tests Reviewed By: simpkins@fb.com Subscribers: net-systems@, ssl-diffs@, folly-diffs@, yfeldblum, chalfant, thomasf FB internal diff: D1996570 Tasks: 6784543 Signature: t1:1996570:1429667035:a661ef30a715dafec3e134a7f6af6f56ada2e8e0
-
Naizhi Li authored
Summary: Today it's hard to create SocketAddress from IPAddress without converting to strings and back. This change adds this capability. Test Plan: build Reviewed By: yfeldblum@fb.com Subscribers: ps, bmatheny, folly-diffs@, yfeldblum, chalfant FB internal diff: D2011879 Signature: t1:2011879:1429733811:c05fc2d5ef5e9fdbbbb54ad26b4d1e3c0ad06dfa
-
Dave Watson authored
Summary: make future::wait() use fiber's baton, so wait works in threads or in fibers. Much cleaner than making a new FiberRequest type in thrift Test Plan: tests Reviewed By: andrii@fb.com Subscribers: doug, alandau, bmatheny, mshneer, andrii, folly-diffs@, yitingli, yfeldblum, jsedgwick, chalfant FB internal diff: D1996283 Signature: t1:1996283:1429144165:da5dc6b1f2a053a45efd39877e79169e3fba810c
-
James Sedgwick authored
Summary: title Test Plan: tests Reviewed By: hans@fb.com Subscribers: laser-diffs@, trunkagent, mhl, rhe, fbcode-common-diffs@, chaoyc, search-fbcode-diffs@, hero-diffs@, zeus-diffs@, vikas, cold-storage-diffs@, rtgw-diffs@, unicorn-diffs@, targeting-diff-backend@, netego-diffs@, apollo-diffs@, everstore-dev@, zhuohuang, zhguo, jying, darshan, apodsiadlo, alikhtarov, folly-diffs@, wch, lins, tingy, jsedgwick, thom, yfeldblum, petchean, iaroslav, qhuang, gus, san, tomasz, pknowles, lyang, chalfant, paggarw, stevenkim FB internal diff: D2003300 Tasks: 6025255 Signature: t1:2003300:1429659170:e18999cba45e8aa9019aa94f1f29732076a274ad
-
James Sedgwick authored
Summary: as above. it never ends. Test Plan: added unit Reviewed By: hans@fb.com Subscribers: folly-diffs@, jsedgwick, yfeldblum, chalfant FB internal diff: D2011569 Signature: t1:2011569:1429660210:930cb17682d5c86a11881a23efe0a91f4c6a36b1
-
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 docblock comments Reviewed By: jsedgwick@fb.com Subscribers: folly-diffs@, davejwatson, chalfant, yfeldblum, nkgupta, jsedgwick, exa, robbert FB internal diff: D2011542 Tasks: 6771589, 6838553 Signature: t1:2011542:1429660204:f5959b1e0b3b36dfb8c3c7091302d19101dde93b
-
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 3 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
-