[BUG] Current transaction contains open cursors. Close cursors before run Commit() in 5.0.19
dethknite opened this issue · 2 comments
dethknite 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.
alexbereznikov commented
JKamsker commented
Thank you for reporting this issue.
This issue has been resolved in the latest version of LiteDB.
Please update to the latest version of LiteDB to resolve this issue.
If the issue persists, please let us know.