tarantool / queue

Create task queues, add and take jobs, monitor failed tasks
Other
237 stars 52 forks source link

queue.tube and box.space._queue are out of sync #50

Closed derElektrobesen closed 7 years ago

derElektrobesen commented 7 years ago

queue.tube contains 2 tubes (events_queue && notifications_queue), but box.space._queue:select returns only one.

/usr/local/share/lua/5.1/queue/abstract.lua:75: attempt to index local 'tube' (a nil value) (0x20)

First command in any connection is one of the following (single connection inspects single queue):

queue.create_tube('events_queue', 'fifottl', { if_not_exists = true })
queue.create_tube('notifications_queue', 'fifottl', { if_not_exists = true })

This needed to be sure tubes are always exists (server could create new tubes in runtime).

Tarantool snapshots, xlogs and logs are attached.

tarantool.tar.gz

derElektrobesen commented 7 years ago

Problem is resolved: simple race condition. 2 connections are tried to create 2 tubes with different names. max_id for both tubes is the same (first tube does not increment it).

Possibly it is required to create a critical section in create_tube()