Fixed regression on recommendation engine

This commit is contained in:
emeric
2020-08-31 14:15:10 +02:00
parent ea317b62ed
commit 8a84a078be
12 changed files with 74 additions and 24 deletions
+7
View File
@@ -43,6 +43,13 @@ Db::Db(const std::filesystem::path& dbPath)
_connectionPool = std::move(connectionPool);
}
Db::~Db()
{
LMS_LOG(DB, DEBUG) << "Optimizing db...";
executeSql("pragma optimize");
LMS_LOG(DB, DEBUG) << "Optimizing db DONE";
}
void
Db::executeSql(const std::string& sql)
{
@@ -32,6 +32,12 @@ class Db
public:
Db(const std::filesystem::path& dbPath);
~Db();
Db(const Db&) = delete;
Db(Db&&) = delete;
Db& operator=(const Db&) = delete;
Db& operator=(Db&&) = delete;
private:
friend class Session;
+13 -4
View File
@@ -38,6 +38,12 @@ createEngine(Database::Db& db)
Engine::Engine(Database::Db& db)
: _dbSession {db}
{
start();
}
Engine::~Engine()
{
stop();
}
void
@@ -45,9 +51,6 @@ Engine::start()
{
assert(!_running);
_running = true;
requestReloadInternal(false);
_ioService.start();
}
@@ -62,6 +65,12 @@ Engine::stop()
_ioService.stop();
}
void
Engine::requestLoad()
{
requestReloadInternal(false);
}
void
Engine::requestReload()
{
@@ -254,7 +263,7 @@ void
Engine::cancelPendingClassifiers()
{
std::unique_lock<std::shared_mutex> lock {_classifiersMutex};
for (IClassifier* classifier : _pendingClassifiers)
classifier->requestCancelInit();
}
+9 -2
View File
@@ -35,12 +35,19 @@ namespace Recommendation
{
public:
Engine(Database::Db& db);
~Engine();
Engine(const Engine&) = delete;
Engine(Engine&&) = delete;
Engine& operator=(const Engine&) = delete;
Engine& operator=(Engine&&) = delete;
private:
void start() override;
void stop() override;
void start();
void stop();
void requestLoad() override;
void requestReload() override;
Wt::Signal<>& reloaded() override { return _sigReloaded; }
@@ -40,8 +40,7 @@ namespace Recommendation
public:
virtual ~IEngine() = default;
virtual void start() = 0;
virtual void stop() = 0;
virtual void requestLoad() = 0;
virtual void requestReload() = 0;
virtual Wt::Signal<>& reloaded() = 0;
+2
View File
@@ -254,6 +254,8 @@ MediaScanner::MediaScanner(Database::Db& db)
_ioService.setThreadCount(1);
refreshScanSettings();
start();
}
MediaScanner::~MediaScanner()
+3 -2
View File
@@ -50,8 +50,6 @@ class MediaScanner : public IMediaScanner
MediaScanner& operator=(const MediaScanner&) = delete;
MediaScanner& operator=(MediaScanner&&) = delete;
void start() override;
void stop() override;
void requestReload() override;
void requestImmediateScan(bool force) override;
@@ -64,6 +62,9 @@ class MediaScanner : public IMediaScanner
private:
void start();
void stop();
// Job handling
void scheduleNextScan();
void scheduleScan(bool force, const Wt::WDateTime& dateTime = {});
@@ -38,14 +38,10 @@ class IMediaScanner
public:
virtual ~IMediaScanner() = default;
virtual void start() = 0;
virtual void stop() = 0;
// Async requests
virtual void requestReload() = 0;
virtual void requestImmediateScan(bool force) = 0;
enum class State
{
NotScheduled,