From 9e5e303ac785db4276b7e52ceece8ab3af44f3b1 Mon Sep 17 00:00:00 2001 From: Sean Rankine Date: Thu, 28 May 2026 15:29:49 +0100 Subject: [PATCH 1/2] Rename delivery_time to delivered_at in receive deliveries job --- app/jobs/receive_submission_deliveries_job.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/jobs/receive_submission_deliveries_job.rb b/app/jobs/receive_submission_deliveries_job.rb index 7a16680f2..dccd300f1 100644 --- a/app/jobs/receive_submission_deliveries_job.rb +++ b/app/jobs/receive_submission_deliveries_job.rb @@ -20,11 +20,11 @@ def perform raise "Unexpected event type:#{ses_event_type}" unless ses_event_type == "Delivery" - delivery_time = Time.zone.parse(ses_message["delivery"]["timestamp"]) - process_delivery(delivery, submission, delivered_at: delivery_time) + delivered_at = Time.zone.parse(ses_message["delivery"]["timestamp"]) + process_delivery(delivery, submission, delivered_at:) if delivery.immediate? - submission_duration_ms = ((delivery_time - submission.created_at) * 1000).round + submission_duration_ms = ((delivered_at - submission.created_at) * 1000).round CloudWatchService.record_submission_delivery_latency_metric(submission_duration_ms, "Email") end end From 7f3f7e23264c22d45f110990876421d74cff036a Mon Sep 17 00:00:00 2001 From: Sean Rankine Date: Thu, 28 May 2026 15:39:16 +0100 Subject: [PATCH 2/2] Log delivered_at and delivery_duration_ms for immediate deliveries --- app/jobs/receive_submission_deliveries_job.rb | 29 ++++++++++--------- .../receive_submission_deliveries_job_spec.rb | 2 ++ 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/app/jobs/receive_submission_deliveries_job.rb b/app/jobs/receive_submission_deliveries_job.rb index dccd300f1..6637f3373 100644 --- a/app/jobs/receive_submission_deliveries_job.rb +++ b/app/jobs/receive_submission_deliveries_job.rb @@ -22,24 +22,25 @@ def perform delivered_at = Time.zone.parse(ses_message["delivery"]["timestamp"]) process_delivery(delivery, submission, delivered_at:) - - if delivery.immediate? - submission_duration_ms = ((delivered_at - submission.created_at) * 1000).round - CloudWatchService.record_submission_delivery_latency_metric(submission_duration_ms, "Email") - end end end private - def process_delivery(delivery, submission, **attributes) - set_submission_logging_attributes(submission:, delivery:) if delivery.immediate? - set_submission_batch_logging_attributes(form: submission.form, mode: submission.mode_object, delivery:) if delivery.daily? || delivery.weekly? - - delivery.update! attributes - - form_event_name = delivery.immediate? ? "submission_delivered" : "submission_batch_delivered" - - EventLogger.log_form_event(form_event_name) + def process_delivery(delivery, submission, delivered_at:) + delivery.update!(delivered_at:) + + if delivery.immediate? + delivery_latency = ((delivery.delivered_at - submission.created_at) * 1000).round + set_submission_logging_attributes(submission:, delivery:) + CloudWatchService.record_submission_delivery_latency_metric(delivery_latency, "Email") + EventLogger.log_form_event( + "submission_delivered", + { delivered_at: delivery.delivered_at, delivery_latency: }, + ) + elsif delivery.daily? || delivery.weekly? + set_submission_batch_logging_attributes(form: submission.form, mode: submission.mode_object, delivery:) + EventLogger.log_form_event("submission_batch_delivered") + end end end diff --git a/spec/jobs/receive_submission_deliveries_job_spec.rb b/spec/jobs/receive_submission_deliveries_job_spec.rb index 9d7d42253..26eb369d2 100644 --- a/spec/jobs/receive_submission_deliveries_job_spec.rb +++ b/spec/jobs/receive_submission_deliveries_job_spec.rb @@ -99,6 +99,8 @@ "form_id" => submission.form_id, "submission_reference" => reference, "preview" => "false", + "delivered_at" => Time.zone.parse(ses_delivery_timestamp), + "delivery_latency" => 6122, "sns_message_timestamp" => sns_message_timestamp, "job_id" => @job_id, "job_class" => "ReceiveSubmissionDeliveriesJob",