From b37c1a20c882804eab43cba785ccc6351bb8fb2c Mon Sep 17 00:00:00 2001
From: Michael Kozono <mkozono@gitlab.com>
Date: Wed, 29 May 2024 10:35:20 +0000
Subject: [PATCH] Geo: Add primary API URL to registry sync error log

---
 .../geo/container_repository_sync_service.rb  | 20 ++++++++++++-------
 .../container_repository_sync_service_spec.rb |  4 +++-
 2 files changed, 16 insertions(+), 8 deletions(-)

diff --git a/ee/app/services/geo/container_repository_sync_service.rb b/ee/app/services/geo/container_repository_sync_service.rb
index e690253f85cb7..76374548b424f 100644
--- a/ee/app/services/geo/container_repository_sync_service.rb
+++ b/ee/app/services/geo/container_repository_sync_service.rb
@@ -54,13 +54,19 @@ def reschedule_sync
     def fail_registry_sync!(message, error)
       log_error(message, error)
 
-      Gitlab::ErrorTracking.track_exception(error,
-        {
-          container_repository_name: container_repository.name,
-          project_path: container_repository.project.full_path,
-          project_id: container_repository.project_id
-        }
-      )
+      extra = {
+        container_repository_name: container_repository.name,
+        project_path: container_repository.project.full_path,
+        project_id: container_repository.project_id
+      }
+
+      begin
+        primary_api_url = Gitlab.config&.geo&.registry_replication&.primary_api_url
+        extra[:primary_api_url] = primary_api_url if primary_api_url
+      rescue ::GitlabSettings::MissingSetting
+      end
+
+      Gitlab::ErrorTracking.track_exception(error, extra)
 
       registry.failed!(message: message, error: error)
     end
diff --git a/ee/spec/services/geo/container_repository_sync_service_spec.rb b/ee/spec/services/geo/container_repository_sync_service_spec.rb
index a906e9eeeb59a..e8cbacad63dbe 100644
--- a/ee/spec/services/geo/container_repository_sync_service_spec.rb
+++ b/ee/spec/services/geo/container_repository_sync_service_spec.rb
@@ -65,6 +65,7 @@
     it 'tracks exception' do
       error = StandardError.new('Sync Error')
 
+      stub_registry_replication_config(enabled: true, primary_api_url: 'https://foo')
       allow_any_instance_of(Geo::ContainerRepositorySync)
         .to receive(:execute).and_raise(error)
 
@@ -73,7 +74,8 @@
         {
           container_repository_name: container_repository.name,
           project_path: container_repository.project.full_path,
-          project_id: container_repository.project_id
+          project_id: container_repository.project_id,
+          primary_api_url: 'https://foo'
         }
       )
 
-- 
GitLab