aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core
diff options
context:
space:
mode:
authorGravatar klempner <klempner@google.com>2014-12-23 13:36:56 -0800
committerGravatar Jan Tattermusch <jtattermusch@google.com>2014-12-29 17:28:15 -0800
commit55af9b60cc75b5950c5a47612ba62fe97bc7ee3e (patch)
treece9c2d588d2c7e52bb8a690dd1232af70e85b02e /src/core
parentd94ad10cf1ef0b4c94b7f53e4e823d5b14127365 (diff)
Have grpc_iomgr_work() adjust its poll deadline to account for the next alarm.
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
Diffstat (limited to 'src/core')
-rw-r--r--src/core/iomgr/iomgr_libevent.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/core/iomgr/iomgr_libevent.c b/src/core/iomgr/iomgr_libevent.c
index afaf113a02..6188ab2749 100644
--- a/src/core/iomgr/iomgr_libevent.c
+++ b/src/core/iomgr/iomgr_libevent.c
@@ -185,8 +185,8 @@ int grpc_iomgr_work(gpr_timespec deadline) {
gpr_timespec now = gpr_now();
gpr_timespec next = grpc_alarm_list_next_timeout();
gpr_timespec delay_timespec = gpr_time_sub(deadline, now);
- /* poll for no longer than 100 millis */
- gpr_timespec max_delay = {0, 1000};
+ /* poll for no longer than one second */
+ gpr_timespec max_delay = gpr_time_from_seconds(1);
struct timeval delay;
if (gpr_time_cmp(delay_timespec, gpr_time_0) <= 0) {
@@ -197,6 +197,10 @@ int grpc_iomgr_work(gpr_timespec deadline) {
delay_timespec = max_delay;
}
+ /* Adjust delay to account for the next alarm, if applicable. */
+ delay_timespec = gpr_time_min(
+ delay_timespec, gpr_time_sub(grpc_alarm_list_next_timeout(), now));
+
delay = gpr_timeval_from_timespec(delay_timespec);
if (maybe_do_queue_work() || maybe_do_alarm_work(now, next) ||