Skip to content
Snippets Groups Projects
Commit 15a059ac authored by Vijay Pai's avatar Vijay Pai
Browse files

Merge pull request #407 from ctiller/alarming

Fix contention in alarm lists
parents 53476f1d 5200c189
No related branches found
No related tags found
No related merge requests found
...@@ -335,10 +335,6 @@ static int run_some_expired_alarms(gpr_mu *drop_mu, gpr_timespec now, ...@@ -335,10 +335,6 @@ static int run_some_expired_alarms(gpr_mu *drop_mu, gpr_timespec now,
gpr_mu_unlock(&g_mu); gpr_mu_unlock(&g_mu);
gpr_mu_unlock(&g_checker_mu); gpr_mu_unlock(&g_checker_mu);
} else if (next) {
gpr_mu_lock(&g_mu);
*next = gpr_time_min(*next, g_shard_queue[0]->min_deadline);
gpr_mu_unlock(&g_mu);
} }
if (n && drop_mu) { if (n && drop_mu) {
......
...@@ -39,6 +39,15 @@ ...@@ -39,6 +39,15 @@
/* iomgr internal api for dealing with alarms */ /* iomgr internal api for dealing with alarms */
/* Check for alarms to be run, and run them.
Return non zero if alarm callbacks were executed.
Drops drop_mu if it is non-null before executing callbacks.
If next is non-null, TRY to update *next with the next running alarm
IF that alarm occurs before *next current value.
*next is never guaranteed to be updated on any given execution; however,
with high probability at least one thread in the system will see an update
at any time slice. */
int grpc_alarm_check(gpr_mu *drop_mu, gpr_timespec now, gpr_timespec *next); int grpc_alarm_check(gpr_mu *drop_mu, gpr_timespec now, gpr_timespec *next);
void grpc_alarm_list_init(gpr_timespec now); void grpc_alarm_list_init(gpr_timespec now);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment