diff --git a/CHANGELOG.md b/CHANGELOG.md index a52c72c4f4ba2edb725d6aec12a181e5521de7a0..ffe0e3fc095307c7471ea309cc3f50610123b770 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ Please mark all change in change log and use the ticket from JIRA. # Milvus 0.5.2 (TODO) ## Bug +- \#194 - Search faild: message="Table file doesn't exist" ## Feature diff --git a/core/src/db/meta/MySQLMetaImpl.cpp b/core/src/db/meta/MySQLMetaImpl.cpp index 44594636ad502240d089fed7fe62bb4f3a315a9c..c7a054524c241456a05e83e5481e75c540a4e773 100644 --- a/core/src/db/meta/MySQLMetaImpl.cpp +++ b/core/src/db/meta/MySQLMetaImpl.cpp @@ -173,6 +173,7 @@ MySQLMetaImpl::~MySQLMetaImpl() { Status MySQLMetaImpl::NextTableId(std::string& table_id) { + std::lock_guard lock(genid_mutex_); // avoid duplicated id std::stringstream ss; SimpleIDGenerator g; ss << g.GetNextIDNumber(); @@ -182,6 +183,7 @@ MySQLMetaImpl::NextTableId(std::string& table_id) { Status MySQLMetaImpl::NextFileId(std::string& file_id) { + std::lock_guard lock(genid_mutex_); // avoid duplicated id std::stringstream ss; SimpleIDGenerator g; ss << g.GetNextIDNumber(); diff --git a/core/src/db/meta/MySQLMetaImpl.h b/core/src/db/meta/MySQLMetaImpl.h index 02bc6e17520776f232d6ad2b3b1b43295427e03e..bb7fb5b59f45642e4b1e5180b7fe7d028cb1f891 100644 --- a/core/src/db/meta/MySQLMetaImpl.h +++ b/core/src/db/meta/MySQLMetaImpl.h @@ -136,6 +136,7 @@ class MySQLMetaImpl : public Meta { std::shared_ptr mysql_connection_pool_; bool safe_grab_ = false; + std::mutex genid_mutex_; // std::mutex connectionMutex_; }; // DBMetaImpl diff --git a/core/src/db/meta/SqliteMetaImpl.cpp b/core/src/db/meta/SqliteMetaImpl.cpp index 3fed2a81d4d47ead873a0f4451baee7270f0750c..4123858b4409b3df71f66eab373db64fe0a23be5 100644 --- a/core/src/db/meta/SqliteMetaImpl.cpp +++ b/core/src/db/meta/SqliteMetaImpl.cpp @@ -97,6 +97,7 @@ SqliteMetaImpl::~SqliteMetaImpl() { Status SqliteMetaImpl::NextTableId(std::string &table_id) { + std::lock_guard lock(genid_mutex_); // avoid duplicated id std::stringstream ss; SimpleIDGenerator g; ss << g.GetNextIDNumber(); @@ -106,6 +107,7 @@ SqliteMetaImpl::NextTableId(std::string &table_id) { Status SqliteMetaImpl::NextFileId(std::string &file_id) { + std::lock_guard lock(genid_mutex_); // avoid duplicated id std::stringstream ss; SimpleIDGenerator g; ss << g.GetNextIDNumber(); diff --git a/core/src/db/meta/SqliteMetaImpl.h b/core/src/db/meta/SqliteMetaImpl.h index c8b99b358ad56235cca6a1fc3d12d0cae55d810e..0fc3f3c4baad27332a6f2454d5cb641c98032539 100644 --- a/core/src/db/meta/SqliteMetaImpl.h +++ b/core/src/db/meta/SqliteMetaImpl.h @@ -132,6 +132,7 @@ class SqliteMetaImpl : public Meta { private: const DBMetaOptions options_; std::mutex meta_mutex_; + std::mutex genid_mutex_; }; // DBMetaImpl } // namespace meta diff --git a/core/unittest/db/test_meta_mysql.cpp b/core/unittest/db/test_meta_mysql.cpp index a3259e56451ec7d97981ed9169159bab09b80a25..835ea42492d0598603ba69a830ffc422dced0295 100644 --- a/core/unittest/db/test_meta_mysql.cpp +++ b/core/unittest/db/test_meta_mysql.cpp @@ -185,7 +185,7 @@ TEST_F(MySqlMetaTest, ARCHIVE_TEST_DISK) { options.archive_conf_ = milvus::engine::ArchiveConf("delete", "disk:11"); int mode = milvus::engine::DBOptions::MODE::SINGLE; - auto impl = milvus::engine::meta::MySQLMetaImpl(options, mode); + milvus::engine::meta::MySQLMetaImpl impl(options, mode); auto table_id = "meta_test_group"; milvus::engine::meta::TableSchema table;