Made scanner abort faster when it has to clean a lot of stuff

This commit is contained in:
emeric
2023-11-14 13:47:08 +01:00
parent 9cfc47fc82
commit b4e515f825
7 changed files with 107 additions and 99 deletions
@@ -26,30 +26,32 @@
namespace Scanner
{
void
ScanStepCheckDuplicatedDbFiles::process(ScanContext& context)
{
using namespace Database;
void ScanStepCheckDuplicatedDbFiles::process(ScanContext& context)
{
using namespace Database;
if (_abortScan)
return;
if (_abortScan)
return;
Session& session {_db.getTLSSession()};
auto transaction {session.createSharedTransaction()};
Session& session{ _db.getTLSSession() };
auto transaction{ session.createSharedTransaction() };
const RangeResults<TrackId> tracks = Track::findIdsTrackMBIDDuplicates(session);
for (const TrackId trackId : tracks.results)
{
const Track::pointer track {Track::find(session, trackId)};
if (auto trackMBID {track->getTrackMBID()})
{
LMS_LOG(DBUPDATER, INFO) << "Found duplicated track MBID [" << trackMBID->getAsString() << "], file: " << track->getPath().string() << " - " << track->getName();
context.stats.duplicates.emplace_back(ScanDuplicate {track->getId(), DuplicateReason::SameTrackMBID});
context.currentStepStats.processedElems++;
_progressCallback(context.currentStepStats);
}
}
const RangeResults<TrackId> tracks = Track::findIdsTrackMBIDDuplicates(session);
for (const TrackId trackId : tracks.results)
{
if (_abortScan)
break;
LMS_LOG(DBUPDATER, DEBUG) << "Found " << context.currentStepStats.processedElems << " duplicated audio files";
}
const Track::pointer track{ Track::find(session, trackId) };
if (auto trackMBID{ track->getTrackMBID() })
{
LMS_LOG(DBUPDATER, INFO) << "Found duplicated track MBID [" << trackMBID->getAsString() << "], file: " << track->getPath().string() << " - " << track->getName();
context.stats.duplicates.emplace_back(ScanDuplicate{ track->getId(), DuplicateReason::SameTrackMBID });
context.currentStepStats.processedElems++;
_progressCallback(context.currentStepStats);
}
}
LMS_LOG(DBUPDATER, DEBUG) << "Found " << context.currentStepStats.processedElems << " duplicated audio files";
}
}