diff options
author | 2016-10-13 19:33:04 -0700 | |
---|---|---|
committer | 2016-10-13 23:07:48 -0700 | |
commit | 90712d5e5dfc40ec694a031c70379cd3c9c94431 (patch) | |
tree | b2c69ecf06dd2a557938f6af58dbeab4df9dc87c /src/core/ext/lb_policy/round_robin | |
parent | 2f27a16a6bfaea7c81024ad8ee377ff61216c520 (diff) |
gRPCLB and RR race fixes
Diffstat (limited to 'src/core/ext/lb_policy/round_robin')
-rw-r--r-- | src/core/ext/lb_policy/round_robin/round_robin.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/core/ext/lb_policy/round_robin/round_robin.c b/src/core/ext/lb_policy/round_robin/round_robin.c index 930fa86aca..325202fc6d 100644 --- a/src/core/ext/lb_policy/round_robin/round_robin.c +++ b/src/core/ext/lb_policy/round_robin/round_robin.c @@ -403,7 +403,6 @@ static int rr_pick(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol, gpr_mu_lock(&p->mu); if ((selected = peek_next_connected_locked(p))) { /* readily available, report right away */ - gpr_mu_unlock(&p->mu); *target = grpc_subchannel_get_connected_subchannel(selected->subchannel); if (user_data != NULL) { @@ -416,6 +415,7 @@ static int rr_pick(grpc_exec_ctx *exec_ctx, grpc_lb_policy *pol, } /* only advance the last picked pointer if the selection was used */ advance_last_picked_locked(p); + gpr_mu_unlock(&p->mu); return 1; } else { /* no pick currently available. Save for later in list of pending picks */ |