[Bug]: await_lock masks exceptions as FileLockError; minion job_queue requeues forever ("Failed to acquire job_queue lock" log flood)
I maintainer di solito rispondono entro 3 giorni
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 45/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- python
- Ambito
- devops, distributed-systems
Direzione di ricerca
Inizia con salt.utils.files.await_lock e segui la relativa gestione delle eccezioni attorno al corpo di with, quindi esamina _handle_decoded_payload e _process_process_queue_async_impl. Verifica che le eccezioni del corpo rimangano distinguibili dai fallimenti nell’acquisizione del lock, che il logging di FileLockError includa l’eccezione e che i job accodati che falliscono ripetutamente smettano infine di essere rimessi in coda e restituiscano un errore al master.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
What happened?
On 3007.13 two minions got stuck in an infinite requeue loop, logging ~180 lines/s of
[salt.minion :1960][WARNING ] Failed to acquire job_queue lock for jid 2026..., queuing anyway.
for a week, until /var/log/salt/minion reached 9 GB and filled /var. 59 stale jids cycled every 0.3 s. No job_queue.lock file existed, fds were 45/8192, plenty of RAM. The loop started 9 s after a Timeout encountered while sending ... _return request.
Root cause, two defects that combine:
-
salt.utils.files.await_lockhides the real exception. Theyieldis inside the outertry, whoseexcept Exceptionre-raises everything asFileLockError("Error encountered obtaining file lock ..."). Any exception raised by theasync with await_lock(...)body is reported as a lock failure and its traceback is lost. In 3007.13 the body included_invoke_execution()and the proc-file write, so a job-start failure became "Failed to acquire job_queue lock". 3007.14 moved_invoke_executionout of the lock, butawait_lockitself is unchanged in 3008.x, and the minion'sexcept FileLockErrorhandler still logs without the exception. -
The disk job queue has no exit.
_process_process_queue_async_implresubmits everyqueued_*.pfile every 0.3 s (0.2 s in 3008.x) with no retry counter, max age or backoff. A job that fails deterministically at start is requeued forever.
Workaround used: stop minion, move cachedir/job_queue aside, truncate log, start.
Expected
await_lockshould not convert exceptions from thewithbody intoFileLockError(re-raise them unchanged, keep the wrapping for the lock-acquire path only)._handle_decoded_payload'sexcept FileLockErrorshould log the exception (exc_info=True).- Queued jobs need a retry limit and/or max age; after that the job is dropped with an error and a return to the master.
Type of salt install
onedir
Major version
3007 (3007.13); defect 1 and 2 still present in 3008.2 / master
What supported OS are you seeing the problem on?
Ubuntu
salt --versions-report output
Salt Version:
Salt: 3007.13
Python: /opt/saltstack/salt/bin/python3.10 (onedir)
OS: Ubuntu, cPanel hosts
- Lingua principale
- Python
- Stelle
- 15.8k
- Fork
- 5.6k
- Merge medio
- 5g 9h
- PR unite (30g)
- 99
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di saltstack/salt
-
[Bug]: Scheduled returns scan all accepted minion keys causing extreme loadForse già presa Una pull request collegata a questa issue è aperta o già unita. Apertabug needs-triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
saltstack/salt#70789 · 1 commento ·
I maintainer di solito rispondono entro 3 giorni
-
[Bug]: pip.installed with upgrade=True upgrades a package but returns an empty changes dictionaryForse già presa @ITJamie l’ha presa 1 giorno fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 3 giorni
-
bug needs-triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 3 giorni
-
[Bug]: Minion with file_client: local crashes on connect: 'AsyncPillar' object has no attribute 'aclose'Forse già presa @shawnrruss l’ha presa 9 giorni fa. Apertabug needs-triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 3 giorni
-
[Bug]: mine.update clear=True raises UnboundLocalError on the master and stores nothingForse già presa @cestercian l’ha presa 11 giorni fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
saltstack/salt#70622 · 1 commento ·
I maintainer di solito rispondono entro 3 giorni
Tutte le issue di saltstack/salt
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
btclib-org/btclib-wallet#872 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 87/100
btclib-org/btclib#3093 ·
I maintainer di solito rispondono entro 1 giorno
-
good first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
patrickballard/wheelgap#269 ·
-
priority: low python
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
LearningCircuit/local-deep-research#8635 ·
I maintainer di solito rispondono entro 1 giorno
-
README says the land/sea mask must match the XS grid; the demo mask does not, and Step 4 worksApertadocumentation
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
buckai-observatory/Automated-Cloud-Removal-and-Seamless-Satellite-Image-Mosaicking-Pipeline#52 ·
I maintainer di solito rispondono entro 1 giorno