1621 Commits
Author SHA1 Message Date
Praveen Kumar Ramakrishnan c923afa9c1 Bump version to 38:0 v0.38.0 2015-05-11 17:03:26 -07:00
Stepan Palamarchuk 8232c2cd35 Increase fibers stack size if we're running with ASAN
Summary:
In most cases user is not aware of ASAN and fiber stack problem, thus if the stackSize is specified we're not detecting ASAN and probably will crash.
And thus it doesn't seem like a good idea to make it a user responsibility to detect ASAN.

Test Plan: tests

Reviewed By: andrii@fb.com

Subscribers: alikhtarov, folly-diffs@, yfeldblum, chalfant

FB internal diff: D2058741

Tasks: 7016680

Signature: t1:2058741:1431131082:9a41eb40d756c9c7af0632f7ecd55c17d10bb189
2015-05-11 17:02:50 -07:00
Hannes Roth 4a92da5b87 (Wangle) Implement collect* using mapSetCallback and shared_ptrs
Summary:
I figured it would make sense to implement all the collect* functions using a shared_ptr<Context>, instead of doing our manual reference counting and all that. Fulfilling the promise in the destructor seemed like the icing on the cake. Also saves some line of code.

Test Plan: Run all the tests.

Reviewed By: hans@fb.com

Subscribers: folly-diffs@, jsedgwick, yfeldblum, chalfant

FB internal diff: D2015320

Signature: t1:2015320:1431106133:ac3001b3696fc75230afe70908ed349102b02a45
2015-05-11 17:02:48 -07:00
Tom Jackson 5cc2f9945c Add SpookyHashV2-based hash to StringPiece
Summary: Since the old one is weak and slow.

Test Plan: Unit tests

Reviewed By: ott@fb.com

Subscribers: trunkagent, maxime, folly-diffs@, yfeldblum, chalfant

FB internal diff: D2052630

Tasks: 6998080

Signature: t1:2052630:1431015271:bc90ccf99941902cd4bd43a0980238c616e66abf
2015-05-11 17:02:43 -07:00
Alexey Spiridonov 675a137da2 Factor out pipe methods, add takeOwnershipOfPipes
Summary:
In order to create an EventBase'd Suprocess class, I'd like to be able to manage the lifetime of pipes independently of the lifetime of the process. To this effect, I factored out basic Pipe handling, and provided a function that detaches the pipe vector from the Subprocess object.

#6996492 a push-blocking test is broken in trunk

Test Plan: added a unit test, fbconfig -r folly && fbmake runtests && fbmake runtests_opt

Reviewed By: dancol@fb.com

Subscribers: yfeldblum, chalfant, dancol, wez, anarayanan, trunkagent, net-systems@, njormrod, folly-diffs@

FB internal diff: D1699969

Signature: t1:1699969:1430975299:30d291ab7fcc555edddf098b33095a5b29500e76
2015-05-11 17:02:41 -07:00
Alexey Spiridonov ec3c8f790f Destructor DCHECKs for EBADF
Summary: This almost always indicates a double-close bug, or a similarly nasty logic error. I don't dare make it a check, we may have some code running in production which would be broken by the CHECK, but this should give us early warning of any such bugs.

Test Plan:
```
fbconfig folly/test:file_test folly/test:file_util_test
fbmake runtests && fbmake runtests_opt
```

This test used to pass until @tudorb made me remove it due to worries about death tests messing with (currently absent) multi-threading:

```
+
+void testDoubleClose() {
+  File f("/dev/null");
+  checkUnixError(close(f.fd()));  // This feels so... wrong!
+  // The destructor will now try to double-close.
+}
+
+TEST(File, DCHECKDoubleClose) {
+#ifndef NDEBUG
+  // This test makes no sense otherwise, since this is a DCHECK.
+  EXPECT_DEATH(testDoubleClose(), "double-close-FD");
+#else
+  // That sound you hear is millions of lemmings falling to their doom.
+  testDoubleClose();
+#endif
+}
```

Reviewed By: tudorb@fb.com

Subscribers: folly-diffs@, yfeldblum, chalfant

FB internal diff: D2055610

