Skip to content

Infinite loop on (possible) ttr return of a buried task to the dropped queue #96

@DifferentialOrange

Description

@DifferentialOrange

Tarantool Enterprise 1.10.3-89-g412e943, queue 1.0.3

Bug can be reproduced by the following script

local queue = require('queue')
local fiber = require('fiber')

box.cfg{}
queue.create_tube('task_line', 'fifottl', {ttr = 10, if_not_exist = true})
queue.tube.task_line:put({task = "task"})
queue.tube.task_line:put({task1 = "task"})
local taken_task = queue.tube.task_line:take(0)

local tube_id = box.space._queue:select{tube_name = 'task_line'}[1].tube_id
local tasks_taken = box.space._queue_taken:select{tube_id = tube_id}

for _, task in ipairs(tasks_taken) do
    queue.tube.task_line:bury(task.task_id)
end
queue.tube.task_line:drop()
fiber.sleep(20)

image

After ~ttr seconds of sleep tarantool instance start to use ~100% of CPU, became unavailable for connection by net.box and can't be stopped by Ctrl-C.

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions