Loading CHANGELOG.md +1 −0 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ Please mark all change in change log and use the ticket from JIRA. - \#543 - client raise exception in shards when search results is empty - \#545 - Avoid dead circle of build index thread when error occurs - \#552 - Server down during building index_type: IVF_PQ using GPU-edition - \#561 - Milvus server should report exception/error message or terminate on mysql metadata backend error ## Feature - \#12 - Pure CPU version for Milvus Loading ci/jenkins/Jenkinsfile +2 −3 Original line number Diff line number Diff line Loading @@ -27,9 +27,8 @@ pipeline { environment { PROJECT_NAME = "milvus" LOWER_BUILD_TYPE = params.BUILD_TYPE.toLowerCase() SEMVER = "${BRANCH_NAME}" JOBNAMES = env.JOB_NAME.split('/') PIPELINE_NAME = "${JOBNAMES[0]}" SEMVER = "${BRANCH_NAME.contains('/') ? BRANCH_NAME.substring(BRANCH_NAME.lastIndexOf('/') + 1) : '${BRANCH_NAME}'}" PIPELINE_NAME = "${env.JOB_NAME.contains('/') ? env.JOB_NAME.getAt(0..(env.JOB_NAME.indexOf('/') - 1)) : '${env.JOB_NAME}'}" } stages { Loading ci/jenkins/internalJenkinsfile.groovy +2 −3 Original line number Diff line number Diff line Loading @@ -18,9 +18,8 @@ pipeline { environment { PROJECT_NAME = "milvus" LOWER_BUILD_TYPE = params.BUILD_TYPE.toLowerCase() SEMVER = "${BRANCH_NAME}" JOBNAMES = env.JOB_NAME.split('/') PIPELINE_NAME = "${JOBNAMES[0]}" SEMVER = "${BRANCH_NAME.contains('/') ? BRANCH_NAME.substring(BRANCH_NAME.lastIndexOf('/') + 1) : '${BRANCH_NAME}'}" PIPELINE_NAME = "${env.JOB_NAME.contains('/') ? env.JOB_NAME.getAt(0..(env.JOB_NAME.indexOf('/') - 1)) : '${env.JOB_NAME}'}" } stages { 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 @@ -34,6 +34,7 @@ Please mark all change in change log and use the ticket from JIRA. - \#543 - client raise exception in shards when search results is empty - \#545 - Avoid dead circle of build index thread when error occurs - \#552 - Server down during building index_type: IVF_PQ using GPU-edition - \#561 - Milvus server should report exception/error message or terminate on mysql metadata backend error ## Feature - \#12 - Pure CPU version for Milvus Loading
ci/jenkins/Jenkinsfile +2 −3 Original line number Diff line number Diff line Loading @@ -27,9 +27,8 @@ pipeline { environment { PROJECT_NAME = "milvus" LOWER_BUILD_TYPE = params.BUILD_TYPE.toLowerCase() SEMVER = "${BRANCH_NAME}" JOBNAMES = env.JOB_NAME.split('/') PIPELINE_NAME = "${JOBNAMES[0]}" SEMVER = "${BRANCH_NAME.contains('/') ? BRANCH_NAME.substring(BRANCH_NAME.lastIndexOf('/') + 1) : '${BRANCH_NAME}'}" PIPELINE_NAME = "${env.JOB_NAME.contains('/') ? env.JOB_NAME.getAt(0..(env.JOB_NAME.indexOf('/') - 1)) : '${env.JOB_NAME}'}" } stages { Loading
ci/jenkins/internalJenkinsfile.groovy +2 −3 Original line number Diff line number Diff line Loading @@ -18,9 +18,8 @@ pipeline { environment { PROJECT_NAME = "milvus" LOWER_BUILD_TYPE = params.BUILD_TYPE.toLowerCase() SEMVER = "${BRANCH_NAME}" JOBNAMES = env.JOB_NAME.split('/') PIPELINE_NAME = "${JOBNAMES[0]}" SEMVER = "${BRANCH_NAME.contains('/') ? BRANCH_NAME.substring(BRANCH_NAME.lastIndexOf('/') + 1) : '${BRANCH_NAME}'}" PIPELINE_NAME = "${env.JOB_NAME.contains('/') ? env.JOB_NAME.getAt(0..(env.JOB_NAME.indexOf('/') - 1)) : '${env.JOB_NAME}'}" } stages { 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