Avoid big build action IDs by reusing older/lower ones

This commit is contained in:
Martchus 2022-04-15 19:20:01 +02:00
parent e084f355ca
commit eae8af6571
2 changed files with 5 additions and 2 deletions

2
3rdparty/lmdb-safe vendored

@ -1 +1 @@
Subproject commit 95ff695381c9662ec100697bebc6132bc317c005
Subproject commit 389d662f3b1f311bc5bf931c4ee4f83ca18fcc23

View File

@ -246,7 +246,7 @@ LibPkg::StorageID ServiceSetup::BuildSetup::allocateBuildActionID()
{
static const auto emptyBuildAction = BuildAction();
auto txn = m_storage->buildActions.getRWTransaction();
const auto id = txn.put(emptyBuildAction);
const auto id = txn.put(emptyBuildAction, txn.newID());
txn.commit();
return id;
}
@ -321,6 +321,9 @@ StorageID ServiceSetup::BuildSetup::storeBuildAction(const std::shared_ptr<Build
}
// update persistent storage
auto txn = m_storage->buildActions.getRWTransaction();
if (!buildAction->id) {
buildAction->id = txn.newID();
}
const auto id = txn.put(*buildAction, static_cast<LibPkg::StorageID>(buildAction->id)); // buildAction->id expected to be a valid StorageID or 0
txn.commit();
return id;