- 01 Sep, 2016 1 commit
-
-
Eric Niebler authored
Summary: Fix code that is transitively including ScopeGuard.h via FBString.h. Reviewed By: yfeldblum Differential Revision: D3801328 fbshipit-source-id: 7e1dc37cd6dd3aa691dd1baf31385d3a8c51eed0
-
- 31 Aug, 2016 8 commits
-
-
Andrii Grynenko authored
Summary: Make sure exception is propagated to caller (especially when Observer is just created). Reviewed By: yfeldblum Differential Revision: D3798991 fbshipit-source-id: cee8452cfd40dcfbaf0e2ae2c2ee628af0362c6e
-
Colin Ni authored
Summary: Minor changes. Simplified the memory-handling explanation; also fixed some grammar issues and re-worded some confusing paragraphs. (I suggest reading the edited and unedited versions separately.) Closes https://github.com/facebook/folly/pull/459 Reviewed By: simpkins Differential Revision: D3779296 Pulled By: Orvid fbshipit-source-id: 24b086cbd0b67e4c592731aeec6a7ffc14ff0319
-
Adam Simpkins authored
Summary: Update TimeseriesHistogram::rate(int level) to have a configurable return type, similar to the rate(TimeType start, TimeType end) function, as well as the avg() functions. I believe it was simply an oversight initially that this version of rate did not have a configurable return type. Since rate() and avg() are template methods, their full definitions should really be available in TimeseriesHistogram.h rather than TimeseriesHistogram-defs.h. This also fixes that problem. Most of the logic in these functions isn't actually dependent on the return type, so that was split out into separate non-template helper functions that are still in TimeseriesHistogram-defs.h Reviewed By: yfeldblum Differential Revision: D3776017 fbshipit-source-id: 7deebf5b9ea1be143b5d772a15246706cb0cae80
-
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 7 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
-