Skip to content

Commit 50f7fbf

Browse files
Add execution_id to the Sidekiq middleware
This means that all jobs will have improved logging: - `jid` is the same across retry runs of the same job (this already existed in the previous implementation). This is now also sent to Sentry. - `execution_id` is the replacement for `tx_id`. This changes between retry runs, but still doesn't tag the `Start #perform` and `Completed #perform` log messages. This is seemingly much more difficult. Jira-Issue: MAV-4085
1 parent 6dd1a60 commit 50f7fbf

4 files changed

Lines changed: 43 additions & 48 deletions

File tree

app/jobs/gias_import_job.rb

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,11 @@ class GIASImportJob < ApplicationJob
66
queue_as :third_party_data_imports
77

88
def perform(dry_run: false)
9-
tx_id = SecureRandom.urlsafe_base64(16)
9+
GIAS.download
1010

11-
SemanticLogger.tagged(tx_id:, job_id:) do
12-
Sentry.set_tags(tx_id:, job_id:)
11+
results = GIAS.check_import
12+
GIAS.log_import_check_results(results)
1313

14-
GIAS.download
15-
16-
results = GIAS.check_import
17-
GIAS.log_import_check_results(results)
18-
19-
GIAS.import unless dry_run
20-
end
14+
GIAS.import unless dry_run
2115
end
2216
end

app/jobs/search_vaccination_records_in_nhs_job.rb

Lines changed: 25 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -14,46 +14,40 @@ def perform(patient_id)
1414
return
1515
end
1616

17-
tx_id = SecureRandom.urlsafe_base64(16)
17+
@programmes = Programme.all_as_variants
1818

19-
SemanticLogger.tagged(tx_id:, job_id:) do
20-
Sentry.set_tags(tx_id:, job_id:)
19+
return unless feature_flags_enabled
2120

22-
@programmes = Programme.all_as_variants
23-
24-
return unless feature_flags_enabled
25-
26-
existing_vaccination_records.find_each do |vaccination_record|
27-
incoming_vaccination_record =
28-
incoming_vaccination_records.find do
29-
it.nhs_immunisations_api_id ==
30-
vaccination_record.nhs_immunisations_api_id
31-
end
21+
existing_vaccination_records.find_each do |vaccination_record|
22+
incoming_vaccination_record =
23+
incoming_vaccination_records.find do
24+
it.nhs_immunisations_api_id ==
25+
vaccination_record.nhs_immunisations_api_id
26+
end
3227

33-
if incoming_vaccination_record
34-
vaccination_record.update!(
35-
incoming_vaccination_record
36-
.attributes
37-
.except("id", "uuid", "created_at")
38-
.merge(updated_at: Time.current)
39-
)
28+
if incoming_vaccination_record
29+
vaccination_record.update!(
30+
incoming_vaccination_record
31+
.attributes
32+
.except("id", "uuid", "created_at")
33+
.merge(updated_at: Time.current)
34+
)
4035

41-
incoming_vaccination_records.delete(incoming_vaccination_record)
42-
else
43-
vaccination_record.destroy!
44-
end
36+
incoming_vaccination_records.delete(incoming_vaccination_record)
37+
else
38+
vaccination_record.destroy!
4539
end
40+
end
4641

47-
# Remaining incoming_vaccination_records are new
48-
incoming_vaccination_records.each(&:save!)
42+
# Remaining incoming_vaccination_records are new
43+
incoming_vaccination_records.each(&:save!)
4944

50-
update_vaccination_search_timestamps if patient.nhs_number.present?
45+
update_vaccination_search_timestamps if patient.nhs_number.present?
5146

52-
PatientStatusUpdater.call(patient:)
47+
PatientStatusUpdater.call(patient:)
5348

54-
incoming_vaccination_records.each do |vaccination_record|
55-
AlreadyHadNotificationSender.call(vaccination_record:)
56-
end
49+
incoming_vaccination_records.each do |vaccination_record|
50+
AlreadyHadNotificationSender.call(vaccination_record:)
5751
end
5852
end
5953

app/jobs/sync_vaccination_record_to_nhs_job.rb

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,6 @@ def perform(vaccination_record_id)
1010
return
1111
end
1212

13-
tx_id = SecureRandom.urlsafe_base64(16)
14-
15-
SemanticLogger.tagged(tx_id:, job_id:) do
16-
Sentry.set_tags(tx_id:, job_id:)
17-
18-
NHS::ImmunisationsAPI.sync_immunisation(vaccination_record)
19-
end
13+
NHS::ImmunisationsAPI.sync_immunisation(vaccination_record)
2014
end
2115
end

config/initializers/sidekiq.rb

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,19 @@
1919

2020
config.server_middleware do |chain|
2121
chain.add SidekiqUniqueJobs::Middleware::Server
22+
23+
chain.add(
24+
Class.new do
25+
def call(_worker, job, _queue)
26+
execution_id = SecureRandom.urlsafe_base64(8)
27+
28+
SemanticLogger.tagged(execution_id:) do
29+
Sentry.set_tags(execution_id:, jid: job["jid"])
30+
yield
31+
end
32+
end
33+
end
34+
)
2235
end
2336

2437
SidekiqUniqueJobs::Server.configure(config)

0 commit comments

Comments
 (0)