- 19 Nov, 2014 10 commits
-
-
Dave Watson authored
Summary: Initial pass at moving acceptor to wangle. Involves moving most of the config stuff from proxygen/lib/services, and *all* of the ssl stuff from proxygen/lib/ssl. Only minor changes: * Acceptor can be overriden to use thrift socket types, so I don't have to change TTransportException everywhere just yet * proxygen::Exception to std::runtime_exception in a few spots - looks like it is entirely bad config exceptions, so it should be okay * Just used std::chrono directly instead of stuff in Time.h (which is just typedefs and simple helpers) Test Plan: used in D1539327 fbconfig -r proxygen/httpserver; fbmake runtests Probably other projects are broken, will iterate to fix None of the failling tests look related Reviewed By: dcsommer@fb.com Subscribers: oleksandr, netego-diffs@, hphp-diffs@, ps, trunkagent, doug, fugalh, alandau, bmatheny, njormrod, mshneer, folly-diffs@ FB internal diff: D1638358 Tasks: 5002353 Signature: t1:1638358:1414526683:87a405e3c24711078707c00b62a50b0e960bf126
-
Philip Pronin authored
Summary: See this LSan abort: https://phabricator.fb.com/P17233565. Destructor of the object stored in `folly::ThreadLocal` itself may be using `folly::ThreadLocal` with the same tag, with the current implementation these objects may escape cleanup happening on thread exit. Test Plan: _build/opt/folly/test/thread_local_test --gtest_filter=ThreadLocalPtr.CreateOnThreadExit Reviewed By: lucian@fb.com Subscribers: njormrod, folly-diffs@ FB internal diff: D1682698 Tasks: 5596043 Signature: t1:1682698:1416006810:100aaa5c17cecceeea568165d552d9d7907f38d0
-
Alex Landau authored
Summary: Add a specialized Cursor method that reads exactly 1 byte, in addition to the existing one that reads into a buffer. Use it when reading varints and standalone bytes in a CompactProtocol struct. Test Plan: ``` ------ old ------ ------ new ------ Benchmark time/iter iters/s time/iter iters/s win ========================================================================================= CompactProtocol_read_Empty 18.68ns 53.54M 13.21ns 75.69M 41.37% CompactProtocol_read_SmallInt 42.60ns 23.47M 29.95ns 33.39M 42.27% CompactProtocol_read_BigInt 83.62ns 11.96M 68.40ns 14.62M 22.24% CompactProtocol_read_SmallString 67.33ns 14.85M 55.62ns 17.98M 21.08% CompactProtocol_read_BigString 353.83ns 2.83M 330.19ns 3.03M 7.07% CompactProtocol_read_BigBinary 190.82ns 5.24M 182.90ns 5.47M 4.39% CompactProtocol_read_LargeBinary 200.95ns 4.98M 187.00ns 5.35M 7.43% CompactProtocol_read_Mixed 137.42ns 7.28M 102.98ns 9.71M 33.38% CompactProtocol_read_SmallListInt 203.98ns 4.90M 146.68ns 6.82M 39.18% CompactProtocol_read_BigListInt 120.50us 8.30K 71.56us 13.97K 68.31% CompactProtocol_read_BigListMixed 1.62ms 617.07 1.26ms 795.60 28.93% CompactProtocol_read_LargeListMixed 177.50ms 5.63 140.73ms 7.11 26.29% ``` Reviewed By: haijunz@fb.com Subscribers: trunkagent, alandau, bmatheny, njormrod, mshneer, folly-diffs@ FB internal diff: D1678077 Signature: t1:1678077:1415923409:22accee6b62b6e2bf471f3758a290f71978a8c4e
-
Andrii Grynenko authored
Summary: Introduces a Singleton which keeps a map persistence_id => mcrouter_t*. Makes mcrouter instance not know if it's managed by McrouterManager. Test Plan: unit tests Reviewed By: pavlo@fb.com Subscribers: trunkagent, alikhtarov, njormrod, folly-diffs@ FB internal diff: D1673274 Signature: t1:1673274:1415735863:c990a6a526f9525c68cc23892d690a9b3cb94ace
-
Hans Fugal authored
Summary: It already does the work (`runInEventBaseThread`) but it will now be convenient to pass an `EventBase` where wangle wants an `Executor`. Had to rip off the `boost::noncopyable` from `wangle::Executor` which is an interface and does not require non-copyability so that didn't really belong there in the first place I think. (Without this change, you get an obscure compiler error because of the double-inheritance from `boost::noncopyable`). Test Plan: Things build, tests pass Reviewed By: davejwatson@fb.com Subscribers: jsedgwick, trunkagent, fugalh, exa, njormrod, folly-diffs@, andrii FB internal diff: D1671500 Signature: t1:1671500:1415727572:a7dba33c669ca122aecaee3c700f9e53e54838d1
-
Nick Burrett authored
Summary: Patch D1585087 exposes two flaws in EventBase(). It introduces IO worker threads to the ThriftServer which are constructed/destructed in parallel. Within the construction phase, a new EventBase() is instantiated for each thread and unwound in destruction. When using the BaseControllerTask (in Python), the following sequence is observed: a = event_init() [ThriftServer] b = event_init() [IO worker 1] c = event_init() [IO worker 2] ... event_base_free(c) event_base_free(b) event_base_free(a) -> segfault 1. event_init() should only ever be called once. It internally modifies a global variable in libevent, current_base to match the return value. event_base_free() will set current_base back to NULL if the passed in arg matches current_base. Therefore subsequent calls must use event_base_new(). 2. Since current_base is a global and EventBase() is called by multiple threads, it is important to guard with a mutex. The guard itself also exposed the bug because: a = event_init() [current_base = a] b = event_init() [current_base = b] ... event_base_free(b) [b == current_base -> current_base = NULL] So current_base ends up prematurely set to NULL. Test Plan: Run dba/core/daemons/dbstatus/dbstatus_tests.lpar, which no longer segfaults Reviewed By: jsedgwick@fb.com, davejwatson@fb.com Subscribers: dihde, evanelias, trunkagent, njormrod, ncoffield, lachlan, folly-diffs@ FB internal diff: D1663654 Tasks: 5545819 Signature: t1:1663654:1415732265:d51c4c4cae99c1ac371460bf18d26d4f917a3c52 Blame Revision: D1585087
-
Alecs King authored
Summary: find a non-loopback ipv4 or ipv6 address and feed it to folly::IPAddress::hash Test Plan: 1) fbconfig -r mcrouter fbmake runtests 2) compare hostids on different hosts Reviewed By: pavlo@fb.com Subscribers: njormrod, folly-diffs@, trunkagent, ps, bmatheny, alikhtarov FB internal diff: D1668944 Tasks: 5557721 Signature: t1:1668944:1415736928:fb4b042a575c0b00f52780f3abf54bf7630b3a97
-
Dave Watson authored
Summary: Using a ThreadLocal cleans up the code quite a bit. Also reuse the shared_ptr in create instead of creating a new one saves an allocation Test Plan: fbconfig thrift/lib/cpp/test:RequestContextTest; fbmake runtests fbconfig common/services/cpp/test:trace_test; fbmake runtests Reviewed By: hans@fb.com Subscribers: trunkagent, doug, alandau, bmatheny, njormrod, mshneer, folly-diffs@, vloh FB internal diff: D1663960 Signature: t1:1663960:1415390250:36d9b772016d2a12d804e98edbc1725af882e507
-
Dave Watson authored
Summary: All pretty trivial: https://github.com/facebook/folly/issues/99 https://github.com/facebook/folly/issues/98 https://github.com/facebook/folly/issues/45 Test Plan: Will watch jenkins fbthrift build Reviewed By: dcsommer@fb.com Subscribers: doug, njormrod, folly-diffs@ FB internal diff: D1669952 Signature: t1:1669952:1415643677:906234f0a89f38645b0072d3c88762d8fa2729dc
-
Dmitry Panin authored
Summary: Inside `set()` we can do pruning, but it will happen with default pruneHook. Adding it as an optional param makes API more convenient. (Instead, the users of API could just call `setPruneHook(pruneHook)` before `set`, and then `setPruneHook(nullptr)` afterwards -- but it looks too ugly) Test Plan: ``` fbconfig -r folly/ && fbmake runtests ``` passes: ``` Summary (total time 60.11s): PASS: 1758 FAIL: 0 SKIP: 0 FATAL: 0 TIMEOUT: 0 ``` Reviewed By: njormrod@fb.com Subscribers: trunkagent, agartrell, njormrod, folly-diffs@ FB internal diff: D1665690 Tasks: 5551091 Signature: t1:1665690:1415391406:e4d2a956f9212aed70ab518159dbb19553764ce4
-
- 08 Nov, 2014 30 commits
-
-
Pavlo Kushnir authored
-
Nicholas Ormrod authored
Summary: Fix EOF whitespace for file in `find folly -type f` ; do if [ -z "`tail -n1 $file`" ] ; then sed -i '$d' $file ; fi ; done Test Plan: unit tests Reviewed By: robbert@fb.com Subscribers: trunkagent, sdwilsh, njormrod, folly-diffs@ FB internal diff: D1644130 Tasks: 5486739 Signature: t1:1644130:1414715392:b6c783851aa030ad1148f84a98139a5dca207da0
-
Misha Shneerson authored
Summary: title Test Plan: unit tests Reviewed By: andrei.bajenov@fb.com Subscribers: trunkagent, mcduff, hitesh, alandau, bmatheny, njormrod, mshneer, folly-diffs@, andreib, davejwatson FB internal diff: D1666499 Tasks: 5563183 Signature: t1:1666499:1415347256:d58c8bbe952385c1c96f7f8cc6ae7f02216c56bb
-
Dave Watson authored
Summary: One of the last thrift -> folly moves. The only change was the exception types - there are small wrapper classes in thrift/lib/cpp/async left to convert from AsyncSocketException to TTransportException. Test Plan: run unit tests Reviewed By: dcsommer@fb.com Subscribers: jdperlow, trunkagent, doug, bmatheny, ssl-diffs@, njormrod, mshneer, folly-diffs@, fugalh, jsedgwick, andrewcox, alandau FB internal diff: D1632425 Signature: t1:1632425:1414526483:339ae107bacb073bdd8cf0942fd0f6b70990feb4
-
Tom Jackson authored
Summary: Not needed, I don't know why I put them there before. Test Plan: Run the unit test Reviewed By: njormrod@fb.com Subscribers: njormrod, folly-diffs@ FB internal diff: D1665689 Tasks: 5487902 Signature: t1:1665689:1415323144:0998e7f700a3b40652615a36c3b9c9f661fbdadf
-
Daniel Sommermann authored
Summary: There was a bit of gap in test coverage for bracketed ipv6 Test Plan: unit tests Reviewed By: viswanath@fb.com Subscribers: doug, ps, bmatheny, njormrod, folly-diffs@ FB internal diff: D1664783 Signature: t1:1664783:1415316694:b17e0dc1fcfece06c6e04e5f65e2095c66d28cc4
-
Dmitry Panin authored
Summary: `bm_max_secs` has type int32 So when this value is more than 2, expression ``` FLAGS_bm_max_secs * 1000000000; ``` overflows Test Plan: I did put a ``` LOG(INFO) << timeBudgetInNs; ``` and observed correct values (before fix they were overflowed) Reviewed By: antonl@fb.com Subscribers: njormrod, folly-diffs@ FB internal diff: D1663247 Signature: t1:1663247:1415261814:c9154ffde183b2a4f5403e534e47e52e8276c61b
-
Philip Pronin authored
Summary: This diff updates `folly::CpuId` with support of extended features (EAX = 7, ECX = 0) to provide detection logic for BMI1 introduced in Haswell, and provides support for `BLSR` instruction in `EliasFanoReader`. Test Plan: I used clang to compile the logic and run unittests Reviewed By: lucian@fb.com Subscribers: fbcode-common-diffs@, trunkagent, chaoyc, search-fbcode-diffs@, unicorn-diffs@, njormrod, folly-diffs@ FB internal diff: D1658100 Signature: t1:1658100:1415126635:d1820b8eb41c9e9786b5c8062b801cf1e2049a97
-
Hans Fugal authored
Summary: `calledBack_` could be seen as true by both threads in this conditional. Classic rookie mistake. :-/ Test Plan: run unit tests Reviewed By: darshan@fb.com Subscribers: trunkagent, hannesr, net-systems@, fugalh, exa, njormrod, folly-diffs@ FB internal diff: D1661199 Tasks: 5542938, 5506504 Signature: t1:1661199:1415215840:fb69f56c8cf6f59beeca809724ce015b5260d9ad Blame Revision: D1636487
-
Brian Watling authored
Summary: Switch from dynamically allocating a File to using a raw fd for readRandomDevice. This prevents races at shutdown while also eliminating the memory leak Test Plan: run unit tests Reviewed By: meyering@fb.com Subscribers: njormrod, folly-diffs@, tao-eng@ FB internal diff: D1662151 Signature: t1:1662151:1415229242:525b6294b27bb68b5dda70aadb8d3ba1cc61b815
-
Brian Watling authored
Summary: The comment in readRandomDevice() lies - the PCHECK fails with "Bad file descriptor" in some tests. This is most likely due to a race where a background thread is calling readRandomDevice() while the main thread shuts down. Another possibility is bad destruction order, where rnadomDevice is destroyed before some other static object whose destructor calls readRandomDevice(). Either way, this fixes it without having to chace down every instance. Test Plan: run unit tests Reviewed By: meyering@fb.com Subscribers: antonl, trunkagent, meyering, simpkins, njormrod, folly-diffs@, tao-eng@ FB internal diff: D1660903 Signature: t1:1660903:1415215895:7f1f96ab7416b45c4dc18e78173fb59eb27bd03b
-
Hans Fugal authored
Summary: Race in `++ctx->count == ctx->total`. This ordering, while not very obvious or likely, is possible: T1 T2 -- -- ++ctx->count ++ctx->count ctx->total == setValue delete ctx ctx->total == setValue delete ctx Test Plan: That's the idea, anyway. I need some sleep, and it takes 20 minutes to build and test. I had a more convoluted fix (using `shared_ptr`) and it did seem to fix the error we were seeing, but I was seeing another error. Reviewed By: darshan@fb.com Subscribers: trunkagent, net-systems@, fugalh, exa, njormrod, folly-diffs@ FB internal diff: D1660663 Tasks: 5506504 Signature: t1:1660663:1415207632:49dc224363cec27736fc71fb211fa846be9e170f Blame Revision: D1636487
-
Lucian Grijincu authored
folly: wangle: NamedThreadFactory: store of the thread prefix locally, don't assume they'll live forever Summary: There's no real reason to store this as a StringPiece, is there? Test Plan: n/a Reviewed By: sdoroshenko@fb.com, robot9@fb.com Subscribers: fugalh, njormrod, folly-diffs@ FB internal diff: D1659558 Tasks: 5538418 Signature: t1:1659558:1415147560:2c5b0c996893854c3ea9d0ad02b006bcc5960ffa
-
Nicholas Ormrod authored
Summary: There are two types of licenses used in folly, only one of which is accepted by the linter. This diff changes the license notices in pre-existing folly files! Many folly/io/async/* files have the second type of license, but without a Copyright notice. I have added copyright notices to these files. I have also added a compliant notice to folly/test/function_benchmark/benchmark_impl.h, which was the sole file in folly/test/function_benchmark/ that didn't have a standard license. Test Plan: The changes to folly are comment only. Run all of folly against the linter, see no more license errors. Reviewed By: davejwatson@fb.com Subscribers: trunkagent, sdwilsh, njormrod, folly-diffs@, sjenkins FB internal diff: D1648489 Tasks: 5486739 Signature: t1:1648489:1415035522:3d8bd9611eb7c7117b70d5e7f68de5768639a727
-
Nicholas Ormrod authored
Summary: Statics in headers are bad. Test Plan: run unit tests Reviewed By: robbert@fb.com Subscribers: trunkagent, sdwilsh, njormrod, folly-diffs@ FB internal diff: D1646906 Tasks: 5486739 Signature: t1:1646906:1415042805:dc4d1cec54e9320f1e609808a73622c731a4cdc9
-
Nicholas Ormrod authored
Summary: Remove the protected inheritance from folly. The code looks like the protected might be appropriate: there are some derived classes which might want access to the AsyncTimeout. Test Plan: run unit tests Reviewed By: davejwatson@fb.com Subscribers: trunkagent, sdwilsh, njormrod, folly-diffs@ FB internal diff: D1649686 Tasks: 5486739 Signature: t1:1649686:1415035288:18efd2cf9aae8caab66d8303c22cdc26c6b54ae5
-
James Sedgwick authored
Summary: I wanted some foundational abstractions to start building out codecs on top of. I also know that Blake gets very amused when I shamelessly copy Java/Netty abstractions, and I live to amuse Blake so I did it again. So here's an implementation of something very similar to Netty's ChannelAdapters/ChannelPipelines Only read() and write() for now, everything/anything else can easily be bolted on once the design is settled (if this is at all the direction we want to go) I have a lot of thoughts about this design but I'm going to save my fingers and leave that to ad hoc discussions once folks take a look at this A couple of things, though: - It should be possible to dynamically add handlers to the chain. How I envision this working is that each original adapters keeps two lists of shared/unique ptrs to adapters of the correct type to sit next to them on either side, and dispatch to them appropriately when they're there. - I was trying to do without separate ChannelHandlerContext objects altogether (keep the interface, but have ChannelPipeline act as the context itself) but ran into issues with virtual multiple inheritance. I might have another go at this. - Only movable types are permitted. I hope this won't be too restrictive, because it would be a PITA to support both move-only and copy-only types. - Why no Rx? Seems to me that any handlers that actually needs Rx (e.g. stats fanout or something) can deal with it themselves. - If it turned out to be useful to nest these (for more flexible composition) that would also be doable. i.e. ChannelPipeline<ChannelPipeline<Handler1, Handler2>, ChannelPipeline<Handler3, Handler4>> Test Plan: super basic test compiles and runs as expected Reviewed By: davejwatson@fb.com Subscribers: ajitb, folly-diffs@, ldbrandy, trunkagent, fugalh, njormrod FB internal diff: D1604575 Tasks: 5002299 Signature: t1:1604575:1415034767:bc3b12fae726890aa6a55ed391286917ae23e56e
-
Daniel Sommermann authored
Summary: Folly should be able to compile with strict flags. Test Plan: unit tests, review Reviewed By: meyering@fb.com Subscribers: meyering, trunkagent, doug, fugalh, njormrod, folly-diffs@ FB internal diff: D1627280 Signature: t1:1627280:1414792755:004f5a737ece1e93bcf4331718a98afc57e4f80c
-
James Sedgwick authored
Summary: it's useful to update the prefix after the construction. Test Plan: unit, that's it :/ Reviewed By: davejwatson@fb.com Subscribers: mshneer, folly-diffs@, wch, atlas2-eng@, everstore-dev@, wormhole-diffs@, ads-dsp-eng@, bwester, trunkagent, fugalh, alandau, njormrod, bmatheny FB internal diff: D1585087
-
Dave Watson authored
Summary: Put back previous liger diffs Test Plan: It builds Reviewed By: seanc@fb.com Subscribers: doug, ssl-diffs@, njormrod, folly-diffs@ FB internal diff: D1652754 Signature: t1:1652754:1414785984:df0fc7bf59dc2e89defd2c1a4ffe3b288238ba58
-
Nicholas Ormrod authored
Summary: Many lines that are too long contain URLs. This diff adds url-like lines to the list of exceptions to 80-char limits. It also fixed the locations in folly with line-too-long errors. Test Plan: arc lint on folly, see no line-too-long errors. Reviewed By: robbert@fb.com Subscribers: sdwilsh, njormrod, folly-diffs@ FB internal diff: D1644151 Tasks: 5486739 Signature: t1:1644151:1414779408:76bcec1d14daaa8ed071c715bf26b108c8fe4b87
-
Mark Drayton authored
Summary: Symbols which demangle to a string longer than 1024 bytes are quite common in our code. This diff increases the size of the output buffer to accommodate them. Test Plan: run it Reviewed By: lucian@fb.com Subscribers: trunkagent, njormrod, folly-diffs@ FB internal diff: D1639801 Tasks: 5464222 Signature: t1:1639801:1414784601:2f59d5a58e434f4cf9df5b25b917c5094c8b133f
-
Sachin Kadloor authored
Summary: I had committed a change by mistake. Reverting it. Test Plan: build it. Reviewed By: lakshmiganesh@fb.com Subscribers: njormrod, folly-diffs@ FB internal diff: D1652341 Signature: t1:1652341:1414779013:9f363acba95fbac1988200081659edf71ac63eec
-
Nicholas Ormrod authored
Summary: Some uses of volatile are legit. Add a hidden override. Test Plan: run unit tests Run flint against folly/Malloc.cpp, see no more volatile warning. Reviewed By: andrei.alexandrescu@fb.com Subscribers: sdwilsh, louisk, njormrod, folly-diffs@ FB internal diff: D1644493 Tasks: 5486739 Signature: t1:1644493:1414715317:491d0f631d8152a5b7ec66237e00c404530ab590
-
Dave Watson authored
Summary: add missing ssl dep Test Plan: build it Reviewed By: dcsommer@fb.com Subscribers: doug, njormrod, folly-diffs@ FB internal diff: D1652234 Signature: t1:1652234:1414778507:4504ea06c3076e0cdfa7772166cf48bc564c9076
-
Tomislav Novak authored
Summary: jemalloc seems to now use `4064 * 1024` as `arena_maxclass`. Therefore, allocations that fall in the range `(4064*1024, 4072*1024]` will trigger an assert in `folly::goodMallocSize()` (`nallocx()` will round up sizes within that range up to the next multiple of 4 MB (chunk size)). Test Plan: Call to `folly::goodMallocSize(4161568)` no longer triggeres an assert. Reviewed By: je@fb.com Subscribers: aalexandre, trunkagent, njormrod, folly-diffs@ FB internal diff: D1638370 Signature: t1:1638370:1414703429:f3ed2cc8dcb183ff4e8367e2c1f884e122605cba
-
Sachin Kadloor authored
Summary: Better logging in SocketAddress Test Plan: run it Reviewed By: qwu@fb.com Subscribers: ps, bmatheny, xning FB internal diff: D1644573 Tasks: 5406091 Signature: t1:1644573:1414626398:1e23ee85ec8ee0be89cb6bdc07da23978b4d988a
-
Nicholas Ormrod authored
Summary: Symbols containing two underscores, or starting with underscore followed by a capital letter, are reserved by the implementation. Fix the inappropriate cases, and nolint the ones which we are using correctly Test Plan: run unit tests Reviewed By: robbert@fb.com Subscribers: trunkagent, sdwilsh, njormrod, folly-diffs@ FB internal diff: D1650435 Tasks: 5486739 Signature: t1:1650435:1414713329:7844e7802ebabcac7ef21aef0becf71ba513afb0
-
Nicholas Ormrod authored
Summary: Avoid comparing-the-same-tokens error by parenthesizing one side. This diff only touches folly tests Test Plan: run unit tests Reviewed By: robbert@fb.com Subscribers: sdwilsh, njormrod, folly-diffs@ FB internal diff: D1650386 Tasks: 5486739 Signature: t1:1650386:1414713837:cbb578d23f759aa049f4246113d9da6d40504da4
-
Nicholas Ormrod authored
Summary: Switch to noexcept Test Plan: run unit tests Reviewed By: robbert@fb.com, andrei.alexandrescu@fb.com Subscribers: aalexandre, sdwilsh, njormrod, folly-diffs@ FB internal diff: D1644135 Tasks: 5486739 Signature: t1:1644135:1414715537:22e1baf91ab7e3250b0b2a460a12d56783f2baed
-