Reduced exclusive lock durations
This commit is contained in:
@@ -35,7 +35,7 @@ namespace Scanner
|
||||
return;
|
||||
|
||||
Session& session {_db.getTLSSession()};
|
||||
auto transaction {session.createSharedTransaction()};
|
||||
auto transaction {session.createReadTransaction()};
|
||||
|
||||
const RangeResults<TrackId> tracks = Track::findIdsTrackMBIDDuplicates(session);
|
||||
for (const TrackId trackId : tracks.results)
|
||||
|
||||
@@ -36,7 +36,7 @@ namespace Scanner
|
||||
Session& dbSession{ _db.getTLSSession() };
|
||||
|
||||
const std::size_t clusterCount{ [&] {
|
||||
auto transaction{ dbSession.createSharedTransaction() };
|
||||
auto transaction{ dbSession.createReadTransaction() };
|
||||
return Cluster::getCount(dbSession);
|
||||
}() };
|
||||
|
||||
@@ -50,7 +50,7 @@ namespace Scanner
|
||||
params.setRange(range);
|
||||
|
||||
{
|
||||
auto transaction{ dbSession.createSharedTransaction() };
|
||||
auto transaction{ dbSession.createReadTransaction() };
|
||||
return std::move(Cluster::findIds(dbSession, params).results);
|
||||
}
|
||||
}() };
|
||||
@@ -61,14 +61,14 @@ namespace Scanner
|
||||
std::size_t releaseCount;
|
||||
|
||||
{
|
||||
auto transaction{ dbSession.createSharedTransaction() };
|
||||
auto transaction{ dbSession.createReadTransaction() };
|
||||
|
||||
trackCount = Cluster::computeTrackCount(dbSession, clusterId);
|
||||
releaseCount = Cluster::computeReleaseCount(dbSession, clusterId);
|
||||
}
|
||||
|
||||
{
|
||||
auto transaction{ dbSession.createUniqueTransaction() };
|
||||
auto transaction{ dbSession.createWriteTransaction() };
|
||||
|
||||
auto cluster{ Cluster::find(dbSession, clusterId) };
|
||||
cluster.modify()->setTrackCount(trackCount);
|
||||
|
||||
@@ -52,7 +52,7 @@ namespace Scanner
|
||||
std::size_t trackCount{};
|
||||
|
||||
{
|
||||
auto transaction{ session.createSharedTransaction() };
|
||||
auto transaction{ session.createReadTransaction() };
|
||||
trackCount = Track::getCount(session);
|
||||
}
|
||||
LMS_LOG(DBUPDATER, DEBUG) << trackCount << " tracks to be checked...";
|
||||
@@ -68,7 +68,7 @@ namespace Scanner
|
||||
tracksToRemove.clear();
|
||||
|
||||
{
|
||||
auto transaction{ session.createSharedTransaction() };
|
||||
auto transaction{ session.createReadTransaction() };
|
||||
trackPaths = Track::findPaths(session, Range{ i, batchSize });
|
||||
}
|
||||
|
||||
@@ -85,7 +85,7 @@ namespace Scanner
|
||||
|
||||
if (!tracksToRemove.empty())
|
||||
{
|
||||
auto transaction{ session.createSharedTransaction() };
|
||||
auto transaction{ session.createWriteTransaction() };
|
||||
|
||||
for (const TrackId trackId : tracksToRemove)
|
||||
{
|
||||
@@ -113,7 +113,7 @@ namespace Scanner
|
||||
|
||||
LMS_LOG(DBUPDATER, DEBUG) << "Checking orphan clusters...";
|
||||
Session& session{ _db.getTLSSession() };
|
||||
auto transaction{ session.createUniqueTransaction() };
|
||||
auto transaction{ session.createWriteTransaction() };
|
||||
|
||||
// Now process orphan Cluster (no track)
|
||||
auto clusterIds{ Cluster::findOrphans(session) };
|
||||
@@ -132,7 +132,7 @@ namespace Scanner
|
||||
LMS_LOG(DBUPDATER, DEBUG) << "Checking orphan artists...";
|
||||
|
||||
Session& session{ _db.getTLSSession() };
|
||||
auto transaction{ session.createUniqueTransaction() };
|
||||
auto transaction{ session.createWriteTransaction() };
|
||||
|
||||
auto artistIds{ Artist::findOrphanIds(session) };
|
||||
for (const ArtistId artistId : artistIds.results)
|
||||
@@ -151,7 +151,7 @@ namespace Scanner
|
||||
|
||||
// TODO, by batch
|
||||
Session& session{ _db.getTLSSession() };
|
||||
auto transaction{ session.createUniqueTransaction() };
|
||||
auto transaction{ session.createWriteTransaction() };
|
||||
|
||||
auto releases{ Release::findOrphanIds(session) };
|
||||
for (const ReleaseId releaseId : releases.results)
|
||||
|
||||
@@ -337,7 +337,7 @@ namespace Scanner
|
||||
{
|
||||
// Skip file if last write is the same
|
||||
Database::Session& dbSession{ _db.getTLSSession() };
|
||||
auto transaction{ _db.getTLSSession().createSharedTransaction() };
|
||||
auto transaction{ _db.getTLSSession().createReadTransaction() };
|
||||
|
||||
const Track::pointer track{ Track::findByPath(dbSession, file) };
|
||||
|
||||
@@ -359,7 +359,7 @@ namespace Scanner
|
||||
stats.scans++;
|
||||
|
||||
Database::Session& dbSession{ _db.getTLSSession() };
|
||||
auto uniqueTransaction{ dbSession.createUniqueTransaction() };
|
||||
auto transaction{ dbSession.createWriteTransaction() };
|
||||
|
||||
Track::pointer track{ Track::findByPath(dbSession, file) };
|
||||
|
||||
|
||||
@@ -345,7 +345,7 @@ namespace Scanner
|
||||
|
||||
newSettings.skipDuplicateMBID = Service<IConfig>::get()->getBool("scanner-skip-duplicate-mbid", false);
|
||||
{
|
||||
auto transaction{ _dbSession.createSharedTransaction() };
|
||||
auto transaction{ _dbSession.createReadTransaction() };
|
||||
|
||||
const ScanSettings::pointer scanSettings{ ScanSettings::get(_dbSession) };
|
||||
|
||||
|
||||
Reference in New Issue
Block a user