Signature: t1:2055610:1431048270:a469d5c1f8182ffb74700908faa022e9613ed383
2015-05-11 17:02:34 -07:00
Adam Simpkins be171a181d update FunctionScheduler to use std::chrono::steady_clock
Summary:
Use std::chrono::steady_clock instead of clock_gettime(CLOCK_MONOTONIC).
In particular this fixes the build on Mac OS X, which doesn't have
CLOCK_MONOTONIC.

This also updates the code to use steady_clock::time_point correctly, instead
of using a raw milliseconds value for time since the epoch.

Test Plan:
Included unit tests, which were copied over from the legacy internal Facebook
(non-folly) version of this code.

Reviewed By: ldbrandy@fb.com

Subscribers: jwatzman, doug, fbcode-common-diffs@, net-systems@, exa, folly-diffs@, yfeldblum, chalfant

FB internal diff: D2051557

Signature: t1:2051557:1431019654:ee76cfcf8318cc3d8a8d1522b3fc97f08831ecf4
2015-05-11 17:02:31 -07:00
Josh Watzman e3eecdae17 Tweak explicit std::max instantiation
Summary: Per discussion on D2040509 this is better.

Test Plan: Still builds.

Reviewed By: yfeldblum@fb.com

Subscribers: folly-diffs@, yfeldblum, chalfant

FB internal diff: D2051099

Signature: t1:2051099:1430949575:cc167b57f2d6ff42a73dee4e65d22d04932bb279

Blame Revision: rFBCODE9bdb427be1ef80b612e4f364db7809c6351cfe1c
2015-05-11 17:02:29 -07:00
Josh Watzman c9f8c1dba0 OS X doesn't support constructor priorities
Summary:
OS X doesn't support constructor init priorities, at all. AIUI,
it's a limitation of their actual binary format and loader, not just a
tooling/compiler limitation.

This particular usage appears to just be for for logging/bug-finding
purposes, so it looks like just removing the priority on OS X isn't the
end of the world?

Test Plan: g++-4.9 on OS X compiles this file now.

Reviewed By: njormrod@fb.com

Subscribers: ldbrandy, jdelong, folly-diffs@, yfeldblum, chalfant

FB internal diff: D2040557

Signature: t1:2040557:1430975025:73f817b5d19a18dca6b19ba783dbea99192cbc41
2015-05-11 17:02:26 -07:00
Ming Zhao c5fa8a9f88 Add missing #include <gflags/gflags.h>
Summary: Signed-off-by: Nicholas Ormrod <njormrod@fb.com>

Test Plan:
fbconfig -r folly && fbmake runtests

Reviewed By: yfeldblum@fb.com

Subscribers: folly-diffs@, yfeldblum, chalfant

FB internal diff: D2042952

Tasks: 6783581
2015-05-11 17:02:16 -07:00
YM CHEN 56e4be21c4 fix namespace v2
Summary: Signed-off-by: Nicholas Ormrod <njormrod@fb.com>

Test Plan:
fbconfig -r folly && fbmake runtests

Reviewed By: yfeldblum@fb.com

Subscribers: fugalh, folly-diffs@, jsedgwick, yfeldblum, chalfant

FB internal diff: D2043151

Tasks: 6783581
2015-05-11 17:02:15 -07:00
Josh Watzman 4c929bc52d Explicitly template instantiate std::min/max in a couple places
Summary:
This is for OS X; there is apparently some difference between
its types and Linux's typical types, causing incomopatibilities between
a `long int` and a `long long int`. These two explicit template
instantiations fix the issue.

Test Plan: g++-4.9 on OS X compiles these files now.

Reviewed By: lucian@fb.com

Subscribers: folly-diffs@, yfeldblum, chalfant

FB internal diff: D2040509

Signature: t1:2040509:1430516624:9db8146b7824c0d09bac418a10a5f54451cdd5db
2015-05-11 17:02:14 -07:00
Sergey Doroshenko e2e4c525b5 Move FOLLY_DISABLE_ADDRESS_SANITIZER from Fiber::init()'s definition to declaration
Summary:
I just had topaggr built from trunk crash with https://phabricator.fb.com/P19825084. It seems that
placing `FOLLY_DISABLE_ADDRESS_SANITIZER` next to the function definition has no effect. Though
what's strange, https://phabricator.fb.com/D2036280 test plan says the false-positive crashes
stopped after that diff. Have we run the tao script on the latest revisions of that diff? Anyway,
clang/gcc docs clearly say the attributes belong to declarations, not definitions, so let's do that.

