[Bug] Worker intermittently stops polling after synchronous activity completion
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 35/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Ferma
- Stack tecnologico
- python
- Ambito
- distributed-systems
Direzione di ricerca
Inizia riproducendo il Worker configurato con un ThreadPoolExecutor e un'attività sincrona di lunga durata, quindi traccia il polling subito dopo che l'RPC CompleteActivity è riuscita. È completato quando il Worker continua a inviare richieste di polling dopo il completamento senza attendere 5–15 minuti per riconnettersi.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Summary
Worker intermittently stops polling after completing long-running synchronous activities. The gRPC connection appears to drop after activity completion, but the worker process remains
alive. Auto-reconnection eventually works (5-15 minutes later), but causes delays in activity processing.
Environment
- temporalio version: 1.18.1
- grpcio version: 1.75.1
- Python version: 3.11
- Temporal Server: Running in Docker (localhost:7233)
- OS: Ubuntu Linux
Worker Configuration
with concurrent.futures.ThreadPoolExecutor(max_workers=60) as executor:
worker = Worker(
client,
task_queue="core-py",
max_concurrent_activities=60,
activities=[...],
workflows=[],
activity_executor=executor,
graceful_shutdown_timeout=timedelta(seconds=300),
)
await worker.run()
Activity Characteristics
- Type: Synchronous (runs on ThreadPoolExecutor)
- Duration: 30 minutes to 3 hours
- Timeout: 36,000 seconds (10 hours)
- Heartbeat: Disabled (0s)
Observed Behavior
┌──────┬───────────────────────────────────────────────────┐
│ Step │ What Happens │
├──────┼───────────────────────────────────────────────────┤
│ 1 │ Worker polls, receives activity │
├──────┼───────────────────────────────────────────────────┤
│ 2 │ Activity executes (30 min - 3 hrs) │
├──────┼───────────────────────────────────────────────────┤
│ 3 │ Activity completes, CompleteActivity RPC succeeds │
├──────┼───────────────────────────────────────────────────┤
│ 4 │ Worker stops polling - no new poll requests │
├──────┼───────────────────────────────────────────────────┤
│ 5 │ Server logs "task queue closed" after 5 min │
├──────┼───────────────────────────────────────────────────┤
│ 6 │ Worker auto-reconnects after 5-15 min │
└──────┴───────────────────────────────────────────────────┘
Evidence
Queue closes exactly 5 min after activity completion:
┌────────────────────┬──────────────┐
│ Activity Completed │ Queue Closed │
├────────────────────┼──────────────┤
│ 08:02:39 │ 08:07:39 │
├────────────────────┼──────────────┤
│ 08:57:38 │ 09:02:38 │
├────────────────────┼──────────────┤
│ 09:46:46 │ 09:51:46 │
└────────────────────┴──────────────┘
During stuck period:
- Process alive, 45 threads active
- DB connections work
- No TCP connection to port 7233
Key Observations
1. Intermittent - not every completion triggers it
2. No duration correlation - 27 min to 168 min activities affected
3. Auto-recovery works - just slow (5-15 min)
4. Completion succeeds - only polling stops afterward
Suspected Cause
Race condition in SDK's handling of synchronous activity completion. After ThreadPoolExecutor returns result and CompleteActivity RPC succeeds, polling doesn't resume properly.
- Lingua principale
- Python
- Stelle
- 1.2k
- Fork
- 241
- Merge medio
- 3g 2h
- PR unite (30g)
- 49
Guida per i contributori
Apri 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 temporalio/sdk-python
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
temporalio/sdk-python#1517 · 10 commenti ·
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
temporalio/sdk-python#496 ·
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
temporalio/sdk-python#1894 ·
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
temporalio/sdk-python#1890 ·
-
[Bug] Local activity resolutions regrouped on replay since 1.32.0, delivering the wrong payload Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 52/100
temporalio/sdk-python#1881 · 1 commento ·
Tutte le issue di temporalio/sdk-python
Issue simili
-
area: harness bug status: needs-triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
Human-Agent-Society/reef#625 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 80/100
learningequality/kolibri#15351 · 2 commenti ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
-
Name consistency Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
eellak/triplestore#65 · 1 commento ·