-
Notifications
You must be signed in to change notification settings - Fork 55
Closed
Description
Если таск был просрочен (выполнение таска заняло больше, чем 'ttr' секунд), то повторный его 'take' и 'ack' приводит к ошибке "Task was not taken in the session".
ВАЖНО: если приведённые ниже команды запускать в одном скрипте через dofile, всё будет хорошо.
Команды, которые нужно выполнить в консоли, чтобы воспроизвести ошибку:
queue = require 'queue'
box.cfg{wal_mode='none'}
queue.create_tube('test_ttr', 'fifottl')
queue.tube.test_ttr:put('foobar', {ttr=1})
queue.tube.test_ttr:take(0)
-- Wait few seconds
queue.tube.test_ttr:take(0)
queue.tube.test_ttr:ack(0)
- error: Task was not taken in the session
Лог:
➜ tarantool
tarantool: version 1.6.4-472-g53b61a8
type 'help' for interactive help
tarantool> queue = require 'queue'
---
...
tarantool> box.cfg{wal_mode='none'}
2015-04-03 16:59:04.273 [31212] main/101/interactive C> version 1.6.4-472-g53b61a8
2015-04-03 16:59:04.274 [31212] main/101/interactive C> log level 5
2015-04-03 16:59:04.274 [31212] main/101/interactive I> mapping 1073741824 bytes for a shared arena...
2015-04-03 16:59:04.275 [31212] main/101/interactive I> initializing an empty data directory
2015-04-03 16:59:04.284 [31250] snap/101/dumper I> creating `./00000000000000000000.snap.inprogress'
2015-04-03 16:59:04.285 [31250] snap/101/dumper I> saving snapshot `./00000000000000000000.snap.inprogress'
2015-04-03 16:59:04.285 [31250] snap/101/dumper I> done
2015-04-03 16:59:04.286 [31212] main/101/interactive I> ready to accept requests
---
...
tarantool> queue.create_tube('test_ttr', 'fifottl')
2015-04-03 16:59:16.577 [31212] main/103/fifottl I> Started queue fifottl fiber
---
- raw:
fiber:
status: suspended
name: fifottl
id: 103
on_task_change: 'function: 0x09472e18'
space:
index:
0: &0
unique: true
parts:
- type: NUM
fieldno: 1
id: 0
space_id: 515
name: task_id
type: TREE
1: &1
unique: true
parts:
- type: STR
fieldno: 2
- type: NUM
fieldno: 6
- type: NUM
fieldno: 1
id: 1
space_id: 515
name: status
type: TREE
2: &2
unique: true
parts:
- type: STR
fieldno: 2
- type: NUM
fieldno: 3
id: 2
space_id: 515
name: watch
type: TREE
status: *1
task_id: *0
watch: *2
on_replace: 'function: 0x09471a08'
temporary: false
id: 515
engine: memtx
enabled: true
name: queue_fifottl_test_ttr
field_count: 0
opts: &3
ttr: 15768000000
ttl: 15768000000
pri: 0
type: fifottl
tube_id: 0
name: test_ttr
opts: *3
...
tarantool> queue.tube.test_ttr:put('foobar', {ttr=1})
---
- [0, 'r', 'foobar']
...
tarantool> queue.tube.test_ttr:take(0)
---
- [0, 't', 'foobar']
...
tarantool> print("Wait few seconds")
Wait few seconds
---
...
tarantool> queue.tube.test_ttr:take(0)
---
- [0, 't', 'foobar']
...
tarantool> queue.tube.test_ttr:ack(0)
---
- error: Task was not taken in the session
...
tarantool>
Metadata
Metadata
Assignees
Labels
No labels