Loading CHANGELOG.md +1 −0 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ Please mark all change in change log and use the ticket from JIRA. - \#533 - NSG build failed with MetricType Inner Product - \#543 - client raise exception in shards when search results is empty - \#545 - Avoid dead circle of build index thread when error occurs - \#561 - Milvus server should report exception/error message or terminate on mysql metadata backend error ## Feature - \#12 - Pure CPU version for Milvus Loading core/src/db/meta/MySQLMetaImpl.cpp +35 −30 Original line number Diff line number Diff line Loading @@ -290,45 +290,50 @@ MySQLMetaImpl::Initialize() { // step 4: validate to avoid open old version schema ValidateMetaSchema(); // step 5: create meta tables try { // step 5: clean shadow files if (mode_ != DBOptions::MODE::CLUSTER_READONLY) { CleanUpShadowFiles(); } { // step 6: try connect mysql server mysqlpp::ScopedConnection connectionPtr(*mysql_connection_pool_, safe_grab_); if (connectionPtr == nullptr) { return Status(DB_ERROR, "Failed to connect to meta server(mysql)"); std::string msg = "Failed to connect MySQL meta server: " + uri; ENGINE_LOG_ERROR << msg; throw Exception(DB_INVALID_META_URI, msg); } if (!connectionPtr->thread_aware()) { ENGINE_LOG_ERROR << "MySQL++ wasn't built with thread awareness! Can't run without it."; return Status(DB_ERROR, "MySQL++ wasn't built with thread awareness! Can't run without it."); std::string msg = "Failed to initialize MySQL meta backend: MySQL client component wasn't built with thread awareness"; ENGINE_LOG_ERROR << msg; throw Exception(DB_INVALID_META_URI, msg); } // step 7: create meta table Tables mysqlpp::Query InitializeQuery = connectionPtr->query(); InitializeQuery << "CREATE TABLE IF NOT EXISTS " << TABLES_SCHEMA.name() << " (" << TABLES_SCHEMA.ToString() + ");"; InitializeQuery << "CREATE TABLE IF NOT EXISTS " << TABLES_SCHEMA.name() << " (" << TABLES_SCHEMA.ToString() + ");"; ENGINE_LOG_DEBUG << "MySQLMetaImpl::Initialize: " << InitializeQuery.str(); if (!InitializeQuery.exec()) { return HandleException("Initialization Error", InitializeQuery.error()); std::string msg = "Failed to create meta table 'Tables' in MySQL"; ENGINE_LOG_ERROR << msg; throw Exception(DB_META_TRANSACTION_FAILED, msg); } // step 8: create meta table TableFiles InitializeQuery << "CREATE TABLE IF NOT EXISTS " << TABLEFILES_SCHEMA.name() << " (" << TABLEFILES_SCHEMA.ToString() + ");"; ENGINE_LOG_DEBUG << "MySQLMetaImpl::Initialize: " << InitializeQuery.str(); if (!InitializeQuery.exec()) { return HandleException("Initialization Error", InitializeQuery.error()); } } // Scoped Connection } catch (std::exception& e) { return HandleException("GENERAL ERROR DURING INITIALIZATION", e.what()); std::string msg = "Failed to create meta table 'TableFiles' in MySQL"; ENGINE_LOG_ERROR << msg; throw Exception(DB_META_TRANSACTION_FAILED, msg); } return Status::OK(); Loading Loading
CHANGELOG.md +1 −0 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ Please mark all change in change log and use the ticket from JIRA. - \#533 - NSG build failed with MetricType Inner Product - \#543 - client raise exception in shards when search results is empty - \#545 - Avoid dead circle of build index thread when error occurs - \#561 - Milvus server should report exception/error message or terminate on mysql metadata backend error ## Feature - \#12 - Pure CPU version for Milvus Loading
core/src/db/meta/MySQLMetaImpl.cpp +35 −30 Original line number Diff line number Diff line Loading @@ -290,45 +290,50 @@ MySQLMetaImpl::Initialize() { // step 4: validate to avoid open old version schema ValidateMetaSchema(); // step 5: create meta tables try { // step 5: clean shadow files if (mode_ != DBOptions::MODE::CLUSTER_READONLY) { CleanUpShadowFiles(); } { // step 6: try connect mysql server mysqlpp::ScopedConnection connectionPtr(*mysql_connection_pool_, safe_grab_); if (connectionPtr == nullptr) { return Status(DB_ERROR, "Failed to connect to meta server(mysql)"); std::string msg = "Failed to connect MySQL meta server: " + uri; ENGINE_LOG_ERROR << msg; throw Exception(DB_INVALID_META_URI, msg); } if (!connectionPtr->thread_aware()) { ENGINE_LOG_ERROR << "MySQL++ wasn't built with thread awareness! Can't run without it."; return Status(DB_ERROR, "MySQL++ wasn't built with thread awareness! Can't run without it."); std::string msg = "Failed to initialize MySQL meta backend: MySQL client component wasn't built with thread awareness"; ENGINE_LOG_ERROR << msg; throw Exception(DB_INVALID_META_URI, msg); } // step 7: create meta table Tables mysqlpp::Query InitializeQuery = connectionPtr->query(); InitializeQuery << "CREATE TABLE IF NOT EXISTS " << TABLES_SCHEMA.name() << " (" << TABLES_SCHEMA.ToString() + ");"; InitializeQuery << "CREATE TABLE IF NOT EXISTS " << TABLES_SCHEMA.name() << " (" << TABLES_SCHEMA.ToString() + ");"; ENGINE_LOG_DEBUG << "MySQLMetaImpl::Initialize: " << InitializeQuery.str(); if (!InitializeQuery.exec()) { return HandleException("Initialization Error", InitializeQuery.error()); std::string msg = "Failed to create meta table 'Tables' in MySQL"; ENGINE_LOG_ERROR << msg; throw Exception(DB_META_TRANSACTION_FAILED, msg); } // step 8: create meta table TableFiles InitializeQuery << "CREATE TABLE IF NOT EXISTS " << TABLEFILES_SCHEMA.name() << " (" << TABLEFILES_SCHEMA.ToString() + ");"; ENGINE_LOG_DEBUG << "MySQLMetaImpl::Initialize: " << InitializeQuery.str(); if (!InitializeQuery.exec()) { return HandleException("Initialization Error", InitializeQuery.error()); } } // Scoped Connection } catch (std::exception& e) { return HandleException("GENERAL ERROR DURING INITIALIZATION", e.what()); std::string msg = "Failed to create meta table 'TableFiles' in MySQL"; ENGINE_LOG_ERROR << msg; throw Exception(DB_META_TRANSACTION_FAILED, msg); } return Status::OK(); Loading