- 18 Mar, 2015 9 commits
-
-
Matt Dordal authored
Summary: Seems useful to do without passing in a totally custom queue. Makes the client code a bit simpler. Test Plan: used it, saw low memory usage and no crash Reviewed By: davejwatson@fb.com Subscribers: trunkagent, iaroslav, fugalh, folly-diffs@, jsedgwick, yfeldblum, slarsen FB internal diff: D1907874 Signature: t1:1907874:1426268010:3159ae339b51f5dbc7fe034644bbc968b92b072c
-
Naizhi Li authored
Summary: I will be using multi-buf UDP send soon, so adding the support in folly::AsyncUDPSocket Test Plan: Unit tests and turn server Reviewed By: davejwatson@fb.com Subscribers: trunkagent, folly-diffs@, yfeldblum FB internal diff: D1907189 Signature: t1:1907189:1426266951:046198e0a009fef085ac7eb44f054c67dfb16ba3
-
Adam Simpkins authored
Summary: Add a helper method to efficiently check if the cursor is at the end of the IOBuf chain. This is equivalent to (cursor.totalLength() > 0), but it doesn't need to walk the entire chain just to tell if it is at the end or not. Test Plan: Updated the unit tests to contain some checks for isAtEnd(). Reviewed By: jasmeetbagga@fb.com Subscribers: trunkagent, doug, net-systems@, exa, folly-diffs@, yfeldblum FB internal diff: D1875345 Signature: t1:1875345:1425006512:49ac246fd0ac7937fdcd6cf1359a841f048c444e
-
Stepan Palamarchuk authored
Summary: This used to be protected before. Test Plan: folly/futures tests Reviewed By: andrii@fb.com Subscribers: trunkagent, folly-diffs@, jsedgwick, yfeldblum FB internal diff: D1907063 Signature: t1:1907063:1426116657:d7430304d5f72a048396e83f8dc6b5a92198fb29
-
Matt Dordal authored
Summary: By default, CPUThreadPoolExecutor uses 100 MB of rss for the CPU queue. This is substantially higher than expected. Reduce the default queue size so that it uses much less memory upfront, down to about 6 MB going by the heap profile. Reviewed By: davejwatson@fb.com Subscribers: mwa, ott, iaroslav, jrsherwood, aflock, slarsen, davejwatson, trunkagent, fugalh, folly-diffs@, jsedgwick, yfeldblum FB internal diff: D1900539 Tasks: 6453427 Signature: t1:1900539:1426103805:34fb7b081058fbde89370b5d9ec24ea572c4b0e2
-
Nathan Bronson authored
Summary: D1798929 broke the automake folly build Test Plan: 1. careful visual inspection 2. build Reviewed By: alikhtarov@fb.com Subscribers: folly-diffs@, yfeldblum FB internal diff: D1906281 Signature: t1:1906281:1426106340:621f1e7d2fb18ae2ec5dc604dea0d8ad4353486e
-
Nathan Bronson authored
Summary: SharedMutex is a reader-writer lock. It is small, very fast, scalable on multi-core, and suitable for use when readers or writers may block. Unlike most other reader-writer locks, its throughput with concurrent readers scales linearly; it is able to acquire and release the lock in shared mode without cache line ping-ponging. It is suitable for a wide range of lock hold times because it starts with spinning, proceeds to using sched_yield with a preemption heuristic, and then waits using futex and precise wakeups. SharedMutex provides all of the methods of folly::RWSpinLock, boost::shared_mutex, boost::upgrade_mutex, and C++14's std::shared_timed_mutex. All operations that can block are available in try, try-for, and try-until (system_clock or steady_clock) versions. Both reader-priority and writer-priority versions are provided. Writer-priority is the default at the moment. In my tests SharedMutex is as good or better than the other reader-writer locks in use at Facebook for almost all use cases, sometimes by a wide margin. (If it is rare that there are actually concurrent readers then RWSpinLock can be a few nanoseconds faster.) I compared it to folly::RWSpinLock, folly::RWTicketSpinLock64, boost::shared_mutex, pthread_rwlock_t, and an internal RWLock that uses spinlocks to guard its state and pthread_mutex_t+pthread_cont_t to perform blocking. (The other ReadWriteMutex-s I found use pthread_rwlock_t underneath.) It is generally as good or better than the rest when evaluating size, speed, scalability, or latency outliers. In the corner cases where it is not the fastest (such as single-threaded use or heavy write contention) it is never very much worse than the best. See the bottom of SharedMutexTest.cpp for lots of microbenchmark results. Test Plan: 1. new unit tests 2. new microbenchmarks included here 3. uncommitted microbenchmark from bmaurer's RWSleepLock 4. replace admarket's RWSpinLock and RWLock with SharedMutex, observe neutral adindexer perf in canary 5. replace multifeed's thrift ReadWriteLock with SharedMutex, observe neutral perf in canary Reviewed By: hans@fb.com Subscribers: fbcode-common-diffs@, tnovak, march, davejwatson, trunkagent, philipp, folly-diffs@, yfeldblum, bwatling, bmaurer, bol, marccelani, adri, strager, macsyz, dzhulgakov, zamsden FB internal diff: D1798929 Signature: t1:1798929:1425575976:1c9221317eaa47628a2b8c374f90c7a2d4e3f0f9
-
Adrian Hamza authored
Summary: Some unit tests owned by my team are failing due to segmentation fault in SingletonHolder<T>::registerSingletonMock -> SingletonHolder<T>::destroyInstance. Test Plan: Run folly unit tests and my unit tests. Reviewed By: henryf@fb.com Subscribers: trunkagent, folly-diffs@, yfeldblum FB internal diff: D1873889 Signature: t1:1873889:1425925156:29d54092939d7e9debea3fd55f7105fd320e987e Blame Revision: 91f4942e
-
Andrey Goder authored
Summary: This is a validator for JSON schema (http://json-schema.org/) that works on folly::dynamic. Apparently there are no good open source ones for C++, especially not if you want to use folly::dynamic. I am going to use this to validate JSON configs. It supports basically everything from the standard, except for fetching schemas via http, and using id refs. It supports enough to check schemas against the metaschema. Currently you can define a schema that will crash on validation, if it's infinitely self-recursive. See the unit test case that reproduces this. Fixing this seems hard though, so I didn't bother. It would also probably be slower for normal usage. Test Plan: unit test Reviewed By: lesha@fb.com Subscribers: trunkagent, folly-diffs@, yfeldblum FB internal diff: D1847657 Signature: t1:1847657:1425605163:635dc523aeda1b588c3634d0dc1a48d50a53db79
-
- 06 Mar, 2015 2 commits
-
-
Viswanath Sivakumar authored
-
Mark Isaacson authored
Summary: Remove unnecessary includes from FBVector Gonna see just how cleaned-up sandcastle really is :P Test Plan: Fix errors shown in contbuild Reviewed By: njormrod@fb.com Subscribers: cold-storage-diffs@, jcoens, ldbrandy, trunkagent, oleksandr, netego-diffs@, mmandal, weiyan, ws_dev_diffs, jmkaldor, jhunt, fbcode-common-diffs@, njormrod, folly-diffs@, yfeldblum FB internal diff: D1873145 Signature: t1:1873145:1425505591:9cb345053833afa70f543e2f7acd310ab80b8676
-
- 05 Mar, 2015 6 commits
-
-
Nicholas Ormrod authored
-
Dave Watson authored
Summary: Cleans up the httpserver startup code nicely. The only major change to ServerBootstrap was a check if bind failed to throw an exception. (depends on D1732895) Test Plan: fbconfig -r folly/wangle/bootstrap proxygen/httpserver; fbmake runtests fbconfig -r dfsrouter; fbmake runtests Reviewed By: hans@fb.com Subscribers: yfeldblum, cgheorghe, trunkagent, doug, fugalh, bmatheny, folly-diffs@, jsedgwick FB internal diff: D1800100 Signature: t1:1800100:1424733970:67a61a22d2affadea16d2fd725003915326077b2
-
Sara Golemon authored
-
Ram Kumar Rengaswamy authored
Summary: generate_escape_tables.py uses python range function which does not include the end of the range. Closes #131 Test Plan: See attached test case. Reviewed By: njormrod@fb.com Subscribers: trunkagent, folly-diffs@, yfeldblum FB internal diff: D1871692 Signature: t1:1871692:1425076132:2438ab7554fe87bdef17c82ff27713811a270d7c
-
Nicholas Ormrod authored
Summary: D1845525 was missing some makefile changes. Test Plan: Examine similar change in D1732895 Reviewed By: markisaa@fb.com Subscribers: sdwilsh, folly-diffs@, yfeldblum FB internal diff: D1890197 Signature: t1:1890197:1425526255:e9a23fd96a89d4463cbdfda1385d4fd5f5781e8e
-
Hans Fugal authored
Summary: sugar providing `foo.move()` instead of `std::move(*foo)`. Test Plan: Inspection. Using it in another diff. Reviewed By: yfeldblum@fb.com, hannesr@fb.com Subscribers: trunkagent, exa, folly-diffs@, yfeldblum FB internal diff: D1882208 Signature: t1:1882208:1425331389:a9c09ad2739838c829e2afdad64e985810154226
-
- 03 Mar, 2015 23 commits
-
-
Alecs King authored
-
Subodh Iyengar authored
Summary: Add a test to check what will happen if someone tries to run a job on evb after termination. Test Plan: Unit tests Reviewed By: seanc@fb.com Subscribers: seanc, folly-diffs@, yfeldblum FB internal diff: D1882308 Signature: t1:1882308:1425333248:7ab6692eb0b866fcc9685048eb385bacd90023d1
-
Hans Fugal authored
Summary: Because why not? Test Plan: new unit tests Reviewed By: hannesr@fb.com Subscribers: trunkagent, exa, folly-diffs@, yfeldblum, marccelani FB internal diff: D1866123 Signature: t1:1866123:1425331395:742369597757456e5925af55c5d4198b607126f1
-
Sara Golemon authored
Summary: Use malloc_size() instead Test Plan: HHVM build on MacOS Reviewed By: joelm@fb.com Subscribers: trunkagent, folly-diffs@, yfeldblum FB internal diff: D1875364 Signature: t1:1875364:1425061479:7d8cec757c186fa8c30b6500fca6b2fe4c1ed137
-
Dor Gross authored
Summary: Method will only be applicable for types of the form Future<Future<T>>, calling flatten() on a Future<T> where <T> != Future<R> for any <R> will result with a compile time error. Test Plan: Added tests in FutureTest.cpp. Reviewed By: hans@fb.com Subscribers: ldbrandy, trunkagent, folly-diffs@, jsedgwick, yfeldblum, icanadi FB internal diff: D1843581 Tasks: 6166903 Signature: t1:1843581:1424399517:7146924db3c238b77dd309f1d5916e44a7e81968
-
zhaokai authored
Summary: Make it clear that the variable is const Closes #139 Test Plan: authored tested, contbuild Reviewed By: markisaa@fb.com Subscribers: folly-diffs@, yfeldblum FB internal diff: D1878361 Signature: t1:1878361:1425071448:6871577ddb34f4a8dc30ea37842f9950c3825dde
-
zhaokai authored
Summary: 1. Split the original simple test 2. Add unit test of function: get_ref_default Closes #138 Test Plan: authored tested, contbuild Reviewed By: markisaa@fb.com Subscribers: folly-diffs@, yfeldblum FB internal diff: D1878603 Signature: t1:1878603:1425073330:914a2365fa648142d11b41b387423d78e52f2e08
-
zhaokai authored
Summary: Remove one of the "one" in the comment of BENCHMARK Closes: #140 Test Plan: Inspection. Reviewed By: markisaa@fb.com Subscribers: trunkagent, folly-diffs@, yfeldblum FB internal diff: D1877997 Signature: t1:1877997:1425063475:c53c09d105809de9a9070f464fb0571a4dd1e5d1
-
Dave Watson authored
Summary: Basically a ripoff of Dave's D1483148 but with ChannelPipeline instead of rx. There's going to be a long tail of unit tests here, this is still pretty broken... Not convinced that this is the way to go but I wanted to get a feel for what it would be like to plug it into an IRL system. I think the simplicity/clarity of the handler implementations and to some extent the pipeline spec is an improvement over the rx way but I'm less sure about everything else. Test Plan: compiles and kind of works some of the time but not really Reviewed By: alandau@fb.com Subscribers: wormhole-diffs@, mcduff, hitesh, doug, yfeldblum, folly-diffs@, jsedgwick, subodh, andrewcox, njormrod, trunkagent, fugalh, alandau, bmatheny, mshneer FB internal diff: D1618704 Tasks: 5981284 Signature: t1:1618704:1424980854:83c6193b1156be2ec65cf79f9f2ad1af670da7f8
-
Monica Lee authored
Summary: Added willEqual function and wrote unit tests for it. Test Plan: fbconfig --clang folly/futures && fbmake runtests Reviewed By: hans@fb.com Subscribers: hannesr, trunkagent, folly-diffs@, jsedgwick, yfeldblum FB internal diff: D1859840 Tasks: 6166911 Signature: t1:1859840:1424967149:865ee96ab4d3f5dbf17eb371b2ac3ccb5066ac87
-
Nathan Bronson authored
Summary: This diff gives IndexedMemPool<T> emplace-like semantics when T is not trivial. Test Plan: 1. new unit tests 2. LifoSem benchmark Reviewed By: march@fb.com Subscribers: folly-diffs@, yfeldblum FB internal diff: D1874941 Signature: t1:1874941:1424987308:61bbe7b7e5e6df625a6208cd873c65e523a79fa0
-
Nicholas Ormrod authored
Summary: Update copyright notices in folly to 2015 find folly/ -type f | xargs sed -i 's/Copyright 2014 Facebook, Inc./Copyright 2015 Facebook, Inc./g'find . -type f | xargs sed -i 's/Copyright 2014 Facebook, Inc./Copyright 2015 Facebook, Inc./g' Test Plan: fbconfig -r folly && fbmake runtests Reviewed By: markisaa@fb.com Subscribers: ldbrandy, shilin, sdwilsh, fugalh, njormrod, folly-diffs@, jsedgwick, yfeldblum FB internal diff: D1869183 Signature: t1:1869183:1424823514:a2dd33741a86bf099d5c9e3d8702e6cca6dd672f
-
Haim Grosman authored
Summary: EventBase::runAfterDelay to throw an exception in case it fails to schedule a proper execution of the given callback (instead of silently returning false) it appears to be the right thing to do, since: @davejwatson: Digging through the layers of code, it appears this can only fail if epoll_ctl() with EPOLL_CTL_ADD fails. Ignoring libevent bugs, it looks like the only relevant errors could be ENOMEM or ENOSPC. So nonrecoverable Test Plan: Unit tests Reviewed By: anca@fb.com Subscribers: yzhan, haijunz, simpkins, net-systems@, varunk, zeus-diffs@, nli, dfechete, fugalh, atlas2-eng@, alandau, bmatheny, everstore-dev@, zhuohuang, wormhole-diffs@, anca, mwa, jgehring, oujin, alikhtarov, fuegen, mshneer, wch, bil, sanketh, zippydb, maxwellsayles, jsedgwick, trunkagent, fbcode-common-diffs@, chaoyc, search-fbcode-diffs@, andrewcox, unicorn-diffs@, tw-eng@, xie, kennyyu, yfeldblum, folly-diffs@, davejwatson FB internal diff: D1805125 Signature: t1:1805125:1424927912:8bebb4c3b9f1fa189c0ce97b12cdb8f95dba97ae
-
John Ehrhardt authored
Summary: Updating Folly Formatting's use of separators for Decimal Integers 'd' and Numbers 'n'. Updated Decimal Integers 'd' use of separators to directly use commas ',' and grouping of 3 digits. Updated Numbers use of separators and grouping to follow locale settings. Test Plan: Wrote unit tests to validate the insertion of thousandsSeparators works. Note that the numbers unit test does not modify the locale since the test cases are not thread safe. Reviewed By: lesha@fb.com Subscribers: tudorb, trunkagent, folly-diffs@, yfeldblum, aric FB internal diff: D1821156 Tasks: 6087521 Signature: t1:1821156:1424923837:d0fb383a07fd733375b72b1905e6112afa141265
-
Sean Cannella authored
Summary: Manual inspection of AsyncSocket.o shows the constructors are generating ugly (and large) code. Call the smaller constructors instead of duplicating the code. This reduces the debug .o size from ~1.9MB to ~1.6MB. Test Plan: existing tests Reviewed By: benyluo@fb.com Subscribers: mzlee, folly-diffs@, yfeldblum, mathieubaudet, subodh, pgriess, benyluo FB internal diff: D1870896 Signature: t1:1870896:1424885638:d37fc79c0f88d04109c8bb73e632dc506b9f773b
-
Hans Fugal authored
Summary: Unconditionally execute the action, passthrough semantics. Test Plan: new unit test Reviewed By: bmatheny@fb.com Subscribers: trunkagent, exa, folly-diffs@, yfeldblum, jsedgwick FB internal diff: D1868837 Tasks: 6166860 Signature: t1:1868837:1424820181:0e83f54b59d7091dac60ab65feb387992e8ae89c
-
Sven Over authored
Summary: writeFull() returns ssize_t and without proper casting, comparing it with data.size() triggers a compiler warning (which is treated as an error) in the gcc-4.9-glibc-2.20 toolchain. Test Plan: fbmake runtests Reviewed By: mhx@fb.com Subscribers: folly-diffs@, yfeldblum FB internal diff: D1870710 Signature: t1:1870710:1424874592:f51026c35196d763ad4b192d43c8ccee0255b41d
-
Nicholas Ormrod authored
Summary: See the github pull request at https://github.com/facebook/folly/issues/135 Important optimizations: remove one of the branches and change ##empty()## to ##capacity()==0## Test Plan: Ran extended fbvector test suite (re-enabled in experimental/njormrod) Also fbconfig -r folly && fbmake runtests Reviewed By: markisaa@fb.com Subscribers: trunkagent, sdwilsh, njormrod, folly-diffs@, yfeldblum FB internal diff: D1869112 Tasks: 6338531 Signature: t1:1869112:1424823901:d2d7331aef82edad1e8c159005cc1c7185550d0c
-
Andrei Alexandrescu authored
Summary: Funnily, google::setThreadName is Facebook specific: it's introduced only in the FB build of glog. This diff removes the call because folly should not depend on FB's glog. Test Plan: made sure the line was deleted Reviewed By: ldbrandy@fb.com Subscribers: net-systems@, folly-diffs@, yfeldblum FB internal diff: D1868249 Tasks: 6345935 Signature: t1:1868249:1424812595:2a084754d614ab9b7b6168454f33638882e3f6db
-
Praveen Kumar authored
Summary: EmulatedFutexAtomic concisely says here that it doesn't copy construct, move construct, copy assign, or move assign. Closes #130 Test Plan: Inspection and all unit tests. ``` Summary (total time 66.97s): PASS: 2029 FAIL: 0 SKIP: 0 FATAL: 0 TIMEOUT: 0 ``` Reviewed By: ngbronson@fb.com Subscribers: folly-diffs@, yfeldblum FB internal diff: D1868033 Signature: t1:1868033:1424808823:d9dd618981b29b5949c00190d69d670d96e60e07
-
Beny Luo authored
Summary: encodeVarintToIOBuf and decodeVarintFromCursor are not used when FOLLY_HAVE_LIBLZMA and FOLLY_HAVE_LIBLZ4 are false, which will trigger -Werror,-Wunused-function on compile on mobile. Test Plan: unit test Reviewed By: seanc@fb.com Subscribers: meisner, trunkagent, seanc, folly-diffs@, yfeldblum FB internal diff: D1864016 Signature: t1:1864016:1424702813:75535ea92ac16385ce5c272d93bba507ccbb67a1
-
Andrii Grynenko authored
Summary: Previously leak-fatal could never happen because we were incorrectly checking singleton state. Sending this diff to see how many tests will actually fail and potentially fix worst offenders. Test Plan: unit tests Reviewed By: stepan@fb.com Subscribers: trunkagent, folly-diffs@, yfeldblum FB internal diff: D1838405 Signature: t1:1838405:1424478983:94cda86ed57f38b0cf626b74804fbc168d182c66
-
Andre Pinto authored
Summary: Add option to disable time measurement in EventBase::loopBody() to improve performances when time measurement is not used. Test Plan: Unit tests, benchmarking and manual tests. Reviewed By: pavlo@fb.com Subscribers: trunkagent, folly-diffs@, yfeldblum FB internal diff: D1846020 Tasks: 6086197 Signature: t1:1846020:1424459703:9686a84027e1137ee43eb0458b0baa4fee3a8abf
-