[BUG] Current transaction contains open cursors. Close cursors before run Commit() in 5.0.19
dethknite opened this issue · comments
California (cbaumgart) commented
Version: LiteDB v5.0.19
Describe the bug
When processing through records to delete oldest, the following error is thrown:
Current transaction contains open cursors. Close cursors before run Commit()
Code to Reproduce
using (var db = new LiteDatabase(connSharedReadWrite))
{
// .... set min/max records and step
long min=0, max=10000000;
int step = 10000;
long recordsToDelete = 250000;
long recordsDeleted = 0;
// Process
while (min < max)
{
//Process each step..
foreach (DbObject item in col.Find(Query.All("ObjectDateTime", Query.Ascending)).Skip(0).Take(step).ToArray())
{
//Delete Record
col.Delete(BsonMapper.Global.Serialize(item)["_id"]);
recordsDeleted+=1;
if (recordsDeleted >= recordsToDelete)
break;
}
if (recordsDeleted >= recordsToDelete)
break;
//Update position
min += step;
}
}
Expected behavior
In v5.018 and lower, this functions as expected and deletes records.
Bereznikov Alexey commented