From 95ff257aa79d216077b05c63cda99376a219bf02 Mon Sep 17 00:00:00 2001 From: Nivedita Priyadarshini Date: Tue, 21 Jan 2025 18:11:53 +0530 Subject: [PATCH 1/2] Allow retrying failed rollout for play store submissions --- app/models/play_store_submission.rb | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/app/models/play_store_submission.rb b/app/models/play_store_submission.rb index 660f6d5d7..657f0bad6 100644 --- a/app/models/play_store_submission.rb +++ b/app/models/play_store_submission.rb @@ -91,6 +91,10 @@ class PlayStoreSubmission < StoreSubmission transitions to: :failed end + event :retry_rollout, after_commit: :on_retry_rollout! do + transitions from: :failed, to: :prepared + end + event :fail_with_sync_option, before: :set_failure_context do transitions from: [:preparing, :prepared, :failed_with_action_required, :finished_manually], to: :failed_with_action_required end @@ -299,6 +303,10 @@ def on_prepare! play_store_rollout.start_release!(retry_on_review_fail: internal_channel?) if auto_rollout? end + def on_retry_rollout! + play_store_rollout.start_release!(retry_on_review_fail: internal_channel?) if auto_rollout? + end + def on_fail!(args = nil) failure_error = args&.fetch(:error, nil) event_stamp!(reason: :failed, kind: :error, data: stamp_data(failure_message: failure_error&.message)) From 8a967282c86533c4574b8f967b4e256d0f04f372 Mon Sep 17 00:00:00 2001 From: Nivedita Priyadarshini Date: Tue, 21 Jan 2025 18:45:01 +0530 Subject: [PATCH 2/2] Simplify failure logic in play store rollout --- app/models/play_store_rollout.rb | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/app/models/play_store_rollout.rb b/app/models/play_store_rollout.rb index 54520ba34..ee9bec71f 100644 --- a/app/models/play_store_rollout.rb +++ b/app/models/play_store_rollout.rb @@ -69,7 +69,7 @@ def start_release!(retry_on_review_fail: false) complete! event_stamp!(reason: :completed, kind: :success, data: stamp_data) else - fail!(result.error, review_failure: !retry_on_review_fail) + fail!(result.error) end end end @@ -86,7 +86,7 @@ def move_to_next_stage!(retry_on_review_fail: true) fully_release! return end - fail!(result.error, review_failure: !retry_on_review_fail) + fail!(result.error) end end end @@ -141,20 +141,13 @@ def rollout_in_progress? private - def fail!(error, review_failure: false) + def fail!(error) elog(error) errors.add(:base, error) + event_stamp!(reason: :failed, kind: :error, data: stamp_data) - if review_failure - event_stamp!(reason: :failed, kind: :error, data: stamp_data) - play_store_submission.fail_with_review_rejected!(error) - return - end - - if play_store_submission.auto_rollout? - event_stamp!(reason: :failed, kind: :error, data: stamp_data) - play_store_submission.fail_with_error!(error) - end + return if play_store_submission.fail_with_review_rejected!(error) + play_store_submission.fail_with_error!(error) if play_store_submission.auto_rollout? end def rollout(value, retry_on_review_fail: false)