Modify AMD database API 86/296686/4
authorHwankyu Jhun <h.jhun@samsung.com>
Thu, 3 Aug 2023 05:32:44 +0000 (14:32 +0900)
committerHwankyu Jhun <h.jhun@samsung.com>
Thu, 3 Aug 2023 07:51:00 +0000 (16:51 +0900)
To reduce memory usage, amd opens and closes the database repeatedly
in the loop.

Change-Id: I6db87bbbe38ad7b2b08e237d005bda4b8a4a3ed5
Signed-off-by: Hwankyu Jhun <h.jhun@samsung.com>
src/lib/api/amd_api_database.cc
src/lib/common/database.cc

index 594cf8f..fed8083 100644 (file)
@@ -174,7 +174,9 @@ class DBManager {
       amd_database_query_cb cb, void* user_data, bool sync) {
     if (sync) {
       try {
-        auto cursor = std::make_unique<Cursor>(db_->GetHandle(),
+        amd::Database db(PATH_AMD_DB);
+        db.Open(SQLITE_OPEN_CREATE | SQLITE_OPEN_READWRITE);
+        auto cursor = std::make_unique<Cursor>(db.GetHandle(),
             std::move(query), std::move(bind_text));
         return cb(cursor.get(), user_data);
       } catch (const amd::Exception& e) {
@@ -199,14 +201,7 @@ class DBManager {
     if (!disposed_)
       return;
 
-    try {
-      db_.reset(new amd::Database(PATH_AMD_DB));
-      db_->Open(SQLITE_OPEN_CREATE | SQLITE_OPEN_READWRITE);
-    } catch (const amd::Exception& e) {
-      _E("Open() is failed. error(%d)", e.GetErrorCode());
-      return;
-    }
-
+    db_.reset(new amd::Database(PATH_AMD_DB));
     thread_ = std::thread([&]{
           SetComm("DBWriter+");
           do {
@@ -214,6 +209,13 @@ class DBManager {
             if (job.IsDone())
               break;
 
+            try {
+              db_->Open(SQLITE_OPEN_CREATE | SQLITE_OPEN_READWRITE);
+            } catch (const amd::Exception& e) {
+              _E("Open() is failed. error(%d)", e.GetErrorCode());
+              continue;
+            }
+
             db_->BeginTransaction();
 
             auto cursor = std::make_unique<Cursor>(db_->GetHandle(),
@@ -223,6 +225,7 @@ class DBManager {
               db_->Rollback();
 
             db_->EndTransaction();
+            db_->Close();
           } while (true);
         });
 
index 7c7adfd..6cf40e6 100644 (file)
@@ -81,7 +81,7 @@ void Database::Open(int flags) {
 
 void Database::Close() {
   if (db_) {
-    sqlite3_close(db_);
+    sqlite3_close_v2(db_);
     db_ = nullptr;
   }
 }