Test Plan:
Compiled, unit tests.

Reviewed By: aap@fb.com

Subscribers: folly-diffs@, yfeldblum, chalfant, soren

FB internal diff: D2042149

Signature: t1:2042149:1430681824:aea21b9a1fcddfd5585180ba7f526c3a6ee0c8bf
2015-05-11 17:02:13 -07:00
James Sedgwick 589052a636 Telnet client
Summary:
A client example to match telnet server.

Required a couple additions:
* future result when socket actually connects, similar to netty
* clients support IOThreadPoolExecutor groups
* a pipeline stage to make sure everything runs in the right eventbase thread.

Test Plan:
fbconfig follg/wangle/example/telnet && fbmake dbg
telnet_server
telnet_client

Reviewed By: hans@fb.com

Subscribers: doug, fugalh, folly-diffs@, jsedgwick, yfeldblum, chalfant

FB internal diff: D2010289

Signature: t1:2010289:1430766232:65c6f946e454000f6ea9f41b49197ddbeea5ba3f
2015-05-11 17:02:12 -07:00
James Sedgwick adba2ec8ee telnet server
Summary: similar to https://github.com/netty/netty/tree/master/example/src/main/java/io/netty/example/telnet

Test Plan:
fbconfig folly/wangle/example/telnet; fbmake dbg
_bin/folly/wangle/example/telnet_server --port=8080
telnet localhost 8080

Still a couple sharp edges:
* No easy way to wait for ServerBootstrap termination.
* Pipelines always have to call attachReadCallback
* a bunch of missing methods in pipeline still, like channelActive

Reviewed By: hans@fb.com

Subscribers: doug, fugalh, folly-diffs@, jsedgwick, yfeldblum, chalfant

FB internal diff: D1959172

Signature: t1:1959172:1427993978:463f237036996451187e3ef3983cf2b4e89685ef
2015-05-11 17:02:11 -07:00
James Sedgwick 45e225673d Split HandlerContext and Pipeline into inl headers
Summary:
Leave the important headers visible. Opens the door for decent inline docs.

Test Plan: unit

Reviewed By: hans@fb.com

Subscribers: fugalh, folly-diffs@, jsedgwick, yfeldblum, chalfant

FB internal diff: D2036799

Signature: t1:2036799:1430749004:db5e58655c27b96826549849722fe962b9ae3985
2015-05-11 17:02:09 -07:00
James Sedgwick 8e1544536f explicit instantiation of common Future types
Summary:
Compiling folly/futures:futures-test, this saves 15% (dbg) and 7% (opt)
Compiling all of folly/futures, it's 7% ish for each

Main blocker right now is that this generates a spew of deprecated warnings from calls to core_->(de)activate() from Future::(de)activate(). Can the deprecations be moved up to the Future methods instead?

Also had to fix willEqual for Future<void> which was borked

Test Plan: compiles

Reviewed By: hans@fb.com

Subscribers: trunkagent, folly-diffs@, jsedgwick, yfeldblum, chalfant

FB internal diff: D2021028

Signature: t1:2021028:1430749114:1dd78af47ea91aa5e67929a5884b66ca0c8ae2d8
2015-05-11 17:02:08 -07:00
Nicholas Ormrod 02bb2c340c Updated string.h
Summary:
@markisaa, @ldbrandy: stdarg.h is for ellipses arguments, ##...##, which this file does contain.
The pull request indicates that this header is required for windows. Given that adding it doesn't hurt, and should be there anyways, I'd say go on this pull request.

Fixed a fatal error when compiling folly for HHVM

Signed-off-by: Nicholas Ormrod <njormrod@fb.com>

Test Plan: contbuild

Reviewed By: markisaa@fb.com

Subscribers: folly-diffs@, yfeldblum, chalfant, ldbrandy, markisaa

FB internal diff: D1999557

Tasks: 6783581

Signature: t1:1999557:1429220813:0580882b8a55d86f51cdd602d2d152920d368b75
2015-05-11 17:02:07 -07:00
Andre Pinto 5cf352781a Disable ASAN for Fiber::init()
Summary:
Fiber::init() method modifies all the bytes in the fiber's stack in
order to produce a high watermark of stack memory usage. This behavior
generates ASAN errors, as it modifies stack red zones. For that reason,
ASAN is disabled for that particular method.

