diff --git a/CHANGELOG.md b/CHANGELOG.md index a52c72c4f4..ffe0e3fc09 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 44594636ad..c7a054524c 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 02bc6e1752..bb7fb5b59f 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 3fed2a81d4..4123858b44 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 c8b99b358a..0fc3f3c4ba 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 a3259e5645..835ea42492 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;