Skip to content

Commit 6c353c2

Browse files
authored
Merge pull request #1920 from alphagov/log-more-info-about-deliveries
Log more info about deliveries
2 parents 229cd65 + b235805 commit 6c353c2

12 files changed

+86
-39
lines changed

app/jobs/application_job.rb

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,22 @@
11
class ApplicationJob < ActiveJob::Base
2-
def set_submission_logging_attributes(submission)
2+
def set_submission_logging_attributes(submission:, delivery: nil)
33
CurrentJobLoggingAttributes.job_class = self.class.name
44
CurrentJobLoggingAttributes.job_id = job_id
55
CurrentJobLoggingAttributes.form_id = submission.form.id
66
CurrentJobLoggingAttributes.form_name = submission.form.name
77
CurrentJobLoggingAttributes.submission_reference = submission.reference
88
CurrentJobLoggingAttributes.preview = submission.preview?
9+
CurrentJobLoggingAttributes.delivery_id = delivery&.id
10+
CurrentJobLoggingAttributes.delivery_reference = delivery&.delivery_reference
911
end
1012

11-
def set_submission_batch_logging_attributes(form:, mode:)
13+
def set_submission_batch_logging_attributes(form:, mode:, delivery:)
1214
CurrentJobLoggingAttributes.job_class = self.class.name
1315
CurrentJobLoggingAttributes.job_id = job_id
1416
CurrentJobLoggingAttributes.form_id = form.id
1517
CurrentJobLoggingAttributes.form_name = form.name
1618
CurrentJobLoggingAttributes.preview = mode.preview?
19+
CurrentJobLoggingAttributes.delivery_id = delivery.id
20+
CurrentJobLoggingAttributes.delivery_reference = delivery.delivery_reference
1721
end
1822
end

app/jobs/delete_submissions_job.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ def perform(*_args)
1414
end
1515

1616
def delete_submission_data(submission)
17-
set_submission_logging_attributes(submission)
17+
set_submission_logging_attributes(submission:)
1818
delivery_status = submission&.single_submission_delivery&.status
1919

2020
files = submission.journey.completed_file_upload_questions

app/jobs/receive_submission_bounces_and_complaints_job.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,14 @@ def perform
2121
raise "Unexpected event type:#{ses_event_type}" unless %w[Bounce Complaint].include?(ses_event_type)
2222

2323
process_bounce(delivery, submission, ses_message) if ses_event_type == "Bounce"
24-
process_complaint(submission) if ses_event_type == "Complaint"
24+
process_complaint(delivery, submission) if ses_event_type == "Complaint"
2525
end
2626
end
2727

2828
private
2929

3030
def process_bounce(delivery, submission, ses_message)
31-
set_submission_logging_attributes(submission)
31+
set_submission_logging_attributes(submission:, delivery:)
3232

3333
bounce_object = ses_message["bounce"] || {}
3434

@@ -74,8 +74,8 @@ def process_bounce(delivery, submission, ses_message)
7474
end
7575
end
7676

77-
def process_complaint(submission)
78-
set_submission_logging_attributes(submission)
77+
def process_complaint(delivery, submission)
78+
set_submission_logging_attributes(submission:, delivery:)
7979

8080
EventLogger.log_form_event("submission_complaint")
8181
end

app/jobs/receive_submission_deliveries_job.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ def perform
3333
private
3434

3535
def process_delivery(delivery, submission, **attributes)
36-
set_submission_logging_attributes(submission)
36+
set_submission_logging_attributes(submission:, delivery:)
3737

3838
delivery.update! attributes
3939

app/jobs/send_s3_submission_job.rb

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
class SendS3SubmissionJob < SubmissionDeliveryJob
22
def perform(submission)
3-
set_submission_logging_attributes(submission)
3+
delivery = submission.single_submission_delivery
4+
set_submission_logging_attributes(submission:, delivery:)
45

5-
new_delivery_attempt!(submission)
6+
delivery.new_attempt!
67

78
key = S3SubmissionService.new(submission:).submit
89

9-
update_delivery_reference!(submission, delivery_reference: key)
10+
delivery.update!(delivery_reference: key)
1011
record_submission_sent!
1112
rescue StandardError
1213
CloudWatchService.record_job_failure_metric(self.class.name)

app/jobs/send_submission_batch_job.rb

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ def perform(delivery:)
1818
form = latest_submission.form
1919
mode = latest_submission.mode_object
2020
date = latest_submission.submission_time.to_date
21-
set_submission_batch_logging_attributes(form:, mode:)
21+
22+
set_submission_batch_logging_attributes(form:, mode:, delivery:)
2223

2324
if form.submission_email.blank?
2425
if mode.preview?
@@ -36,8 +37,9 @@ def perform(delivery:)
3637
last_attempt_at: Time.zone.now,
3738
)
3839

40+
CurrentJobLoggingAttributes.delivery_reference = delivery.delivery_reference
3941
EventLogger.log_form_event("daily_batch_email_sent", {
40-
mode:,
42+
mode: mode.to_s,
4143
batch_date: date,
4244
number_of_submissions: submissions.count,
4345
})

app/jobs/send_submission_job.rb

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,14 @@ class SendSubmissionJob < SubmissionDeliveryJob
55
retry_on Aws::SESV2::Errors::ServiceError, wait: :polynomially_longer, attempts: TOTAL_ATTEMPTS
66

77
def perform(submission)
8-
set_submission_logging_attributes(submission)
8+
delivery = submission.single_submission_delivery
9+
set_submission_logging_attributes(submission:, delivery:)
910

10-
new_delivery_attempt!(submission)
11+
delivery.new_attempt!
1112

1213
message_id = AwsSesSubmissionService.new(submission:).submit
1314

14-
update_delivery_reference!(submission, delivery_reference: message_id)
15+
delivery.update!(delivery_reference: message_id)
1516
record_submission_sent!
1617
rescue StandardError
1718
CloudWatchService.record_job_failure_metric(self.class.name)

app/jobs/submission_delivery_job.rb

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,6 @@ class SubmissionDeliveryJob < ApplicationJob
33

44
private
55

6-
def new_delivery_attempt!(submission)
7-
submission.single_submission_delivery.update!(
8-
last_attempt_at: Time.zone.now,
9-
delivered_at: nil,
10-
failed_at: nil,
11-
failure_reason: nil,
12-
)
13-
end
14-
15-
def update_delivery_reference!(submission, delivery_reference:)
16-
submission.single_submission_delivery.update!(
17-
delivery_reference: delivery_reference,
18-
)
19-
end
20-
216
def record_submission_sent!
227
milliseconds_since_scheduled = (Time.current - scheduled_at_or_enqueued_at).in_milliseconds.round
238
EventLogger.log_form_event("submission_sent", { milliseconds_since_scheduled: })

app/models/current_job_logging_attributes.rb

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,14 @@
11
class CurrentJobLoggingAttributes < ActiveSupport::CurrentAttributes
2-
attribute :job_class, :job_id, :form_id, :form_name, :submission_reference, :preview, :delivery_reference, :sqs_message_id, :sns_message_timestamp
2+
attribute :job_class,
3+
:job_id,
4+
:form_id,
5+
:form_name,
6+
:submission_reference,
7+
:preview,
8+
:delivery_id,
9+
:delivery_reference,
10+
:sqs_message_id,
11+
:sns_message_timestamp
312

413
def as_hash
514
{
@@ -9,6 +18,7 @@ def as_hash
918
form_name:,
1019
submission_reference:,
1120
preview: preview.to_s,
21+
delivery_id:,
1222
delivery_reference:,
1323
sqs_message_id:,
1424
sns_message_timestamp:,

app/models/delivery.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,13 @@ def status
2424
self.status == status
2525
end
2626
end
27+
28+
def new_attempt!
29+
update!(
30+
last_attempt_at: Time.zone.now,
31+
delivered_at: nil,
32+
failed_at: nil,
33+
failure_reason: nil,
34+
)
35+
end
2736
end

0 commit comments

Comments
 (0)