Commit 9145cb8a authored by TousakaRin's avatar TousakaRin

1. Remove cacheline alignment 2.make the logic clearer

parent 1ff59abf
......@@ -152,10 +152,15 @@ CircuitBreaker::CircuitBreaker()
}
bool CircuitBreaker::OnCallEnd(int error_code, int64_t latency) {
if (_broken.load(butil::memory_order_relaxed) ||
!_long_window.OnCallEnd(error_code, latency) ||
bool broken = _broken.load(butil::memory_order_relaxed);
if (broken) {
return false;
}
if (!_long_window.OnCallEnd(error_code, latency) ||
!_short_window.OnCallEnd(error_code, latency)) {
UpdateIsolationDuration();
if (!_broken.exchange(true, butil::memory_order_acquire)) {
UpdateIsolationDuration();
}
return false;
}
return true;
......@@ -169,8 +174,6 @@ void CircuitBreaker::Reset() {
}
void CircuitBreaker::UpdateIsolationDuration() {
if (!_broken.load(butil::memory_order_relaxed) &&
!_broken.exchange(true, butil::memory_order_acquire)) {
int64_t now_time_ms = butil::cpuwide_time_ms();
int isolation_duration_ms = _isolation_duration_ms.load(butil::memory_order_relaxed);
const int max_isolation_duration_ms =
......@@ -184,7 +187,6 @@ void CircuitBreaker::UpdateIsolationDuration() {
isolation_duration_ms = min_isolation_duration_ms;
}
_isolation_duration_ms.store(isolation_duration_ms, butil::memory_order_relaxed);
}
}
} // namespace brpc
......@@ -64,7 +64,7 @@ private:
const int _max_error_percent;
const double _smooth;
butil::atomic<int64_t> BAIDU_CACHELINE_ALIGNMENT _sample_count;
butil::atomic<int64_t> _sample_count;
butil::atomic<int64_t> _ema_error_cost;
butil::atomic<int64_t> _ema_latency;
};
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment