Class: Environments::AutoStopService
- Inherits:
-
Object
- Object
- Environments::AutoStopService
- Includes:
- Gitlab::ExclusiveLeaseHelpers, Gitlab::LoopHelpers
- Defined in:
- app/services/environments/auto_stop_service.rb
Constant Summary collapse
- BATCH_SIZE =
100- LOOP_TIMEOUT =
45.minutes
- LOOP_LIMIT =
1000- EXCLUSIVE_LOCK_KEY =
'environments:auto_stop:lock'- LOCK_TIMEOUT =
50.minutes
Constants included from Gitlab::ExclusiveLeaseHelpers
Gitlab::ExclusiveLeaseHelpers::FailedToObtainLockError
Instance Method Summary collapse
-
#execute ⇒ Object
Stop expired environments on GitLab instance.
Methods included from Gitlab::LoopHelpers
Methods included from Gitlab::ExclusiveLeaseHelpers
Instance Method Details
#execute ⇒ Object
Stop expired environments on 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_stop_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 stop_in_batch end end end |