Hannes Roth [Thu, 14 May 2015 18:55:27 +0000 (11:55 -0700)]
(Wangle) chain -> thenMulti + thenMultiWithExecutor
Summary:
If we make `chain` a member function we can avoid the type issues and infer everything. I also added thenMulti for symmetry. Sadly the compiler doesn't like having a thenMulti with an optional `Executor*` as the first argument, it fails after some deductions. Hence `thenMultiWithExecutor`.
itssobeautiful
Test Plan: Run all the tests.
Reviewed By: hans@fb.com
Subscribers: trunkagent, folly-diffs@, jsedgwick, yfeldblum, chalfant
FB internal diff:
D2021000
Signature: t1:
2021000:
1431557618:
169447dc9d747b23a8a1ba830e78c43713d09a96
Hannes Roth [Thu, 14 May 2015 18:50:06 +0000 (11:50 -0700)]
(Wangle) window
Summary: `window` creates up to `n` Futures at a time and only starts new ones when previous ones complete. A sliding window.
Test Plan: Run all the tests.
Reviewed By: hans@fb.com
Subscribers: bmatheny, henryf, scottstraw, juliafu, folly-diffs@, jsedgwick, yfeldblum, chalfant
FB internal diff:
D2015310
Signature: t1:
2015310:
1431557556:
1017006cc9c9c2562ebe2c3dabfc4dbf316ff408
James Sedgwick [Thu, 14 May 2015 00:45:10 +0000 (17:45 -0700)]
via with priority
Summary:
I wish I could just have an add(Func, priority) but the damned overloaded virtual warnings become a nightmare, so it's addWithPriority.
I also switched priority to a uint8_t in the hopes of reducing Core size. Turns out std::atomic<uint8_t> is 8 bytes anyways :( I left it that way because come on you really shouldn't be using > 256 priorities.
Biggest problem is the data race with the two atomics executor_ and priority_. Should we just use a microspinlock to co-protect them? Could probably save some size from the atomics that way.
Test Plan: unit
Reviewed By: hans@fb.com
Subscribers: hannesr, fugalh, folly-diffs@, jsedgwick, yfeldblum, chalfant
FB internal diff:
D2039619
Tasks:
6928162
Signature: t1:
2039619:
1431551266:
3b31ed2329301aaa9c32f0f41b6e61f3482d570e
James Sedgwick [Thu, 14 May 2015 00:43:44 +0000 (17:43 -0700)]
transportActive and transportInactive
Summary:
These are equivalents to Netty's channelActive and channelInactive, but we've been calling channels transports so I'm staying consistent.
I skipped integrating this into TAsyncTransportHandler because thrift still does manual CB attachment/detachment and it's unclear how that fits into this model
If my suspicions are correct, it *should* be possible to make attachReadCallback and detachReadCallback private in AsyncSocketHandler, right? And perhaps get rid of the event base modifier methods? What's our use case for those?
Test Plan: unit, employ in telnet server
Reviewed By: davejwatson@fb.com
Subscribers: fugalh, alandau, bmatheny, folly-diffs@, jsedgwick, yfeldblum, chalfant
FB internal diff:
D2044520
Signature: t1:
2044520:
1431551998:
af1de358b5dbefcca148814015d8e9f63f458d5d
James Sedgwick [Thu, 14 May 2015 00:37:50 +0000 (17:37 -0700)]
more restrictive implicit Future construction enabling
Summary:
Decay so we don't try to instantiate this for attempts to copy Futures
See https://www.facebook.com/groups/
499316706783616/permalink/
863260220389261/
Test Plan: unit
Reviewed By: hans@fb.com
Subscribers: hannesr, folly-diffs@, jsedgwick, yfeldblum, chalfant
FB internal diff:
D2062442
Signature: t1:
2062442:
1431551169:
d1ba61537c998067ee7e6f4819f7e0817cc2e700
Pavlo Kushnir [Wed, 13 May 2015 23:23:26 +0000 (16:23 -0700)]
Disable stack recording with ASAN
Summary: ASAN crashes on std::fill and doesn't respect no_sanitize_address attribute for some reason.
Test Plan: run fibers-test with ASAN
Reviewed By: stepan@fb.com
Subscribers: trunkagent, folly-diffs@, yfeldblum, chalfant
FB internal diff:
D2069437
Signature: t1:
2069437:
1431547972:
7d2c7a6547f8d76b309a76ef69fd19a1de4ce261
James Sedgwick [Wed, 13 May 2015 21:07:17 +0000 (14:07 -0700)]
makeTryFunction -> makeTryWith codemod
Summary: This is more consistent with setWith, makeFutureWith, etc
Test Plan: unit
Reviewed By: hans@fb.com
Subscribers: folly-diffs@, jsedgwick, yfeldblum, chalfant
FB internal diff:
D2064667
Signature: t1:
2064667:
1431541614:
a0e3f23d5effde13a93ce58ca3e21c7c3575215c
Igor Sugak [Wed, 13 May 2015 06:40:34 +0000 (23:40 -0700)]
folly: fix mismatched-tags
Summary:
I tried to fix this for default glibc but there are many mismatched-tags inside glibc itself. gcc-4.9-glibc-2.20 does not have such issue, using it.
```lang=bash
% fbconfig --clang --with-project-version clang:dev --extra-cxxflags=-Wmismatched-tags --extra-cxxflags=-ferror-limit=0 --platform-all=gcc-4.9-glibc-2.20-fb -r folly
% fbmake dev -j55 2> err
% perl -n -E 'm/\[-Werror,-Wmismatched-tags\]$/ && print' err | sort -u
./folly/experimental/fibers/TimeoutController.h:52:3: error: 'TimeoutHandle' defined as a struct here but previously declared as a class [-Werror,-Wmismatched-tags]
folly/experimental/fibers/TimeoutController.h:52:3: error: 'TimeoutHandle' defined as a struct here but previously declared as a class [-Werror,-Wmismatched-tags]
folly/experimental/JSONSchema.cpp:65:10: error: class 'ValidationContext' was previously declared as a struct [-Werror,-Wmismatched-tags]
./folly/futures/detail/Core.h:76:1: error: 'Core' defined as a class template here but previously declared as a struct template [-Werror,-Wmismatched-tags]
./folly/futures/Future.h:392:10: error: class 'Promise' was previously declared as a struct [-Werror,-Wmismatched-tags]
./folly/futures/Future.h:45:1: error: 'Future' defined as a class template here but previously declared as a struct template [-Werror,-Wmismatched-tags]
./folly/futures/Future-pre.h:137:1: error: struct 'Timekeeper' was previously declared as a class [-Werror,-Wmismatched-tags]
./folly/futures/Future-pre.h:23:18: error: struct template 'Promise' was previously declared as a class template [-Werror,-Wmismatched-tags]
./folly/futures/Future-pre.h:43:18: error: struct template 'Core' was previously declared as a class template [-Werror,-Wmismatched-tags]
./folly/futures/Promise.h:26:20: error: class template 'Future' was previously declared as a struct template [-Werror,-Wmismatched-tags]
./folly/futures/Timekeeper.h:23:18: error: struct template 'Future' was previously declared as a class template [-Werror,-Wmismatched-tags]
./folly/futures/Timekeeper.h:44:1: error: 'Timekeeper' defined as a class here but previously declared as a struct [-Werror,-Wmismatched-tags]
./folly/Singleton.h:378:10: error: class template 'SingletonHolder' was previously declared as a struct template [-Werror,-Wmismatched-tags]
./folly/wangle/ssl/SSLCacheOptions.h:17:1: error: 'SSLCacheOptions' defined as a struct here but previously declared as a class [-Werror,-Wmismatched-tags]
./folly/wangle/ssl/SSLContextManager.h:29:1: error: class 'SSLCacheOptions' was previously declared as a struct [-Werror,-Wmismatched-tags]
./folly/wangle/ssl/SSLContextManager.h:32:1: error: class 'TLSTicketKeySeeds' was previously declared as a struct [-Werror,-Wmismatched-tags]
% perl -n -E 'm/\[-Werror,-Wmismatched-tags\]$/ && print' err | sort -u | wc -l
16
```
Updated manually. In all cases preferred tag from definition.
Test Plan:
Compile with clang dev and gcc-4.9-glibc-2.20-fb and see fewer errors:
```lang=bash
% fbconfig --clang --with-project-version clang:dev --extra-cxxflags=-Wmismatched-tags --platform-all=gcc-4.9-glibc-2.20-fb -r folly
% fbmake dev -j55
```
Reviewed By: markisaa@fb.com, meyering@fb.com
Subscribers: fugalh, folly-diffs@, jsedgwick, yfeldblum, chalfant
FB internal diff:
D2066327
Signature: t1:
2066327:
1431471232:
c65c2827398ba29a4022cc6a5647fac2b3aad717
James Sedgwick [Wed, 13 May 2015 01:42:39 +0000 (18:42 -0700)]
SharedPromise in OutputBufferingHandler
Summary:
as above. I'm torn on whether to sugar "*this = SharedPromise<T>" as SharedPromise<T>::reset()
If I see another use case I'll probably do it
Test Plan: unit
Reviewed By: hans@fb.com
Subscribers: fugalh, folly-diffs@, jsedgwick, yfeldblum, chalfant
FB internal diff:
D2064449
Signature: t1:
2064449:
1431476780:
7113366b11feaf9e8a4ea1dc60fbafb36dd46ac5
James Sedgwick [Tue, 12 May 2015 15:14:47 +0000 (08:14 -0700)]
SharedPromise
Summary: I tried two "smart" ways (deriving from Promise, encapsulating a Promise) and got nothing but trouble. The KISS principle is applied with gusto in this diff.
Test Plan: unit, integrating in 3+ places in separate diffs
Reviewed By: hans@fb.com
Subscribers: craffert, trunkagent, fugalh, folly-diffs@, jsedgwick, yfeldblum, chalfant
FB internal diff:
D2035528
Signature: t1:
2035528:
1431393438:
4e554cd30fa531d75b9267dccaade6dc516f2b15
Adam Simpkins [Tue, 12 May 2015 01:32:56 +0000 (18:32 -0700)]
expose FunctionScheduler::addFunction() with a custom distribution
Summary:
Make addFunctionInternal() publicly available, as an overloaded version of
addFunction(). This allows users to add functions with a specified poisson
distribution.
This allows us to deprecate our internal legacy version of FunctionScheduler,
and replace it with the folly version.
Test Plan: Confirmed all unit tests still pass.
Reviewed By: ldbrandy@fb.com
Subscribers: jwatzman, doug, net-systems@, exa, folly-diffs@, yfeldblum, chalfant
FB internal diff:
D2051699
Signature: t1:
2051699:
1431379841:
f3547d1ed371503b0bf91b509a4ef03e881aa991
Woo Xie [Tue, 12 May 2015 00:47:27 +0000 (17:47 -0700)]
close idle HTTPDownstreamSessions before load shedding
Summary:
when any system resource limit is reached, proxygen reduces the number of idle downstream sessions to accomodate new ones.
Test Plan:
canarying on edge241.01.ams3. Here is the number of idle connection closed during pre load shedding stage.
https://www.facebook.com/pxlcld/ml7J
Reviewed By: afrind@fb.com
Subscribers: alandau, noamler, fugalh, bmatheny, folly-diffs@, jsedgwick, yfeldblum, chalfant, xning, alexkr
FB internal diff:
D2030988
Tasks:
5698711
Signature: t1:
2030988:
1431369559:
ce7328d51c7fd0afa7e9e5c19b0c66736d01fee1
Praveen Kumar Ramakrishnan [Tue, 12 May 2015 00:03:26 +0000 (17:03 -0700)]
Bump version to 38:0
Stepan Palamarchuk [Fri, 8 May 2015 23:44:31 +0000 (16:44 -0700)]
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
Hannes Roth [Fri, 8 May 2015 23:34:32 +0000 (16:34 -0700)]
(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
Tom Jackson [Fri, 8 May 2015 07:43:26 +0000 (00:43 -0700)]
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
Alexey Spiridonov [Fri, 8 May 2015 01:30:14 +0000 (18:30 -0700)]
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
Alexey Spiridonov [Fri, 8 May 2015 01:28:06 +0000 (18:28 -0700)]
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
Adam Simpkins [Thu, 7 May 2015 18:40:16 +0000 (11:40 -0700)]
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
Josh Watzman [Thu, 7 May 2015 16:41:25 +0000 (09:41 -0700)]
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
Josh Watzman [Thu, 7 May 2015 16:42:01 +0000 (09:42 -0700)]
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
Ming Zhao [Sun, 26 Apr 2015 23:13:58 +0000 (16:13 -0700)]
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
YM CHEN [Fri, 1 May 2015 03:21:58 +0000 (11:21 +0800)]
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
Josh Watzman [Mon, 4 May 2015 21:54:40 +0000 (14:54 -0700)]
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
Sergey Doroshenko [Mon, 4 May 2015 19:32:52 +0000 (12:32 -0700)]
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
James Sedgwick [Mon, 4 May 2015 19:15:16 +0000 (12:15 -0700)]
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
James Sedgwick [Mon, 4 May 2015 16:58:49 +0000 (09:58 -0700)]
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
James Sedgwick [Mon, 4 May 2015 14:27:04 +0000 (07:27 -0700)]
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
James Sedgwick [Mon, 4 May 2015 14:23:39 +0000 (07:23 -0700)]
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
Nicholas Ormrod [Fri, 1 May 2015 21:45:31 +0000 (14:45 -0700)]
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
Andre Pinto [Fri, 1 May 2015 19:04:52 +0000 (12:04 -0700)]
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
Hannes Roth [Fri, 1 May 2015 16:22:05 +0000 (09:22 -0700)]
(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
Sean Cannella [Fri, 1 May 2015 01:51:17 +0000 (18:51 -0700)]
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
Hannes Roth [Fri, 1 May 2015 01:39:13 +0000 (18:39 -0700)]
(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
Hannes Roth [Fri, 1 May 2015 01:38:27 +0000 (18:38 -0700)]
(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
Tudor Bosman [Fri, 1 May 2015 00:17:13 +0000 (17:17 -0700)]
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
Vladislav Isenbaev [Thu, 30 Apr 2015 22:39:27 +0000 (15:39 -0700)]
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
Hans Fugal [Thu, 30 Apr 2015 22:18:15 +0000 (15:18 -0700)]
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
Hans Fugal [Thu, 30 Apr 2015 22:09:05 +0000 (15:09 -0700)]
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
Marcelo Juchem [Thu, 30 Apr 2015 21:03:16 +0000 (14:03 -0700)]
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
James Sedgwick [Thu, 30 Apr 2015 20:13:55 +0000 (13:13 -0700)]
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
Hans Fugal [Thu, 30 Apr 2015 19:36:26 +0000 (12:36 -0700)]
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
Hans Fugal [Thu, 30 Apr 2015 18:59:36 +0000 (11:59 -0700)]
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
Chao Yang [Thu, 30 Apr 2015 18:26:23 +0000 (11:26 -0700)]
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
James Sedgwick [Thu, 30 Apr 2015 18:09:50 +0000 (11:09 -0700)]
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
James Sedgwick [Thu, 30 Apr 2015 01:20:45 +0000 (18:20 -0700)]
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
James Sedgwick [Thu, 30 Apr 2015 01:04:41 +0000 (18:04 -0700)]
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
James Sedgwick [Thu, 30 Apr 2015 00:56:02 +0000 (17:56 -0700)]
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
Nicholas Ormrod [Thu, 30 Apr 2015 00:43:19 +0000 (17:43 -0700)]
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
Andrii Grynenko [Wed, 29 Apr 2015 22:57:48 +0000 (15:57 -0700)]
Bump version to 37:0
Dave Watson [Wed, 29 Apr 2015 22:16:28 +0000 (15:16 -0700)]
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
Andrii Grynenko [Wed, 22 Apr 2015 02:37:08 +0000 (19:37 -0700)]
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
Alex Landau [Tue, 28 Apr 2015 22:32:13 +0000 (15:32 -0700)]
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
Hans Fugal [Wed, 29 Apr 2015 16:46:26 +0000 (09:46 -0700)]
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
Blake Matheny [Wed, 29 Apr 2015 15:35:30 +0000 (08:35 -0700)]
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
Rushi Desai [Wed, 29 Apr 2015 06:17:06 +0000 (23:17 -0700)]
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
Woo Xie [Tue, 28 Apr 2015 22:25:31 +0000 (15:25 -0700)]
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
Hans Fugal [Mon, 27 Apr 2015 21:40:09 +0000 (14:40 -0700)]
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
Giuseppe Ottaviano [Mon, 27 Apr 2015 20:45:25 +0000 (13:45 -0700)]
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
Yedidya Feldblum [Mon, 27 Apr 2015 19:49:35 +0000 (12:49 -0700)]
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
James Sedgwick [Mon, 27 Apr 2015 19:24:25 +0000 (12:24 -0700)]
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
James Sedgwick [Mon, 27 Apr 2015 19:12:53 +0000 (12:12 -0700)]
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
Alecs King [Mon, 27 Apr 2015 23:56:01 +0000 (16:56 -0700)]
Bump version to 36:0
Nicholas Ormrod [Fri, 17 Apr 2015 01:56:01 +0000 (18:56 -0700)]
README: Fixed typo, formatted code, and linked to docs
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
James Sedgwick [Mon, 27 Apr 2015 18:44:31 +0000 (11:44 -0700)]
Manage handlers with shared_ptrs, introduce StaticPipeline
Summary:
A few things:
- Eliminate HandlerPtr by managing all handlers with shared_ptrs instead of keeping them inline in the pipeline
- Kill recursively templated ChannelPipeline accordingly
- Introduce StaticPipeline to retain the flexibility of zero-alloc pipelines
- Introduce notion of an "owning handler" to avoid destruction order issues
Test Plan: unit (will add more), thrift unit
Reviewed By: davejwatson@fb.com
Subscribers: fugalh, alandau, bmatheny, folly-diffs@, jsedgwick, yfeldblum, chalfant
FB internal diff:
D2023976
Tasks:
6836580
Signature: t1:
2023976:
1430159578:
e50e8a149e549a40670d093fb65987a4843cdd8d
Hans Fugal [Mon, 27 Apr 2015 18:20:04 +0000 (11:20 -0700)]
rearrange Future.h
Summary: Move boring preamble stuff to `Future-pre.h` and `folly::futures` and `makeFuture` and pals to `helpers.h`.
Test Plan:
tests still build and pass
Reviewed By: jsedgwick@fb.com
Subscribers: exa, folly-diffs@, jsedgwick, yfeldblum, chalfant, hannesr, davejwatson
FB internal diff:
D2014330
Signature: t1:
2014330:
1429941589:
1e2c336136f3375f9b96e5df8c06ca5820ba6aeb
James Sedgwick [Mon, 27 Apr 2015 18:19:18 +0000 (11:19 -0700)]
strip Channel from all class names
Summary: as above. Only got a little messy when components within folly::wangle typedefed things to Pipeline
Test Plan: unit tests
Reviewed By: davejwatson@fb.com
Subscribers: wormhole-diffs@, fugalh, alandau, bmatheny, folly-diffs@, jsedgwick, yfeldblum, chalfant
FB internal diff:
D2022181
Tasks:
6836580
Signature: t1:
2022181:
1430157032:
df0bdfb9ca0d76b86d52c55c4ad41ea953a18cb4
Andre Pinto [Mon, 27 Apr 2015 16:34:34 +0000 (09:34 -0700)]
Fix oss build
Summary: Fixing oss build
Test Plan: Visual analysis.
Reviewed By: pavlo@fb.com
Subscribers: folly-diffs@, yfeldblum, chalfant
FB internal diff:
D2023889
Signature: t1:
2023889:
1430144784:
e58fe9e1f1193d71527ba5f5f2c2efb60bce7a2d
Blame Revision:
D2022859
Hans Fugal [Sat, 25 Apr 2015 01:10:49 +0000 (18:10 -0700)]
Introducing Unit!
Summary: title
Test Plan: tests
Reviewed By: hannesr@fb.com
Subscribers: exa, folly-diffs@, jsedgwick, yfeldblum, chalfant
FB internal diff:
D2022859
Signature: t1:
2022859:
1429920863:
0d3afce9779a790baf246de97f98812e23e1574d
Yedidya Feldblum [Fri, 24 Apr 2015 00:02:55 +0000 (17:02 -0700)]
IPAddressV6::kToFullyQualifiedSize.
Summary:
[Folly] IPAddressV6::kToFullyQualifiedSize.
The scenario: One has a string known to be a fully-qualified IPv4 or fully-qualified IPv6 address, but one does not know which of the two it is.
The dirty but fast solution: just check its size.
Test Plan: Build. Unit tests.
Reviewed By: mshneer@fb.com
Subscribers: folly-diffs@, dougw, yfeldblum, chalfant, brettp
FB internal diff:
D2016634
Signature: t1:
2016634:
1429831808:
08ecb28eab3060988f9613748ed8dabf3724bf13
James Sedgwick [Thu, 23 Apr 2015 17:44:12 +0000 (10:44 -0700)]
makeFutureTry -> makeFutureWith
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 [Thu, 23 Apr 2015 17:03:51 +0000 (10:03 -0700)]
Change ThreadManager interface to Executor
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 [Wed, 22 Apr 2015 23:32:22 +0000 (16:32 -0700)]
Cleanup Future(Value) ctor
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 [Wed, 22 Apr 2015 21:27:36 +0000 (14:27 -0700)]
take collections by reference
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 [Wed, 22 Apr 2015 21:09:07 +0000 (14:09 -0700)]
Make MIN_WRITE_SIZE configurable for AsyncSSLSocket.
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 [Wed, 22 Apr 2015 20:38:24 +0000 (13:38 -0700)]
Add support for creating SocketAddress directly from IPAddress object
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 [Wed, 22 Apr 2015 16:02:38 +0000 (09:02 -0700)]
future / fiber integration
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 [Wed, 22 Apr 2015 14:35:31 +0000 (07:35 -0700)]
when* -> collect*
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 [Tue, 21 Apr 2015 23:52:09 +0000 (16:52 -0700)]
fix collect() for move-only types
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 [Tue, 21 Apr 2015 23:52:06 +0000 (16:52 -0700)]
then-with-Executor
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 [Tue, 21 Apr 2015 21:49:05 +0000 (14:49 -0700)]
fix collect for non-default-constructible types, for real this time
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 [Tue, 21 Apr 2015 21:08:44 +0000 (14:08 -0700)]
map()
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 [Tue, 21 Apr 2015 18:19:04 +0000 (11:19 -0700)]
Assume exception when Executor::add throws
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 [Mon, 20 Apr 2015 19:20:01 +0000 (12:20 -0700)]
revert
D1985475, clang still borked
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 [Mon, 20 Apr 2015 17:34:01 +0000 (10:34 -0700)]
test failure conditions in LengthFieldBasedFrameDecoder
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 [Sat, 18 Apr 2015 17:57:56 +0000 (10:57 -0700)]
Revert "Revert "Deprecating folly::is_complete""
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 [Fri, 17 Apr 2015 18:54:36 +0000 (11:54 -0700)]
Revert "Deprecating folly::is_complete"
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 [Fri, 17 Apr 2015 17:41:45 +0000 (10:41 -0700)]
then-with-Executor
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 [Fri, 17 Apr 2015 15:45:58 +0000 (08:45 -0700)]
fix collect for non-default-constructible types
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 [Fri, 17 Apr 2015 01:56:01 +0000 (18:56 -0700)]
README: Fixed typo, formatted code, and linked to docs
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 [Fri, 17 Apr 2015 00:32:30 +0000 (17:32 -0700)]
Remove unused variables
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 [Fri, 17 Apr 2015 00:35:29 +0000 (17:35 -0700)]
Adds x64 arch-specific test
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 [Fri, 17 Apr 2015 00:29:37 +0000 (17:29 -0700)]
Update Copyright 2014 -> 2015
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 [Thu, 16 Apr 2015 22:52:29 +0000 (15:52 -0700)]
Deprecating folly::is_complete
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 [Thu, 16 Apr 2015 20:42:45 +0000 (13:42 -0700)]
We might avoid some temporaries in putMessagesImpl
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 [Thu, 16 Apr 2015 19:18:42 +0000 (12:18 -0700)]
fix build
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 [Thu, 16 Apr 2015 18:15:19 +0000 (11:15 -0700)]
runImmediatly fix
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 [Thu, 16 Apr 2015 01:32:11 +0000 (18:32 -0700)]
collect()
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 [Thu, 16 Apr 2015 01:23:32 +0000 (18:23 -0700)]
fulfil -> setWith, fulfilTry -> setTry
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 [Thu, 16 Apr 2015 00:56:57 +0000 (17:56 -0700)]
Instrument fibers execution
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