Test Plan:
Unit tests

Reviewed By: alikhtarov@fb.com

Subscribers: folly-diffs@, yfeldblum, chalfant

FB internal diff: D2036280

Tasks: 6861962

Signature: t1:2036280:1430439550:e156e0e06fae3615d9d9204e99acaf3072bbfafd
2015-05-11 17:02:06 -07:00
Hannes Roth e4e2520ac4 (Wangle) Fix Executor problem
Summary:
None of these functions should be templated with `class Executor`.
Except `then(Executor, Args...)` because otherwise the compiler gets
confused. This was the combination that worked for both Clang and GCC,
don't ask me why. I'm assuming this puts it on a low priority...

I think this is also OK, because `setExecutor` takes an actual
`folly::Executor`, so even `then(Executor, Args...)` won't just work for any
`Executor`.

Test Plan: Run all the tests.

Reviewed By: jsedgwick@fb.com

Subscribers: folly-diffs@, jsedgwick, yfeldblum, chalfant

FB internal diff: D2036912

Tasks: 6838553

Signature: t1:2036912:1430493088:44f2ffe146298c3f978ac27a45b9b2e33b2b0422
2015-05-11 17:02:04 -07:00
Sean Cannella e9089c4aa7 Lazily initialize AsyncSSLSocket EorBioMethod
Summary:
Address another Android initialization crash by delaying
initialization of the EorBio method until first AsyncSSLSocket
construction.

Test Plan: existing tests

Reviewed By: pgriess@fb.com

Subscribers: net-systems@, ssl-diffs@, folly-diffs@, yfeldblum, chalfant, #csti

FB internal diff: D2036329

Tasks: 6925575, 6925570

Signature: t1:2036329:1430444665:a3201f90860a34808a3cf3b42d530608c8a619a8
2015-05-11 17:02:01 -07:00
Hannes Roth 9a797d917a (Wangle) Chaining reduce
Summary:
Oh, this is best of both worlds: D2015316

If your reduce is really cheap, just use `collect/CollectAll->reduce`.
Otherwise just use `reduce`. Great?

This one doesn't support returning Futures from `func`, but if you want
to do that, just use `reduce`.

Test Plan: Run all the tests.

Reviewed By: hans@fb.com

Subscribers: folly-diffs@, jsedgwick, yfeldblum, chalfant

FB internal diff: D2017238

Tasks: 6025252

Signature: t1:2017238:1430422971:c3471afa53239681f835624becf3c4a238204b70
2015-05-11 17:02:00 -07:00
Hannes Roth a9c6c80d31 (Wangle) Simplify reduce, use the same implementation for func returning T/Future<T>
Summary:
I wanted to use `collectAll` for `reduce` if `func` does not return a
Future, because the overhead seemed smaller, but it has been suggested
that running the callback as soon as possible might be better. Not sure
which is. Note that this also makes n copies of the lambda and moves the
value at least n times.

I also plan to add a `streamingReduce` which calls `func` as soon as
results come in (but out of order).

Test Plan: Run all the tests.

Reviewed By: hans@fb.com

Subscribers: folly-diffs@, jsedgwick, yfeldblum, chalfant

FB internal diff: D2015316

Tasks: 6025252

Signature: t1:2015316:1430349611:4f62a540ded85299a22670dd2add27cf1458e8f8
2015-05-11 17:01:58 -07:00
Tudor Bosman fe381c8b35 IOBuf::reserve would return less tailroom than requested under certain circumstances
Test Plan: test added

Reviewed By: lxiong@fb.com

Subscribers: lxiong, net-systems@, folly-diffs@, yfeldblum, chalfant, pamelavagata, kma

FB internal diff: D2036967

Tasks: 6925950

Signature: t1:2036967:1430431606:3e115f7ed76b207572db26d352bebefe7a3d306d
2015-05-11 17:01:56 -07:00
Vladislav Isenbaev e602963840 Fix race condition in collect(..)
Summary: This is a temporary fix (until D2015320 is checked in) for race condition(s) in collect(..) method.

Test Plan:
Run unit tests
Run buffalo_aggregator canary

Reviewed By: jsedgwick@fb.com

Subscribers: folly-diffs@, jsedgwick, yfeldblum, chalfant

