diff --git a/src/core/lib/resource_quota/periodic_update.cc b/src/core/lib/resource_quota/periodic_update.cc index b4874fea1da..a722f2c568f 100644 --- a/src/core/lib/resource_quota/periodic_update.cc +++ b/src/core/lib/resource_quota/periodic_update.cc @@ -56,8 +56,9 @@ bool PeriodicUpdate::MaybeEndPeriod(absl::FunctionRef<void(Duration)> f) { // Store the remainder left. Note that updates_remaining_ may have been // decremented by another thread whilst we performed the above calculations: // we simply discard those decrements. - updates_remaining_.store(better_guess - expected_updates_per_period_, - std::memory_order_release); + auto remaining = better_guess - expected_updates_per_period_; + expected_updates_per_period_ = better_guess; + updates_remaining_.store(remaining, std::memory_order_release); // Not quite done, return, try for longer. return false; }