diff --git a/ee/app/workers/geo/metrics_update_worker.rb b/ee/app/workers/geo/metrics_update_worker.rb
index 0b62d43cf8f376f34dcb47f45bb08181e96b2d67..be84d17c90f1f7196dc9846f109849461361a0a0 100644
--- a/ee/app/workers/geo/metrics_update_worker.rb
+++ b/ee/app/workers/geo/metrics_update_worker.rb
@@ -6,8 +6,8 @@ class MetricsUpdateWorker
 
     idempotent!
     data_consistency :always
+    deduplicate :until_executed, ttl: 20.minutes
 
-    include ExclusiveLeaseGuard
     include Gitlab::Geo::LogHelpers
     # rubocop:disable Scalability/CronWorkerContext
     # This worker does not perform work scoped to a context
@@ -16,14 +16,8 @@ class MetricsUpdateWorker
 
     feature_category :geo_replication
 
-    LEASE_TIMEOUT = 1.hour
-
     def perform
-      try_obtain_lease { Geo::MetricsUpdateService.new.execute }
-    end
-
-    def lease_timeout
-      LEASE_TIMEOUT
+      Geo::MetricsUpdateService.new.execute
     end
   end
 end