FB internal diff: D2037406

Tasks: 6894157

Signature: t1:2037406:1430435227:ed9612d016cdbd708e2deba02dc4fe0b59632f5a
2015-05-11 17:01:48 -07:00
Hans Fugal 0b46bcd5ec Unit::Lift<T>
Summary: Lift void into the unit monad and pass other types through unscathed.

Test Plan: new unit tests

Reviewed By: yfeldblum@fb.com

Subscribers: exa, folly-diffs@, jsedgwick, yfeldblum, chalfant

FB internal diff: D2029785

Signature: t1:2029785:1430333928:ef2fbb2e3d94518a732f6818a06c32481120bd4f
2015-05-11 17:01:44 -07:00
Hans Fugal 5b531cbb45 Do not construct a Future<T> from a Future<Something> value
Summary: The value constructor can be nice. But when it matches on Future<Something> it just confuses everybody.

Test Plan:
building and running tests
contbuild

Reviewed By: jsedgwick@fb.com

Subscribers: exa, folly-diffs@, jsedgwick, yfeldblum, chalfant

FB internal diff: D2036455

Tasks: 6925951

Signature: t1:2036455:1430423503:73906f748318c4ebec13f45ad3761f104e2ef888
2015-05-11 17:01:41 -07:00
Marcelo Juchem e4c703f058 Convenience functions to wrap a lambda as an AsyncTimeout.
Summary: see title

Test Plan: unit tests added

Reviewed By: davejwatson@fb.com

Subscribers: folly-diffs@, yfeldblum, chalfant, andrewcox

FB internal diff: D2000579

Signature: t1:2000579:1430345677:1d7a78f94bcd8b0912423ca4987a4048c103241c
2015-05-11 17:01:39 -07:00
James Sedgwick 7f413ec31d fix return type for map
Summary:
facepalm

Test Plan: unit

Reviewed By: hans@fb.com

Subscribers: folly-diffs@, jsedgwick, yfeldblum, chalfant

FB internal diff: D2036523

Tasks: 6925951

Signature: t1:2036523:1430423049:b69ace0256eeacdd43490465dc1c862f054a0098
2015-05-11 17:01:36 -07:00
Hans Fugal 026ec6b1f4 Move a little test
Summary: truffleshuffle

Test Plan: runtests

Reviewed By: yfeldblum@fb.com

Subscribers: exa, folly-diffs@, jsedgwick, yfeldblum, chalfant

FB internal diff: D2029715

Signature: t1:2029715:1430285509:165edabb1bdbb2a4766e7619c67e7e568626b903
2015-05-11 17:01:33 -07:00
Hans Fugal db2eae0e1d Future<Unit>::Future()
Summary: Allow `makeFuture()`-like default ctor for `Future<Unit>`

Test Plan: new unit test

Reviewed By: jsedgwick@fb.com

Subscribers: trunkagent, exa, folly-diffs@, jsedgwick, yfeldblum, chalfant

FB internal diff: D2029677

Signature: t1:2029677:1430417794:5ec7fca839294316957803229f4783f2ee875027
2015-05-11 17:01:32 -07:00
Chao Yang 5623085aab Tag dispatch for enqueue/dequeue implementation
Summary:
clang (>=3.6?) reports potential object slicing bug when MPMCQueue is used for
polymorphic class as the queue item, e.g. as in P19814469. This can be false
positive however, since the choice is based on the type trait already.  This
diff uses tag dispatch to selectively compile the overload that will be
executed, therefore if there is no-throw move ctor supplied clang will not
examine the simulated relocation code.

This doesn't avoid object slicing bug however if the client insists to use
MPMCQueue to hold base class while enqueue and dequeue with subclassed item.

Test Plan: compile with --clang

Reviewed By: tudorb@fb.com

Subscribers: folly-diffs@, yfeldblum, chalfant

FB internal diff: D2029949

Signature: t1:2029949:1430264357:af479117adf90bc1915c071e7376a30aacb72f46
2015-05-11 17:01:29 -07:00
James Sedgwick c7138e7ca1 unidirectional pipelines
Summary:
Cleans up bootstrap a bit at the expense of a more complex Pipeline interface
This doesn't have to go in, lmk either way as I want to move on to reorganizing this code into inl headers etc

Test Plan: unit

Reviewed By: davejwatson@fb.com

Subscribers: fugalh, folly-diffs@, jsedgwick, yfeldblum, chalfant

FB internal diff: D2034634

Signature: t1:2034634:1430414670:c91712fb26353987cb471e35a54f55c869ae7cf1
2015-05-11 17:01:22 -07:00
James Sedgwick fdd8e84bdd use inbound/outbound handlers in a few more places
Summary: Also, instead of throwing on finalize() if there's no inbound/outbound handler in the pipeline, log a warning and throw when the operations are attempted. This was necessary for CodecTest which doesn't use outbound handlers.

Test Plan: unit

Reviewed By: davejwatson@fb.com

Subscribers: trunkagent, fugalh, folly-diffs@, jsedgwick, yfeldblum, chalfant

FB internal diff: D2028176

Tasks: 6836580

Signature: t1:2028176:1430346333:fdd645a535e8158d780cfd1119e27803995b663f
2015-05-11 17:01:18 -07:00
James Sedgwick 555213ca92 inbound/outbound handlers
Summary:
Much less copypasta this time around. I wonder if the getters and setters for write flags and read buffer settings are necessary in the new handler types, or even if they belong in the bidirectional handler

I'm all ears for more suggestions on reducing copypasta

I'm going to reorg the code (inl headers etc) in a subsequent diff once this is in - easier to review this way

Test Plan: existing unit, thinking about tests for these changes

Reviewed By: davejwatson@fb.com

Subscribers: fugalh, folly-diffs@, jsedgwick, yfeldblum, chalfant

FB internal diff: D2026522

Tasks: 6836580

Signature: t1:2026522:1430346145:bd7f7770eddce0470e2ac72440fc001cf128df08
2015-05-11 17:01:10 -07:00
James Sedgwick dded909608 moar CRTP to minimize copypasta for inbound/outbound handlers
Summary:
I think this is the best I can do to minimize whjat must be copied for InboundHandler, InboundHandlerContext, InboundContextImpl, outbound equivalents, etc

Test Plan: unit

Reviewed By: davejwatson@fb.com

Subscribers: fugalh, folly-diffs@, jsedgwick, yfeldblum, chalfant

FB internal diff: D2025612

Tasks: 6836580

Signature: t1:2025612:1430346200:bc06162711bbc52b17574297a3569736f7973a7c
2015-05-11 17:01:01 -07:00
Nicholas Ormrod b44cacfd2c struct/class consistency
Summary:
This diff is based on https://github.com/facebook/folly/pull/95
by gitbug user mikekap.

It changes the struct/class naming of forward declarations to match
their definitions.

Test Plan:
fbconfig -r folly && fbmake runtests

Reviewed By: markisaa@fb.com

Subscribers: fugalh, folly-diffs@, jsedgwick, yfeldblum, chalfant

FB internal diff: D2032995

Tasks: 6783581

Signature: t1:2032995:1430339337:79193fd8409b73e8a9155133f326b7cee534244d
2015-05-11 17:00:52 -07:00
Andrii Grynenko 3192839636 Bump version to 37:0 v0.37.0 2015-04-29 15:57:48 -07:00
Dave Watson de6b9a7813 fix unittest break
Summary: It looks like the ubuntu version of gtest complains about this?

Test Plan:
Will watch jenkins fbthrift and proxygen builds

previous jenkins break:
https://ci-builds.fb.com/job/folly/2178/console

Reviewed By: bmatheny@fb.com

Subscribers: doug, folly-diffs@, yfeldblum, chalfant

FB internal diff: D2032761

Tasks: 6913742

Signature: t1:2032761:1430337624:ec65b26cf8da7d0d8c7e449f235de7147d4f17d6

Blame Revision: D2029802
2015-04-29 15:57:37 -07:00
Andrii Grynenko d58181e677 Move Singleton out of folly/experimental into folly/
Test Plan: contbuild

Reviewed By: chip@fb.com

Subscribers: wormhole-diffs@, trunkagent, hphp-diffs@, jan, simpkins, configerator-diffs@, fbcode-common-diffs@, chaoyc, bill, search-fbcode-diffs@, agallagher, nli, marcelo, ckwalsh, mcduff, hitesh, mshneer, unicorn-diffs@, vighnesh, fugalh, andreib, bmatheny, tw-eng@, tanmoyc, zhuohuang, rvm4, antonl, acampi, alikhtarov, hdoshi, rsethi, panin, folly-diffs@, lins, kennyyu, hannesr, jsedgwick, dominik, yfeldblum, songhao, raghavpi, labrams, lyang, chalfant, #preselection, macsyz, nimishshah

