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() ...@@ -152,10 +152,15 @@ CircuitBreaker::CircuitBreaker()
} }
bool CircuitBreaker::OnCallEnd(int error_code, int64_t latency) { bool CircuitBreaker::OnCallEnd(int error_code, int64_t latency) {
if (_broken.load(butil::memory_order_relaxed) || bool broken = _broken.load(butil::memory_order_relaxed);
!_long_window.OnCallEnd(error_code, latency) || if (broken) {
return false;
}
if (!_long_window.OnCallEnd(error_code, latency) ||
!_short_window.OnCallEnd(error_code, latency)) { !_short_window.OnCallEnd(error_code, latency)) {
UpdateIsolationDuration(); if (!_broken.exchange(true, butil::memory_order_acquire)) {
UpdateIsolationDuration();
}
return false; return false;
} }
return true; return true;
...@@ -169,8 +174,6 @@ void CircuitBreaker::Reset() { ...@@ -169,8 +174,6 @@ void CircuitBreaker::Reset() {
} }
void CircuitBreaker::UpdateIsolationDuration() { 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(); int64_t now_time_ms = butil::cpuwide_time_ms();
int isolation_duration_ms = _isolation_duration_ms.load(butil::memory_order_relaxed); int isolation_duration_ms = _isolation_duration_ms.load(butil::memory_order_relaxed);
const int max_isolation_duration_ms = const int max_isolation_duration_ms =
...@@ -184,7 +187,6 @@ void CircuitBreaker::UpdateIsolationDuration() { ...@@ -184,7 +187,6 @@ void CircuitBreaker::UpdateIsolationDuration() {
isolation_duration_ms = min_isolation_duration_ms; isolation_duration_ms = min_isolation_duration_ms;
} }
_isolation_duration_ms.store(isolation_duration_ms, butil::memory_order_relaxed); _isolation_duration_ms.store(isolation_duration_ms, butil::memory_order_relaxed);
}
} }
} // namespace brpc } // namespace brpc
...@@ -64,7 +64,7 @@ private: ...@@ -64,7 +64,7 @@ private:
const int _max_error_percent; const int _max_error_percent;
const double _smooth; 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_error_cost;
butil::atomic<int64_t> _ema_latency; 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