Changelog
Source:NEWS.md
liteq 1.2.0
CRAN release: 2026-11-05
publish()now accepts multiple messages (note thattitleandmessagemust be of the same length) and publishes them in a single transaction (#25, @Enchufa2).Setting the
R_LITEQ_BUSY_TIMEOUTenvironment variable now works properly. Previously it was ignored and the timeout was set to ten seconds (#24, @Enchufa2).-
liteq now works better with many concurrent workers, and fails much less often with “database is locked” errors (#28, #29, @Enchufa2):
Checking for crashed workers does not wait for the busy timeout on each message that is being worked on. Previously, this kept the database locked for a long time, for the busy timeout times the number of active workers.
All write transactions now use
BEGIN IMMEDIATE. This avoids deadlocks between writers, and readers (e.g.list_messages()) are not blocked while another process is writing.All write operations, including
ensure_queue()andpublish(), now keep waiting for the database lock, likeconsume()andack()already did. Previously they failed if they did not get the lock within the busy timeout.
liteq 1.1.0
CRAN release: 2019-03-08
Work around a SQLITE bug that resets the database busy timeout after a successful query. Now we set the timeout after each database operation. The timeout can now also be set via the
R_LITEQ_BUSY_TIMEOUTenvironment variable, and it defaults to 10 seconds, instead of 1 second.consume()now has apoll_intervalargument to set how often to poll the queue for new jobs.New
is_empty()andmessage_count()functions (#18, @wlandau).Get rid of annoying warning about closing unused connections (#15, #20, @wlandau).