FB internal diff: D2012267

Tasks: 5676394

Signature: t1:2012267:1430334667:eaad0262b35ffbfae86df5bdb45bf057ac62c51b
2015-04-29 15:57:37 -07:00
Alex Landau 124877d36e Shave off 1.3s of THeader.h compile time
Summary:
THeader.h went from 1.8s to 0.5s.
Total build of sample project doing thrift client and server stuff went
down 1.5-3% from

```
(run 1)
real    5m25.059s
user    130m30.853s
sys     10m18.642s

(run 2)
real    5m29.483s
user    129m12.209s
sys     10m14.762s
```

to
```
(run 1)
real    5m23.292s
user    125m44.318s
sys     10m7.103s

(run 2)
real    5m20.999s
user    127m4.969s
sys     10m10.118s
```

Test Plan:
fbmake --distcc off --ccache off dbg
Will also watch contbuild, since some files might be missing includes

Reviewed By: haijunz@fb.com

Subscribers: jmarg, anca, reachfrequency-eng@, jhunt, yanli, jgeller, chaoyc, search-fbcode-diffs@, net-systems@, zeus-diffs@, vikas, jcoens, unicorn-diffs@, ldbrandy, jteller, atlas2-eng@, everstore-dev@, leis, benj, laser-diffs@, zhguo, jying, wanghuan, jeremyfein, dbolcioni, jacekm, maxwellsayles, osmith, pallotron, fbcode-common-diffs@, davejwatson, andrewcox, marcelo, ckwalsh, mcduff, hitesh, mshneer, fugalh, alandau, bmatheny, folly-diffs@, jsedgwick, yfeldblum, haijunz, chalfant

FB internal diff: D2029911

Signature: t1:2029911:1430261056:9ae688c50585a6454479f810d80b2c1c79b60e04
2015-04-29 15:57:37 -07:00
Hans Fugal dd00fd8134 Move this reduce to helpers.h
Summary: just a lowly non-erroring semantic merge conflict

Test Plan: builds

Reviewed By: jsedgwick@fb.com

Subscribers: trunkagent, exa, folly-diffs@, jsedgwick, yfeldblum, chalfant

FB internal diff: D2029593

Signature: t1:2029593:1430319785:2cd96927b9080fe18b168ab95ad201afc4f00857
2015-04-29 15:57:37 -07:00
Blake Matheny f0901aec91 get_or_throw and get_optional
Summary:
Adds get_or_throw map helper (get a value, or throw with the specified
exception type) and get_optional (get an Optional<Value>). This is a folly
backport of some util helpers in experimental.

Test Plan: Unit tests

Reviewed By: wez@fb.com

Subscribers: folly-diffs@, yfeldblum, chalfant

FB internal diff: D2029802

Tasks: 4332480

Signature: t1:2029802:1430280249:3efbb2fb9394e31b3fbe6d5bd209d12ebb7ed587
2015-04-29 15:57:36 -07:00
Rushi Desai f3e177a5fa An IOExecutor that executes under mapped fiber context.
Summary:
This should help executing sync thrift handlers on fibers. This allows the handler methods to achieve concurrency by awaiting.

Test Plan: Chimera unit tests (which also accesses running FacebookBase methods in fiber context!)

Reviewed By: davejwatson@fb.com

Subscribers: trunkagent, hannesr, andrii, folly-diffs@, jsedgwick, haijunz, yfeldblum, alandau, chalfant

FB internal diff: D2015886

Signature: t1:2015886:1430156870:a84499e0e781f5e6e77f48f1f3063f53d0968698
2015-04-29 15:57:36 -07:00
Woo Xie 37624c1f29 Dynmaic load shedding
Summary:
add a free system memory limit to Load Shed Configuration for dynamic shedding

Test Plan:
tested on edge241.01.ams3, works as expected. Once the free memory is less than 23G (picked on purpose for testing),  new connections are shedded.   But the shedding rate is totally wrong.  I will explain and address it in another diff.

https://fburl.com/103620501
https://fburl.com/103620701

Reviewed By: afrind@fb.com

Subscribers: trunkagent, fugalh, bmatheny, nimishshah, folly-diffs@, jsedgwick, yfeldblum, chalfant, xning, alexkr

FB internal diff: D2026477

Tasks: 4604893

Signature: t1:2026477:1430176828:65eadd82efa3189a1bebcb8518efaf56cd36beed
2015-04-29 15:57:33 -07:00
Hans Fugal ef0137ceaf Promise::setValue() for Unit
Summary: Unit is a bit special because it's just something special to use instead of `Promise<void>`, so let's offer the same sugar that `Promise<void>` has (`p.setValue()` instead of `p.setValue(Unit())`)

Test Plan: New unit tests. Look, a pun!

Reviewed By: jsedgwick@fb.com

Subscribers: exa, folly-diffs@, jsedgwick, yfeldblum, chalfant, davejwatson, hannesr

FB internal diff: D2014139

Tasks: 6847876

Signature: t1:2014139:1430159950:1484ee420c6d7f0f794a546b78ef1601c2eec45c
2015-04-29 15:56:59 -07:00
Giuseppe Ottaviano 0cfa7e4b56 Fix default arguments for orderBy()
Summary: Calling `folly::gen::orderBy()` without arguments causes a compilation error because the first template argument cannot be deduced. This diff fixes it.

Test Plan:
fbconfig -r folly && fbmake runtests

Reviewed By: philipp@fb.com

Subscribers: folly-diffs@, yfeldblum, chalfant

FB internal diff: D2025789

Signature: t1:2025789:1430167404:02fde7287b015d9dcbf398e8dc84cde7d74b4a5b
2015-04-29 15:56:55 -07:00
Yedidya Feldblum f8147e89c8 BenchmarkSuspender::dismissing.
Summary:
[Folly] BenchmarkSuspender::dismissing.

Pass a lambda to it, and the lambda will be executed while the benchmark-suspender is dismissed. Just a bit of sugar around `BenchmarkSuspender::dismiss` and `BenchmarkSuspender::rehire`.

BENCHMARK(name_void, iters) {
BenchmarkSuspender braces;
# benchmark timer is suspended
braces.dismissing([&] {
# benchmark timer is running
doSomething();
});
# benchmark timer is suspended
}

BENCHMARK(name_value, iters) {
BenchmarkSuspender braces;
# benchmark timer is suspended
auto value = braces.dismissing([&] {
# benchmark timer is running
return doSomething();
});
# benchmark timer is suspended
}

Test Plan:
Unit tests:
* `folly/test/BenchmarkTest.cpp` (actually a benchmark)

Reviewed By: njormrod@fb.com

Subscribers: net-systems@, folly-diffs@, yfeldblum, chalfant

FB internal diff: D2024166

Signature: t1:2024166:1430163281:24df0ac98cbe36372f780372ee8f7dd3722b7868
2015-04-29 15:56:51 -07:00
James Sedgwick dda97e8e96 Handler::getContext() when possible
Summary:
Only allow this if the handler is only ever attached to a single pipeline once. i.e. only ever associated with one Context

Test Plan: unit, thrift unit

Reviewed By: davejwatson@fb.com

Subscribers: fugalh, alandau, bmatheny, folly-diffs@, jsedgwick, yfeldblum, chalfant

FB internal diff: D2024007

Tasks: 6836580

Signature: t1:2024007:1430157264:efcf70ca3531c10eec5d458c9e9d6cda60c507c3
2015-04-29 15:56:45 -07:00
James Sedgwick 9eed30ddfd fix detachPipeline/attachPipeline ordering
Summary:
detachPipeline always goes bottom to top
attachPipeline always goes top to bottom
now we can attachReadCallback in AsyncSocketHandler::attachPipeline()

not sure of the implications for TAsyncTransportHandler... looks like Cpp2Channel still wants to attach/detach cb manually

Test Plan: unit

Reviewed By: davejwatson@fb.com

Subscribers: fugalh, folly-diffs@, jsedgwick, yfeldblum, chalfant

FB internal diff: D2023982

Tasks: 6836580

Signature: t1:2023982:1430157500:e09a4103550a3e5721effaa1b28ac5bed071fa67
2015-04-29 15:56:41 -07:00