aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/iomgr
Commit message (Collapse)AuthorAge
* Fix win32 build error.Gravatar Craig Tiller2015-01-09
|
* Don't log on EINTR.Gravatar ctiller2015-01-08
| | | | | | | Change on 2015/01/07 by ctiller <ctiller@google.com> ------------- Created by MOE: http://code.google.com/p/moe-java MOE_MIGRATED_REVID=83469190
* Remove libevent.Gravatar ctiller2015-01-08
| | | | | | | | | | | | | | | | | | | | | | | Fixed any exposed bugs across the stack. Add a poll() based implementation. Heavily leverages pollset infrastructure to allow small polls to be the norm. Exposes a mechanism to plug in epoll/kqueue for platforms where we have them. Simplify iomgr callbacks to return one bit of success or failure (instead of the multi valued result that was mostly unused previously). This will ease the burden on new implementations, and the previous system provided no real value anyway. Removed timeouts on endpoint read/write routines. This simplifies porting burden by providing a more orthogonal interface, and the functionality can always be replicated when desired by using an alarm combined with endpoint_shutdown. I'm fairly certain we ended up with this interface because it was convenient to do from libevent. Things that need attention still: - adding an fd to a pollset is O(n^2) - but this is probably ok given that we'll not use this for multipolling once platform specific implementations are added. - we rely on the backup poller too often - especially for SSL handshakes and for client connection establishment we should have a better mechanism ([] [] - Linux needs to use epoll for multiple fds, FreeBSD variants (including Darwin) need to use kqueue. ([] [] - Linux needs to use eventfd for poll kicking. ([] Change on 2015/01/07 by ctiller <ctiller@google.com> ------------- Created by MOE: http://code.google.com/p/moe-java MOE_MIGRATED_REVID=83461069
* Have grpc_iomgr_work() adjust its poll deadline to account for the next alarm.Gravatar klempner2014-12-29
| | | | | | | | | This fixes _low_test.py, once we reverse CL 82686562 accidentally reducing poll timeouts to 1 us. Change on 2014/12/23 by klempner <klempner@google.com> ------------- Created by MOE: http://code.google.com/p/moe-java MOE_MIGRATED_REVID=82741776
* Fix poll kicking, unflaking _low_test.pyGravatar klempner2014-12-29
| | | | | | | Change on 2014/12/22 by klempner <klempner@google.com> ------------- Created by MOE: http://code.google.com/p/moe-java MOE_MIGRATED_REVID=82686562
* Port [] alarm management to GRPC.Gravatar ctiller2014-12-29
| | | | | | | | | | | | | This change implements a platform independent alarm manager in alarm.c. It's integrated with iomgr, and some tests are cleaned up. The alarm implementation itself is a fairly direct port of LazyAlarmList from eventmanager. SpinLock has been replaced for now with gpr_mu, and other atomic operations have been dropped (again, for now). A majority of tests have been ported. Change on 2014/12/19 by ctiller <ctiller@google.com> ------------- Created by MOE: http://code.google.com/p/moe-java MOE_MIGRATED_REVID=82551363
* gRPC: Avoid AF_INET6 sockets when the ::1 loopback address doesn't exist.Gravatar pmarks2014-12-19
| | | | | | | | | | | On Linux with disable_ipv6=1, we can create sockets bound to [::]:port, yet connecting to that address triggers an Unreachable error. Since IPv6 is useless on such machines, it's cleaner to turn it off than expose users to a half-broken state. Change on 2014/12/17 by pmarks <pmarks@google.com> ------------- Created by MOE: http://code.google.com/p/moe-java MOE_MIGRATED_REVID=82387437
* Introduce the (outside-of-iomgr) pollset API.Gravatar ctiller2014-12-19
| | | | | | | | | | | | | This CL introduces the public side of this interface. There will need to be an iomgr-private API also, but this will be a per-implementation API and so is not covered here. I've taken care of wiring the interface through the codebase in the manner that I expect it will be used. Change on 2014/12/17 by ctiller <ctiller@google.com> ------------- Created by MOE: http://code.google.com/p/moe-java MOE_MIGRATED_REVID=82376987
* Fix include guards.Gravatar ctiller2014-12-17
| | | | | | | Change on 2014/12/17 by ctiller <ctiller@google.com> ------------- Created by MOE: http://code.google.com/p/moe-java MOE_MIGRATED_REVID=82354016
* Remove endpoint/ directories.Gravatar ctiller2014-12-17
| | | | | | | | | | Fold endpoint interface into iomgr, move secure_endpoint into security/. This will make it easier for endpoint to rely on some iomgr defined types (like pollset). Change on 2014/12/17 by ctiller <ctiller@google.com> ------------- Created by MOE: http://code.google.com/p/moe-java MOE_MIGRATED_REVID=82338036
* Make alarm initialization take a timespec now.Gravatar ctiller2014-12-16
| | | | | | | | | This will allow combining of gpr_now() calls, and make it easier to test the alarm code in the future. Change on 2014/12/16 by ctiller <ctiller@google.com> ------------- Created by MOE: http://code.google.com/p/moe-java MOE_MIGRATED_REVID=82246768
* GOAWAY & Reconnection support.Gravatar ctiller2014-12-15
| | | | | | | | | | | | Clients stay connected to a server after it shutdowns until all active calls have completed, and then they drop. After a GOAWAY or a disconnect, clients will attempt to re-resolve and reconnect to the server. Change on 2014/12/15 by ctiller <ctiller@google.com> ------------- Created by MOE: http://code.google.com/p/moe-java MOE_MIGRATED_REVID=82178515
* Add time averaged stats for future alarm list work.Gravatar ctiller2014-12-15
| | | | | | | | | This is a trivial C89-ification of the []2 implementation of the same idea. Indeed the implementation files and tests have been branched from the [] versions. Change on 2014/12/15 by ctiller <ctiller@google.com> ------------- Created by MOE: http://code.google.com/p/moe-java MOE_MIGRATED_REVID=82168822
* Simplify alarm API.Gravatar ctiller2014-12-15
| | | | | | | | | This change removes a corner case that needs to be handled (what happens if you add an alarm twice?). This corner case was never used, nor tested. Change on 2014/12/15 by ctiller <ctiller@google.com> ------------- Created by MOE: http://code.google.com/p/moe-java MOE_MIGRATED_REVID=82168179
* Remove log spamGravatar ctiller2014-12-12
| | | | | | | Change on 2014/12/12 by ctiller <ctiller@google.com> ------------- Created by MOE: http://code.google.com/p/moe-java MOE_MIGRATED_REVID=82000900
* Wait for name resolutions to complete before shutting down iomgr.Gravatar ctiller2014-12-11
| | | | | | | | | | | | This at least avoids crashing when shutting down during name resolution. There is still a memory leak to track down before I add a test that exposes this. This CL also makes some tiny cleanups and debuggability improvements. Change on 2014/12/11 by ctiller <ctiller@google.com> ------------- Created by MOE: http://code.google.com/p/moe-java MOE_MIGRATED_REVID=81882486
* Introducing iomgr.Gravatar ctiller2014-12-09
Move eventmanager and platform dependent endpoint functionality into a single library called 'iomgr'. This is primarily to prepare for a Windows port - where posix socket semantics lead to poor quality code. Mostly this is a code movement CL, with some small changes to help prepare the way for porting: - em style fd objects can only be held internally in iomgr, and own their memory - added grpc_iomgr_create_endpoint_pair() to accomodate the common pattern of creating a tcp endpoint from the output of socketpair - this will help keep our tests portable - separated em alarm interface into a separate file, as this part of event manager is needed higher up the stack - made the eventmanager bits a true singleton, simplifying API's across the stack as there's no longer a reason to carry a pointer there. Initial design document is here: https://docs.google.com/document/d/1VmafcHvvrP5kwtQkz84R5yXF7u7fW-9Pn0bkSUQHDt8/edit?disco=AAAAARNByxg Change on 2014/12/09 by ctiller <ctiller@google.com> ------------- Created by MOE: http://code.google.com/p/moe-java MOE_MIGRATED_REVID=81716456