Skip to content

Commit a9d933d

Browse files
committed
Fix request metrics logging if log_db_queries is false
* if log_db_queries is falses, the two new fields would be logged but always with "0" as value
1 parent 9dcd69e commit a9d933d

File tree

3 files changed

+34
-10
lines changed

3 files changed

+34
-10
lines changed

lib/cloud_controller/logs/request_logs.rb

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,17 +26,21 @@ def start_request(request_id, env)
2626
@incomplete_requests.store(request_id, env)
2727
end
2828

29-
def complete_request(request_id, status, env, time_taken_ms, total_db_query_time_us, db_query_count)
29+
def complete_request(request_id, status, env, time_taken_ms, total_db_query_time_us=nil, db_query_count=nil)
3030
return if @incomplete_requests.delete(request_id).nil?
3131

3232
request = ActionDispatch::Request.new(env)
33-
@logger.info("Completed #{status} vcap-request-id: #{request_id}",
34-
{ status_code: status,
35-
time_taken_in_ms: time_taken_ms,
36-
total_db_query_time_in_ms: (total_db_query_time_us.to_f / 1_000),
37-
db_query_count: db_query_count,
38-
request_method: request.request_method,
39-
request_fullpath: request.filtered_path })
33+
34+
log_fields = {
35+
status_code: status,
36+
time_taken_in_ms: time_taken_ms,
37+
request_method: request.request_method,
38+
request_fullpath: request.filtered_path
39+
}
40+
log_fields[:total_db_query_time_in_ms] = (total_db_query_time_us.to_f / 1_000) unless total_db_query_time_us.nil?
41+
log_fields[:db_query_count] = db_query_count unless db_query_count.nil?
42+
43+
@logger.info("Completed #{status} vcap-request-id: #{request_id}", log_fields)
4044
end
4145

4246
def log_incomplete_requests

middleware/request_logs.rb

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,13 @@ def call(env)
1313

1414
status, headers, body = @app.call(env)
1515
time_taken_ms = timer - start_timer
16-
db_query_metrics = ::VCAP::Request.db_query_metrics
17-
@request_logs.complete_request(request_id, status, env, time_taken_ms, db_query_metrics.total_query_time_us, db_query_metrics.query_count)
16+
17+
args = [request_id, status, env, time_taken_ms]
18+
if VCAP::CloudController::Config.config.get(:db, :log_db_queries)
19+
db_query_metrics = ::VCAP::Request.db_query_metrics
20+
args += [db_query_metrics.total_query_time_us, db_query_metrics.query_count]
21+
end
22+
@request_logs.complete_request(*args)
1823

1924
[status, headers, body]
2025
end

spec/unit/middleware/request_logs_spec.rb

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ module Middleware
1010
let(:env) { { 'cf.request_id' => 'ID' } }
1111

1212
describe 'handling the request' do
13+
before do
14+
VCAP::CloudController::Config.config.get(:db)[:log_db_queries] = true
15+
end
16+
1317
it 'calls start request on request logs before the request' do
1418
middleware.call(env)
1519
expect(request_logs).to have_received(:start_request).with('ID', env)
@@ -24,6 +28,17 @@ module Middleware
2428
expect(request_logs).to have_received(:complete_request).with('ID', 200, { 'cf.request_id' => 'ID' }, be_a(Numeric), be_a(Numeric), be_a(Numeric))
2529
end
2630
end
31+
32+
describe 'when db query logging is disabled' do
33+
before do
34+
VCAP::CloudController::Config.config.get(:db)[:log_db_queries] = false
35+
end
36+
37+
it 'calls complete request on request logs without db query metrics' do
38+
middleware.call(env)
39+
expect(request_logs).to have_received(:complete_request).with('ID', 200, { 'cf.request_id' => 'ID' }, be_a(Numeric))
40+
end
41+
end
2742
end
2843
end
2944
end

0 commit comments

Comments
 (0)