From b5dc53670a259c3fdf2d3f20f52880f2218221d7 Mon Sep 17 00:00:00 2001 From: jacqueline Date: Thu, 8 Aug 2024 12:30:49 +1000 Subject: Derive the next track id from stored track data, instead of tracking it explicitly This saves about 1ms per new track right now, but more importantly means that minting a new track id is now a single atomic operation, rather than being its own database write. This is a useful property that will come in handy in a few commits time. --- src/tangara/database/database.hpp | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src/tangara/database/database.hpp') diff --git a/src/tangara/database/database.hpp b/src/tangara/database/database.hpp index c2e72568..2b385013 100644 --- a/src/tangara/database/database.hpp +++ b/src/tangara/database/database.hpp @@ -100,6 +100,7 @@ class Database { locale::ICollator& collator_; std::atomic is_updating_; + std::atomic next_track_id_; Database(leveldb::DB* db, leveldb::Cache* cache, @@ -107,6 +108,7 @@ class Database { ITagParser& tag_parser, locale::ICollator& collator); + auto dbCalculateNextTrackId() -> void; auto dbMintNewTrackId() -> TrackId; auto dbEntomb(TrackId track, uint64_t hash) -> void; -- cgit v1.2.3