Skip to content

Random crashes if you commit active transaction within cursor block #48

@pbrumm

Description

@pbrumm

I am putting this in as a warning for now. I will try to get a scenario that reproduces

row = nil
db.cursor do |cursor|
  begin
    while row = cursor.next
       # make some changes
    end
  ensure
    env.active_txn.try(:commit)
  end
end

something about how the cursor is released within the cursor will cause a random crash

row = nil

begin
  db.cursor do |cursor|
    while row = cursor.next
       # make some changes
    end
  end
ensure
  env.active_txn.try(:commit)
end

this code above doesn't crash

it appears there are protections in to handle this situation and it does work 90% of the time. Our main way of reproducing was to run a large test suite that is hitting a lot of lmdb data loading.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions