Releases: tarantool/queue
1.2.0
Overview
This release introduce:
- Master-replica switching support.
- Additional grants for queue/tube functions.
New features
- Master-replica switching support.
Added the ability to use a queue in the master replica scheme.
More information is available:
https://github.com/tarantool/queue#queue-state-diagram
https://github.com/tarantool/queue#queue-and-replication - Added granting privilege to
statistics
,put
andtruncate
.
Bugfixes
- Fix work with "ttl" of buried task.
Previously, if a task was "buried" after it was "taken" (and the task has a
"ttr"), then the time when the "release" should occur (the "ttr" timer) will
be interpreted as the end of the "ttl" timer and the task will be deleted.
1.1.0
Overview
This release introduce:
- "Shared session" machinery. Previously, a connection to a server
was synonym of the queue session. But now multiple connections can work with
tasks in one logical session. - Possibility to work with tasks after reconnect. The queue module now provides
the ability to set thettr
setting for sessions by using
queue.cfg({ ttr = ttr_in_sec})
, which characterizes how long the logical
session will exist after all active connections are closed. So, it is possible
totake()
a task, reconnect to the server, identify to the previous session
(usingqueue.identify()
) and after toack()
the task. - Fix custom driver registration after reboot.
New features
- "Shared sessions" was added to the queue. Previously, a connection to server
was synonym of the queue session. Now the session has a unique UUID (returned
by the "queue.identify()" method), and one session can have many connections.
To connect to an existing session, call "queue.identify(uuid)" with the
previously obtained UUID. - Possibility to work with tasks after reconnect. The queue module now provides
the ability to set thettr
setting for sessions by
queue.cfg({ ttr = ttr_in_sec})
, which characterizes how long the logical
session will exist after all active connections are closed.
Bugfixes
- Fix custom driver registration after reboot. Previously, if a custom driver is
registered after calling box.cfg() it causes a problem when the instance will
be restarted.
1.0.8
Overview
This release add the ability to start an instance with a loaded queue module in
read-only mode.
New features
- Add the ability to start an instance with a loaded queue module in read-only
mode. In this case, a start of the module will be delayed until the instance
will be configured with read_only = false. Previously, when trying to
initialize the queue module on an instance configured in ro mode, an error
occurred: "ER_READONLY: Can't modify data because this instance is in
read-only mode." See https://github.com/tarantool/queue#initialization for
more details.
Bugfixes
No.
1.0.7
Overview
This release fixes critical problem in queue that may cause an error for some
drivers (*ttl core drivers) while tasks releases on start of the queue:
"attempt to index local 'opts' (a nil value)"
In addition, the release adds a check for missing methods in the driver
implementation. It's important when using external drivers.
We highly recommend to update to this version if you use *ttl core drivers or
external ones.
Breaking changes
A check for a driver API implementation was added. Now, the consumer will be
informed about the missing methods in the driver implementation (an error will
be thrown).
New features
No.
Bugfixes
- Fix the tasks releases on start for some drivers (utubettl, fifottl,
limfifottl). Before, an attempt to release "taken" tasks on start lead to an
error: "attempt to index local 'opts' (a nil value)" (#121).
Other
- Updated the requirements for the "delete" driver method. Now, the method
should change the state of a task to "done". Before, it was duplicated by
external code. - Added notification about missing methods in the driver implementation (#126).
1.0.6
Overview
This release fixes several critical problems in queue, which can cause task
being stuck in 'taken' state or even lead to the inconsistent state of runtime
queue data.
We highly recommend to update to this version.
Breaking changes
External drivers should be updated with the new tasks_by_state()
method.
Consider the example from the fifo
driver:
-- get iterator to tasks in a certain state
function method.tasks_by_state(self, task_state)
return self.space.index.status:pairs(task_state)
end
The example uses 'status' secondary index, which is built on top of 'status'
and 'task_id' fields.
This new method is necessary to correctly manage state of tasks: when tarantool
instance is restarted we should release all taken tasks (otherwise they would
stuck in the taken state forever). See #66 and #126 for more information.
New features
No.