Public bug reported:

Lua iterators, when traversing entire index range, may in some cases
return 0 records. The error is sporadic.

A test case:
--tarantool.cfg:
slab_alloc_arena = 0.1
pid_file = "box.pid"

logger = "tee tarantool.log"
work_dir = "."

primary_port = 33013
secondary_port = 33014
admin_port = 33015
replication_port = 33016

rows_per_wal = 50000

space[19] = {
  enabled = 1
  index[0] = {
    type = "HASH"
    unique = 1
    key_field[0] = {fieldno = 0, type = "STR"}
  }
  index[1] = {
    type = "TREE"
    unique = 0
    key_field[0] = {fieldno = 1, type = "NUM"}
  }
}

Test:
lua for i=1, 10000 do box.space[19]:truncate(); for j=1, 30 do box.insert( 19, 
j, os.time(), 1 ) end; index = box.space[19].index[1]; count = 0; for k,v in 
index.next, index, nil do count = count+1; end; if count ~= 30 then print("bug 
at iteration ", i, ", count is ", count); end; end

This may print "bug at iteration 0, count is 0".

** Affects: tarantool
     Importance: Critical
     Assignee: Kostja Osipov (kostja)
         Status: In Progress

** Changed in: tarantool
    Milestone: None => 1.4.8

** Changed in: tarantool
     Assignee: (unassigned) => Kostja Osipov (kostja)

** Changed in: tarantool
   Importance: Undecided => Critical

** Changed in: tarantool
       Status: New => In Progress

-- 
You received this bug notification because you are a member of Tarantool
Development Team, which is subscribed to tarantool.
https://bugs.launchpad.net/bugs/1042738

Title:
  Tree iterator over entire range spurious error

Status in Tarantool - an efficient in-memory data store:
  In Progress

Bug description:
  Lua iterators, when traversing entire index range, may in some cases
  return 0 records. The error is sporadic.

  A test case:
  --tarantool.cfg:
  slab_alloc_arena = 0.1
  pid_file = "box.pid"

  logger = "tee tarantool.log"
  work_dir = "."

  primary_port = 33013
  secondary_port = 33014
  admin_port = 33015
  replication_port = 33016

  rows_per_wal = 50000

  space[19] = {
    enabled = 1
    index[0] = {
      type = "HASH"
      unique = 1
      key_field[0] = {fieldno = 0, type = "STR"}
    }
    index[1] = {
      type = "TREE"
      unique = 0
      key_field[0] = {fieldno = 1, type = "NUM"}
    }
  }

  Test:
  lua for i=1, 10000 do box.space[19]:truncate(); for j=1, 30 do box.insert( 
19, j, os.time(), 1 ) end; index = box.space[19].index[1]; count = 0; for k,v 
in index.next, index, nil do count = count+1; end; if count ~= 30 then 
print("bug at iteration ", i, ", count is ", count); end; end

  This may print "bug at iteration 0, count is 0".

To manage notifications about this bug go to:
https://bugs.launchpad.net/tarantool/+bug/1042738/+subscriptions

_______________________________________________
Mailing list: https://launchpad.net/~tarantool-developers
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~tarantool-developers
More help   : https://help.launchpad.net/ListHelp

Reply via email to