4 ms·
IIUC - Does this mean if I am making a network call, or performing some expensive task from within the job, the transaction against the database is held open fo
by shayonj 1y ago
IIUC - Does this mean if I am making a network call, or performing some expensive task from within the job, the transaction against the database is held open for the duration of the job?
- bgentry 1y agoDefinitely not! Jobs in River are enqueued and fetched by worker clients transactionally, but the jobs themselves execute outside a transaction. I’m guessing you’re aware of the risks of holding open long transactions in Postgres, and we definitely didn’t want to limit users to short-lived background jobs. There is a super handy transactional completion API that lets you put some or all of a job in a transaction if you want to. Works great for making other database side effects atomic with the job’s completion. https://riverqueue.com/docs/transactional-job-completion https://riverqueue.com/docs/transactional-job-completion
- shayonj 1y agovery nice! cool project