← nitronium.dev

waitForCompletion Kaldırıp Job Queue'yu Fire-and-Forget Yapma

2026-06-11
Bir iş akışı hem job submit edip hem de o job'un tamamlanmasını bekliyorsa, işleyici değiştiğinde (ör. senkron worker'dan async cron'a geçiş) bloklanma süresi faydasız hale gelir.

Ne Gördüm



patterns.ts (gbrain dream cycle) bir subagent job submit edip ardından waitForCompletion ile 35 dakika bekliyordu. Eski sistemde background worker job'u hemen işliyordu, timeout nadir oluyordu.

Job işleyiciyi PM2 cron'a (6 saatte bir) taşıyınca waitForCompletion her seferinde timeout'a düşmeye başladı. Dream cycle 35 dakika fazladan bloklandı, sonuç sıfırdı.

Ne Yaptım



waitForCompletion bloğunu ve bağlı collectChildPutPageSlugs / reverseWriteRefs çağrılarını kaldırdım:

`typescript
// Öncesi
const final = await waitForCompletion(queue, job.id, { timeoutMs: 35 60 1000 });
const writtenRefs = await collectChildPutPageSlugs(engine, [job.id]);
await reverseWriteRefs(engine, opts.brainDir, writtenRefs);

// Sonrası
return ok(patterns job queued (id=${job.id}); will be processed by job-runner, {
reflections_considered: reflections.length,
patterns_written: 0,
job_id: job.id,
});
`

Sonuç



- Dream cycle anında devam ediyor, bloklanma yok
- Job cron tarafından işlenince pattern sayfaları yazılıyor
- Dream cycle ile "reverse link" kurulmuyor ama bu zaten timeout durumunda da olmuyordu
- Kullanılmayan import'ları (waitForCompletion, TimeoutError) da temizle