Skip to content
Snippets Groups Projects
Commit dc582e0b authored by Simon Tomlinson's avatar Simon Tomlinson
Browse files

Only log host online events if host was offline

Host online events were previously logged every time a host became
online. This produced a huge amount of log volume.
parent 0645d4e8
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -119,16 +119,19 @@ def offline!
def online?
return @online unless check_replica_status?
 
was_online = @online
refresh_status
 
if @online
# Log that the host came back online if it was previously offline
if @online && !was_online
::Gitlab::Database::LoadBalancing::Logger.info(
event: :host_online,
message: 'Host is online after replica status check',
db_host: @host,
db_port: @port
)
else
# Always log if the host goes offline
elsif !@online
::Gitlab::Database::LoadBalancing::Logger.warn(
event: :host_offline,
message: 'Host is offline after replica status check',
Loading
Loading
Loading
Loading
@@ -2,7 +2,7 @@
 
require 'spec_helper'
 
RSpec.describe Gitlab::Database::LoadBalancing::Host do
RSpec.describe Gitlab::Database::LoadBalancing::Host, feature_category: :database do
let(:load_balancer) do
Gitlab::Database::LoadBalancing::LoadBalancer
.new(Gitlab::Database::LoadBalancing::Configuration.new(ActiveRecord::Base))
Loading
Loading
@@ -124,13 +124,36 @@ def wrapped_exception(wrapper, original)
end
 
it 'refreshes the status' do
expect(Gitlab::Database::LoadBalancing::Logger).to receive(:info)
.with(hash_including(event: :host_online))
.and_call_original
expect(host).to be_online
end
 
context 'and the host was previously online' do
# Hosts are online by default
it 'does not log the online event' do
expect(Gitlab::Database::LoadBalancing::Logger)
.not_to receive(:info)
.with(hash_including(event: :host_online))
expect(host).to be_online
end
end
context 'and the host was previously offline' do
before do
host.offline!
end
it 'logs the online event' do
expect(Gitlab::Database::LoadBalancing::Logger)
.to receive(:info)
.with(hash_including(event: :host_online))
.and_call_original
expect(host).to be_online
end
end
context 'and replica is not up to date' do
before do
expect(host).to receive(:replica_is_up_to_date?).and_return(false)
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment