- 31 Aug, 2016 5 commits
-
-
Zonr Chang authored
Summary: Default namespace for GFlags has been changed from "google" to "gflags". See: https://github.com/gflags/gflags/commit/d9d06b9. Closes https://github.com/facebook/folly/pull/466 Reviewed By: yfeldblum Differential Revision: D3787144 Pulled By: Orvid fbshipit-source-id: db7bcaf4e2bcd46b022a48b17b50ef155570f296
-
Philip Pronin authored
Summary: Move ThreadLocal object destruction to occur under the lock to avoid races. This causes a few cascading changes - the Tag lock needs to be a recursive_mutex so constructing a new object while destroying another st. Also, forking requires a new mutex to avoid deadlocking on accessing a recursive_mutex across a fork() Reviewed By: andriigrynenko Differential Revision: D3755446 fbshipit-source-id: f1f1f92175eb39e77aaa2add6915e5c9bb68d0fb
-
Naizhi Li authored
Summary: Currently reset does not actually reset it. This change make sure it does the job. Reviewed By: yfeldblum Differential Revision: D3788869 fbshipit-source-id: 771a641e31bb3cf307e5bebb979b81a3d3feea55
-
Gabriel Grise authored
Summary: Adding two methods to export the parameters used to generate the key material (key_block). These parameter can be used to decrypt a TLS session from a packet capture. Reviewed By: anirudhvr Differential Revision: D3687099 fbshipit-source-id: 04137f34dd32c387a1b7aec04b3ed6066f123a8e
-
Michael Lee authored
Summary: This should not affect correctness, but it means SharedMutex would need to share the variable across threads. Reviewed By: yfeldblum Differential Revision: D3621227 fbshipit-source-id: dc1baa7c47cd2d459cd0ef89451bcd7fd4d553aa
-
- 30 Aug, 2016 5 commits
-
-
Zonr Chang authored
Summary: 10e9cd3e set up SCOPE_EXIT to join threads (wait for them to exit) on exceptions. However, it is also called on normal exit. Remove the original code at the end for joining threads. This fixes EventBaseTest regression. Closes https://github.com/facebook/folly/pull/468 Reviewed By: yfeldblum Differential Revision: D3792977 Pulled By: Orvid fbshipit-source-id: e4b12202ae3e35fd942ad2ca1d8d405cf1a28f68
-
Zonr Chang authored
Summary: Closes https://github.com/facebook/folly/pull/467 Reviewed By: yfeldblum Differential Revision: D3787151 Pulled By: Orvid fbshipit-source-id: e255c9daea9917082f684e52e27984770c9f08b1
-
Zonr Chang authored
Summary: Closes https://github.com/facebook/folly/pull/465 Reviewed By: yfeldblum Differential Revision: D3787146 Pulled By: Orvid fbshipit-source-id: 17433a256338bd107eec41e69af3eef58de3339b
-
Bruno Goncalves authored
Summary: For some systems like my Fedora 23 is missing -lcrypto library to be together with -lssl The following error ocurr running 'make check': avoid undefined reference to symbol 'EVP_DigestInit_ex Closes https://github.com/facebook/folly/pull/428 Reviewed By: yfeldblum Differential Revision: D3787160 Pulled By: Orvid fbshipit-source-id: 8ff69d00c9c752d0a005d2a5e8d68e65347cc43b
-
Anand Mazumdar authored
Summary: Optional::value() returns a temporary object when the object is an rvalue. This is different in semantics then what boost::optional/std::optional do. The decision to make the copy or not should be up to the user and not the library. Consider an example: ``` void F(Optional<T> &&opt) { T&& t = std::move(opt).get(); // I know `opt` is alive in this scope, I should be able to keep a rvalue ref to the internals } // if we were to return a `T`, that would actually return a new temporary. ``` ``` void G(T&& t); G(std::move(opt).get()); // This could have surprising behavior too ! ``` This change modified the return type to be `T&&` and also introduces an extra overload for `const T&&`. Also, deleted two test-cases that assume the lifetime to be extended. This is a breaking change but this brings folly::Optional on parity with other siblings. Closes https://github.com/facebook/folly/pull/353 Reviewed By: ddrcoder Differential Revision: D3714962 Pulled By: yfeldblum fbshipit-source-id: 1794d51590062db4ad02fc8688cb28a06712c076
-
- 29 Aug, 2016 7 commits
-
-
Dan Schatzberg authored
Summary: Move ThreadLocal object destruction to occur under the lock to avoid races. This causes a few cascading changes - the Tag lock needs to be a recursive_mutex so constructing a new object while destroying another st. Also, forking requires a new mutex to avoid deadlocking on accessing a recursive_mutex across a fork() Reviewed By: andriigrynenko Differential Revision: D3755446 fbshipit-source-id: bb4c4f29bab98d763490df29b460066f124303e0
-
Andrii Grynenko authored
Reviewed By: mzlee Differential Revision: D3780312 fbshipit-source-id: c42c8f0a06b82520ee1b46f105a2a85ad524c442
-
Yedidya Feldblum authored
Summary: [Folly] `gen::dereference` should perfectly-forward unwrapped values. The problem comes in when the wrapped value is not actually a pointer, but is actually an rvalue-ref to some other kind of wrapper type with `Inner&& operator*() &&`. In such cases, the compiler emits a type mismatch error that it cannot cast `Inner` to `Inner&&`, with the errors originating in `Dereference::foreach` and `Dereference::apply`. Fixes a couple other missing-forwarding and extra-forwarding bugs. Reviewed By: ddrcoder Differential Revision: D3776617 fbshipit-source-id: 6926fc18244a572846b22d428bd407d37fb20aa1
-
Yedidya Feldblum authored
Summary: [Folly] Use `Synchronized` in `RequestContext`. Because we can. And it makes the code a tad simpler and also enforces access correctness a tad. Also use `folly::make_unique` in `RequestContextTest` to keep balance between the explicit `new` and `delete` ops. Reviewed By: markisaa Differential Revision: D3781115 fbshipit-source-id: 63b41ddd8009e9546e3be5f89bdd23a4d791105c
-
Nick Terrell authored
Summary: Iterators must be default constructible. folly::IOBuf can now be used as a range in ranges-v3. Reviewed By: yfeldblum Differential Revision: D3782536 fbshipit-source-id: 854813b4e3336aba50048649e6ae7b375d49e382
-
Jon Maltiel Swenson authored
Summary: Title. Reviewed By: andreazevedo Differential Revision: D3785212 fbshipit-source-id: c551e0367196cbc68cf39a5d40f2b324883fcdf4
-
Philipp Unterbrunner authored
Summary: Added support for user-defined clock classes, improved comments, and removed part of the std::atomics use that had no effect on thread-safety. Reviewed By: yfeldblum Differential Revision: D3708378 fbshipit-source-id: 1a933c3707c12311584a3b33afd773ee91577167
-
- 26 Aug, 2016 6 commits
-
-
Lee Howes authored
Summary: Adds a standard semaphore type with signal and wait methods that is safe to use in both multi-threaded contexts and from fibers. Reviewed By: andriigrynenko Differential Revision: D3778943 fbshipit-source-id: 6997f1fb870739e07f982399dbebfd8b3e45daa2
-
Christopher Dykes authored
Summary: Because MSVC doesn't have `random()` and `M_PI` is guarded by a pre-processor macro. Reviewed By: yfeldblum Differential Revision: D3767159 fbshipit-source-id: fcb1c41cd75925455c76efad38423cd52bd98aeb
-
Yunqiao Zhang authored
Summary: The resultant future of collectOne will be fulfilled when the first one of the future in the list completes without exception. If all input futures throws exception, the resultant future will get the last exception that was thrown. Reviewed By: andriigrynenko Differential Revision: D3764760 fbshipit-source-id: 76484254e35182eddc8266865853d65c28170f82
-
David Goldblatt authored
Summary: This class allows easy insertion of padding bytes after an object to ensure that two cacheline-padded elements of an array don't engage in false sharing. Reviewed By: yfeldblum Differential Revision: D3485144 fbshipit-source-id: a3ece1e34566b20f94ff9f66532b2386ab19a9b1
-
Nicholas Ormrod authored
Summary: Malloc.h is intentionally included multiple times, once from folly and once from libstdc++. The current ###pragma once## implicitly allows this to happen. FBString.h has an undef for Malloc.h's include guard, which originally accomplished this goal. The undefing code is presently moot, since its functionality has been replaced by ###pragma once##. Remove it. I noticed this when ott was copying FBString over to libstdc++ in D3757853. The diff that switched the include guards to pragmas was a codemod, and was not specific to fbstring. D3054492 Reviewed By: ot Differential Revision: D3758119 fbshipit-source-id: e796d039a031d5f842ed39bf55a6b1aeb2686bc4
-
Christopher Dykes authored
Summary: Because MSVC is not happy about the member hook when used in complex inheritence scenarios. Reviewed By: yfeldblum Differential Revision: D3774513 fbshipit-source-id: 9e1ef8dd76d966de339f8486ff1a1d0ab1571849
-
- 25 Aug, 2016 6 commits
-
-
Christopher Dykes authored
Summary: Because MSVC is right, this shouldn't be happening, but we test weird things. Reviewed By: yfeldblum Differential Revision: D3773486 fbshipit-source-id: 50f28bf0ac8ff53f63231b4f6f9ce050b509b464
-
Christopher Dykes authored
Summary: With how this was written it would fail if the call to `lseek` failed, or if it succeeded, unless it was setting the length to 0, in which case it would succeed. This makes it work right. Reviewed By: yfeldblum Differential Revision: D3773311 fbshipit-source-id: 3dc94502d0c4259f6f2766b4c0903c081d7c36ab
-
Christopher Dykes authored
Summary: Because apparently this is valid (and we test it). This also adds a check in mmap to make sure we aren't passing an invalid handle to `MapViewOfFileEx`. Reviewed By: yfeldblum Differential Revision: D3772853 fbshipit-source-id: 11593997a3fb12b7b391c5e52661060b71341aef
-
Andrii Grynenko authored
Reviewed By: yfeldblum Differential Revision: D3765642 fbshipit-source-id: 9b1cc4007c553da5082799fa4ed0af8f7850ec8d
-
Christopher Dykes authored
Summary: We are formatting an integer value, so it is doing absolutely nothing at all, as confirmed by the version I implemented for MSVC, which does output the value with digit separators, which fails the unit tests because the unit test expects the digit separators to not be present. What's more, whe specifically assert that the user has not requested digit separators in the format string. This also kills the MSVC special case entirely because it's not needed. Reviewed By: yfeldblum Differential Revision: D3768405 fbshipit-source-id: 388cd0ca9699e257c71798b9bf355aa651748e60
-
Felix Handte authored
Summary: First, folly::static_function_deleter::operator() is in fact a const operation, so this should be a reasonable change. The motivation for this is to make folly::ThreadLocalPtr and folly::static_function_deleter play nice with each other. Minimal example: ```lang=c++ void deleter(int* ptr) { free(ptr); } int main(int argc, char* argv[]) { folly::ThreadLocalPtr<int> tl; tl.reset(std::unique_ptr<int, folly::static_function_deleter<int, deleter>>( new int(0))); return 0; } ``` Currently produces: ``` folly/ThreadLocal.h:207:7: error: no matching function for call to object of type 'const folly::static_function_deleter<int, &deleter>' delegate(ptr); ^~~~~~~~ Test.cpp:10:6: note: in instantiation of function template specialization 'folly::ThreadLocalPtr<int, void>::reset<int, folly::static_function_deleter<int, &deleter>, void>' requested here tl.reset(std::unique_ptr<int, folly::static_function_deleter<int, deleter>>(new int(0))); ^ folly/Memory.h:91:8: note: candidate function not viable: 'this' argument has type 'const folly::static_function_deleter<int, &deleter>', but method is not marked const void operator()(T* t) { f(t); } ^ 1 error generated. ``` With the fix, the build succeeds. Reviewed By: yfeldblum Differential Revision: D3764624 fbshipit-source-id: c28c791b79f1415704c205c36bfda2d888d6c010
-
- 24 Aug, 2016 9 commits
-
-
Stephane Sezer authored
Summary: Closes https://github.com/facebook/folly/pull/458 Reviewed By: yfeldblum Differential Revision: D3765911 Pulled By: Orvid fbshipit-source-id: 30de0b99ec622471e52a775835b5a0564437febc
-
Christopher Dykes authored
Summary: Because it isn't. Not on MSVC anyways. Reviewed By: yfeldblum Differential Revision: D3767326 fbshipit-source-id: 0f9421773819999f99be38ae0646ae3e81bde4e4
-
Yedidya Feldblum authored
Summary: [Thrift] Use `cbegin` and `cend` in static reflection container traits. These are functions that all the C++ standard library containers have. And add the two methods to `folly::sorted_vector_set` and `folly::sorted_vector_map`. Reviewed By: juchem Differential Revision: D3763187 fbshipit-source-id: 9d467a1cf391206eba671f454da428323c4a566a
-
Christopher Dykes authored
Summary: Because event file descriptors don't exist on Windows. This also disables the fork() test on Windows, as we don't have fork(). Reviewed By: yfeldblum Differential Revision: D3766266 fbshipit-source-id: af8d81615957a3d7bdfcb204afbf648723921f76
-
Michael Callahan authored
Summary: GCC 5.3 is confused that we might be trying to assign a 64 bit value to a 32 bit size_t although we are clearly not. Just typecast the confusion away. Reviewed By: yfeldblum Differential Revision: D3762839 fbshipit-source-id: 1b705c4e70b782fdb106844fee52ab25aa038acd
-
Andrii Grynenko authored
Summary: 1. This implements a GraphCycleDetector which can check if newly added edge belongs to a cycle in a directed graph. GraphCycleDetector is used to detect cycles between Observers when creator function is run. 2. This also fixes a bug where new dependencies could be saved even if Observer creator failed. Reviewed By: yfeldblum Differential Revision: D3746743 fbshipit-source-id: 99d10446c56fa4d8f7485f38309e8a282cd21bdf
-
Huapeng Zhou authored
Summary: Titled. ``` mcrouter/lib/carbon/CarbonProtocolReader.h:143:49: required from here folly/small_vector.h:441:38: error: enumeral and non-enumeral type in conditional expression [-Werror] cc1plus: all warnings being treated as errors ``` Reviewed By: yfeldblum Differential Revision: D3763073 fbshipit-source-id: da490e91cdb12dacf37d71c1796239bdc361a31b
-
Jon Maltiel Swenson authored
Summary: The GCC warning "warning: enumeral and non-enumeral type in conditional expression" is logged a lot in many builds since lots of code depends on small_vector. This diff should prevent those warnings. Reviewed By: yfeldblum Differential Revision: D3762835 fbshipit-source-id: 49831e4364e716592287c05d1dbf1912326324f6
-
Phil Willoughby authored
Summary: I tested it doesn't break the gcc 4.9 and clang builds - I didn't try any other versions of anything. build[all] Reviewed By: meyering Differential Revision: D3757152 fbshipit-source-id: a126cd31cb89057dececfed1b265f452ee29fbff
-
- 23 Aug, 2016 2 commits
-
-
Heng Hong Lee authored
Summary: While adding logging around our socket and looking into `AsyncSSLSocket` it seems like the data that is actually written into the socket is not correctly attributed. I added logs and printed out what happens on the socket layer, P56563098 in this paste you can see that the `[fishhook]` logs are actually those added in D3698728. Those are the actual bytes written onto the socket, in the paste, the bytes that are written by the AsyncSocket::bioWrite method are the ones that actually get written onto the socket. some of the bytes written into the bio comes from bf_buff.c and bss_mem.c which are not eventually attributed to a socket message and will be incorrectly counted when getRawBytesWritten/Read invoked on AsyncSSLSocket.cpp Unfortunately/Fortunately this issue is not symmetrical and does not manifest in the getRawBytesReceived in AsyncSSLSocket, reading the bio for read bytes correctly attributes the actual number of bytes written on the socket. moreover, pulling the asyncsocket data for getRawBytesRead doesnt give the full read bytes on wire because SSL_connect and SSL_read dont return the number of bytes they read but return the number of bytes without the TLS bytes used. siyengar seems like a right person to look at this. so adding him here. Would love to discuss more about this and am open to iterating more on this solution Reviewed By: knekritz Differential Revision: D3698744 fbshipit-source-id: 541aa478778b9607f51db194fcbfe28bd23c737f
-
Meng Zhang authored
Summary: include linux/membarrier.h if it is available. Closes https://github.com/facebook/folly/pull/455 Reviewed By: lukenels Differential Revision: D3714952 Pulled By: Orvid fbshipit-source-id: 8c85756af2cb132152b2182816becfea138f0149
-