Handle abnormally terminated installer process
[platform/core/appfw/pkgmgr-info.git] / src / server / worker_thread.cc
index ab9b637..129ff1d 100644 (file)
@@ -26,6 +26,7 @@
 #include "cynara_checker.hh"
 #include "request_handler_factory.hh"
 #include "server/database/db_handle_provider.hh"
+#include "server/database/remove_cache_db_handler.hh"
 #include "utils/logging.hh"
 
 #include "pkgmgrinfo_debug.h"
@@ -181,6 +182,14 @@ gboolean WorkerThread::TrimMemory(void* data) {
     h->timer_ = 0;
   }
 
+  auto crashed_writer_pids =
+      database::DBHandleProvider::CrashedWriteRequestPIDs();
+  if (!crashed_writer_pids.empty()) {
+    database::RemoveCacheDBHandler db(getuid(), std::move(crashed_writer_pids));
+    db.SetLocale(h->locale_.GetObject());
+    db.Execute();
+  }
+
   sqlite3_release_memory(-1);
   malloc_trim(0);
   return G_SOURCE_REMOVE;