Class: Environments::AutoRecoverService
- Inherits:
-
Object
- Object
- Environments::AutoRecoverService
- Includes:
- Gitlab::ExclusiveLeaseHelpers, Gitlab::LoopHelpers
- Defined in:
- app/services/environments/auto_recover_service.rb
Constant Summary collapse
- BATCH_SIZE =
100
- LOOP_TIMEOUT =
45.minutes
- LOOP_LIMIT =
1000
- EXCLUSIVE_LOCK_KEY =
'environments:auto_recover:lock'
- LOCK_TIMEOUT =
50.minutes
Constants included from Gitlab::ExclusiveLeaseHelpers
Gitlab::ExclusiveLeaseHelpers::FailedToObtainLockError
Instance Method Summary collapse
-
#execute ⇒ Object
Recover environments that are stuck stopping on a GitLab instance.
Methods included from Gitlab::LoopHelpers
Methods included from Gitlab::ExclusiveLeaseHelpers
Instance Method Details
#execute ⇒ Object
Recover environments that are stuck stopping on a GitLab instance
This auto stop process cannot run for more than 45 minutes. This is for preventing multiple ‘AutoStopCronWorker` CRON jobs run concurrently, which is scheduled at every hour.
20 21 22 23 24 25 26 |
# File 'app/services/environments/auto_recover_service.rb', line 20 def execute in_lock(EXCLUSIVE_LOCK_KEY, ttl: LOCK_TIMEOUT, retries: 1) do loop_until(timeout: LOOP_TIMEOUT, limit: LOOP_LIMIT) do recover_in_batch end end end |