Skip to content

Commit 66696e6

Browse files
authored
Log errors when retrying Diego requests (#4747)
Also use "{e.class} - {e.message}" consistently in log messages instead of "{e.inspect}".
1 parent 169b620 commit 66696e6

File tree

9 files changed

+24
-22
lines changed

9 files changed

+24
-22
lines changed

app/jobs/runtime/create_buildpack_installer.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ def perform
2222

2323
logger.info "Buildpack #{name} created and installed"
2424
rescue StandardError => e
25-
logger.error("Buildpack #{name} failed to install or update. Error: #{e.inspect}")
25+
logger.error("Buildpack #{name} failed to install or update. Error: #{e.class} - #{e.message}")
2626
raise e
2727
end
2828
end

app/jobs/runtime/update_buildpack_installer.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ def perform
1717

1818
logger.info "Buildpack #{name} updated"
1919
rescue StandardError => e
20-
logger.error("Buildpack #{name} failed to update. Error: #{e.inspect}")
20+
logger.error("Buildpack #{name} failed to update. Error: #{e.class} - #{e.message}")
2121
raise
2222
end
2323
end

lib/cloud_controller/routing_api/routing_api_client.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ def to_router_group_objects(body)
6464
def token_info
6565
uaa_client.token_info
6666
rescue CF::UAA::BadResponse => e
67-
logger.error("uaa request for token failed: #{e.inspect}")
67+
logger.error("uaa request for token failed: #{e.class} - #{e.message}")
6868
raise UaaUnavailable
6969
end
7070

lib/cloud_controller/uaa/uaa_client.rb

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ def get_clients(client_ids)
3333
def token_info
3434
token_issuer.client_credentials_grant
3535
rescue CF::UAA::NotFound, CF::UAA::BadTarget, CF::UAA::BadResponse => e
36-
logger.error("UAA request for token failed: #{e.inspect}")
36+
logger.error("UAA request for token failed: #{e.class} - #{e.message}")
3737
raise UaaUnavailable
3838
end
3939

@@ -44,7 +44,7 @@ def users_for_ids(user_ids)
4444
def usernames_for_ids(user_ids)
4545
fetch_users(user_ids).transform_values { |user| user['username'] }
4646
rescue UaaUnavailable, CF::UAA::UAAError => e
47-
logger.error("Failed to retrieve usernames from UAA: #{e.inspect}#{error_info_from_target_error(e)}")
47+
logger.error("Failed to retrieve usernames from UAA: #{e.class} - #{e.message}#{error_info_from_target_error(e)}")
4848
{}
4949
end
5050

@@ -56,7 +56,7 @@ def id_for_username(username, origin: nil)
5656
user = results['resources'].first
5757
user && user['id']
5858
rescue CF::UAA::UAAError => e
59-
logger.error("Failed to retrieve user id from UAA: #{e.inspect}#{error_info_from_target_error(e)}")
59+
logger.error("Failed to retrieve user id from UAA: #{e.class} - #{e.message}#{error_info_from_target_error(e)}")
6060
raise UaaUnavailable
6161
end
6262

@@ -92,7 +92,7 @@ def origins_for_username(username)
9292

9393
results['resources'].pluck('origin')
9494
rescue UaaUnavailable, CF::UAA::UAAError => e
95-
logger.error("Failed to retrieve origins from UAA: #{e.inspect}#{error_info_from_target_error(e)}")
95+
logger.error("Failed to retrieve origins from UAA: #{e.class} - #{e.message}#{error_info_from_target_error(e)}")
9696
raise UaaUnavailable
9797
end
9898

@@ -104,14 +104,14 @@ def create_shadow_user(username, origin)
104104
{ 'id' => e.info['user_id'] }
105105
rescue CF::UAA::BadResponse => e
106106
unless e.message == 'invalid status response: 429'
107-
logger.error("UAA request for creating a user failed: #{e.inspect}")
107+
logger.error("UAA request for creating a user failed: #{e.class} - #{e.message}")
108108
raise UaaUnavailable
109109
end
110110

111-
logger.warn("UAA request for creating a user ran into rate limits: #{e.inspect}")
111+
logger.warn("UAA request for creating a user ran into rate limits: #{e.class} - #{e.message}")
112112
raise UaaRateLimited
113113
rescue CF::UAA::UAAError => e
114-
logger.error("UAA request for creating a user failed: #{e.inspect}")
114+
logger.error("UAA request for creating a user failed: #{e.class} - #{e.message}")
115115
raise UaaUnavailable
116116
end
117117

@@ -128,15 +128,15 @@ def with_request_error_handling
128128
begin
129129
yield
130130
rescue CF::UAA::InvalidToken => e
131-
logger.error("UAA request for token failed: #{e.inspect}")
131+
logger.error("UAA request for token failed: #{e.class} - #{e.message}")
132132
raise
133133
rescue UaaUnavailable, CF::UAA::UAAError => e
134134
if Time.now.utc > retry_until
135135
logger.error('Unable to establish a connection to UAA, no more retries, raising an exception.')
136136
raise UaaUnavailable
137137
else
138138
sleep_time = [delay, max_delay].min
139-
logger.error("Failed to retrieve details from UAA: #{e.inspect}#{error_info_from_target_error(e)}")
139+
logger.error("Failed to retrieve details from UAA: #{e.class} - #{e.message}#{error_info_from_target_error(e)}")
140140
logger.info("Attempting to connect to the UAA. Total #{(retry_until - Time.now.utc).round(2)} seconds remaining. Next retry after #{sleep_time} seconds.")
141141
sleep(sleep_time)
142142
delay *= factor

lib/diego/client.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@ def with_request_error_handling
166166
raise RequestError.new(e.message)
167167
else
168168
sleep_time = [delay, max_delay].min
169+
@logger.error("Request to the diego backend failed with error: #{e.class} - #{e.message}")
169170
@logger.info("Attempting to connect to the diego backend. Total #{(retry_until - Time.now.utc).round(2)} seconds remaining. Next retry after #{sleep_time} seconds.")
170171
sleep(sleep_time)
171172
delay *= factor

middleware/base_rate_limiter.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ def increment(key, expires_in, logger)
6464

6565
[count_str.to_i, ttl_int]
6666
rescue Redis::BaseError => e
67-
logger.error("Redis error: #{e.inspect}")
67+
logger.error("Redis error: #{e.class} - #{e.message}")
6868
[1, expires_in]
6969
end
7070
end

middleware/service_broker_rate_limiter.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,15 +70,15 @@ def try_increment?(key, max_concurrent_requests, logger)
7070
@redis.decr(key)
7171
false
7272
rescue Redis::BaseError => e
73-
logger.error("Redis error: #{e.inspect}")
73+
logger.error("Redis error: #{e.class} - #{e.message}")
7474
true
7575
end
7676

7777
def decrement(key, logger)
7878
count_str = @redis.decr(key)
7979
@redis.incr(key) if count_str.to_i < 0
8080
rescue Redis::BaseError => e
81-
logger.error("Redis error: #{e.inspect}")
81+
logger.error("Redis error: #{e.class} - #{e.message}")
8282
end
8383
end
8484
end

spec/diego/client_spec.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -767,9 +767,10 @@ module Diego
767767
raise 'Error!'
768768
end
769769
end.to raise_error(RequestError, 'Error!')
770+
expect(logger).to have_received(:error).with(/Request to the diego backend failed with error/)
770771
expect(logger).to have_received(:info).with(/Attempting to connect to the diego backend./)
771772
expect(logger).to have_received(:error).with(/Unable to establish a connection to diego backend/)
772-
expect(logger).to have_received(:error).once
773+
expect(logger).to have_received(:error).twice
773774
expect(logger).to have_received(:info).once
774775
expect(attempts).to eq(2)
775776
end

spec/unit/lib/uaa/uaa_client_spec.rb

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ module VCAP::CloudController
231231

232232
it 'logs the error' do
233233
uaa_client.usernames_for_ids([userid_1])
234-
expect(mock_logger).to have_received(:error).with("Failed to retrieve usernames from UAA: #{uaa_error.inspect}")
234+
expect(mock_logger).to have_received(:error).with("Failed to retrieve usernames from UAA: #{uaa_error.class} - #{uaa_error.message}")
235235
end
236236

237237
context 'TargetError with details' do
@@ -243,7 +243,7 @@ module VCAP::CloudController
243243

244244
it 'logs the error details' do
245245
uaa_client.usernames_for_ids([userid_1])
246-
expect(mock_logger).to have_received(:error).with("Failed to retrieve usernames from UAA: #<CF::UAA::TargetError: error response>, error_info: #{error_info}")
246+
expect(mock_logger).to have_received(:error).with("Failed to retrieve usernames from UAA: CF::UAA::TargetError - error response, error_info: #{error_info}")
247247
end
248248
end
249249
end
@@ -519,7 +519,7 @@ module VCAP::CloudController
519519

520520
it 'logs the error and raises UaaUnavailable' do
521521
expect { uaa_client.create_shadow_user('test-user@idp.local', 'idp.local') }.to raise_error(UaaUnavailable)
522-
expect(mock_logger).to have_received(:error).with("UAA request for creating a user failed: #{uaa_error.inspect}")
522+
expect(mock_logger).to have_received(:error).with("UAA request for creating a user failed: #{uaa_error.class} - #{uaa_error.message}")
523523
end
524524
end
525525

@@ -535,7 +535,7 @@ module VCAP::CloudController
535535

536536
it 'logs the error and raises UaaRateLimited' do
537537
expect { uaa_client.create_shadow_user('test-user@idp.local', 'idp.local') }.to raise_error(UaaRateLimited)
538-
expect(mock_logger).to have_received(:warn).with("UAA request for creating a user ran into rate limits: #{uaa_error.inspect}")
538+
expect(mock_logger).to have_received(:warn).with("UAA request for creating a user ran into rate limits: #{uaa_error.class} - #{uaa_error.message}")
539539
end
540540
end
541541

@@ -551,7 +551,7 @@ module VCAP::CloudController
551551

552552
it 'logs and raises the error' do
553553
expect { uaa_client.create_shadow_user('test-user@idp.local', 'idp.local') }.to raise_error(UaaUnavailable)
554-
expect(mock_logger).to have_received(:error).with("UAA request for creating a user failed: #{uaa_error.inspect}")
554+
expect(mock_logger).to have_received(:error).with("UAA request for creating a user failed: #{uaa_error.class} - #{uaa_error.message}")
555555
end
556556
end
557557
end
@@ -924,7 +924,7 @@ module VCAP::CloudController
924924
expect do
925925
uaa_client.origins_for_username(username)
926926
end.to raise_error(UaaUnavailable)
927-
expect(mock_logger).to have_received(:error).with("Failed to retrieve origins from UAA: #{uaa_error.inspect}")
927+
expect(mock_logger).to have_received(:error).with("Failed to retrieve origins from UAA: #{uaa_error.class} - #{uaa_error.message}")
928928
end
929929
end
930930
end

0 commit comments

Comments
 (0)