mirror of
https://gitee.com/milvus-io/milvus.git
synced 2024-12-04 21:09:06 +08:00
Merge branch 'branch-0.3.0' into 'branch-0.3.0'
MS-67 Fix license check bug See merge request megasearch/vecwise_engine!68 Former-commit-id: 8cab9b4bc3441ee6058aca86fbd330f51b8c6ee4
This commit is contained in:
commit
f5066e41fd
@ -24,6 +24,7 @@ Please mark all change in change log and use the ticket from JIRA.
|
||||
|
||||
- MS-32 - Fix thrift error
|
||||
- MS-34 - Fix prometheus-cpp thirdparty
|
||||
- MS-67 - Fix license check bug
|
||||
|
||||
## Improvement
|
||||
|
||||
|
@ -82,10 +82,10 @@ endif()
|
||||
|
||||
if(CMAKE_BUILD_TYPE STREQUAL "Release")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -fPIC -DELPP_THREAD_SAFE -fopenmp")
|
||||
# if (GPU_VERSION STREQUAL "ON")
|
||||
# set(ENABLE_LICENSE "ON")
|
||||
# add_definitions("-DENABLE_LICENSE")
|
||||
# endif ()
|
||||
if (GPU_VERSION STREQUAL "ON")
|
||||
set(ENABLE_LICENSE "ON")
|
||||
add_definitions("-DENABLE_LICENSE")
|
||||
endif ()
|
||||
else()
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O0 -g -fPIC -DELPP_THREAD_SAFE -fopenmp")
|
||||
endif()
|
||||
|
@ -1,5 +1,7 @@
|
||||
#include "LicenseCheck.h"
|
||||
#include <iostream>
|
||||
#include <thread>
|
||||
|
||||
#include <boost/archive/binary_oarchive.hpp>
|
||||
#include <boost/archive/binary_iarchive.hpp>
|
||||
//#include <boost/foreach.hpp>
|
||||
@ -7,14 +9,21 @@
|
||||
#include <boost/filesystem/path.hpp>
|
||||
#include <boost/serialization/map.hpp>
|
||||
#include <boost/filesystem/operations.hpp>
|
||||
#include <boost/thread.hpp>
|
||||
#include <boost/date_time/posix_time/posix_time.hpp>
|
||||
|
||||
|
||||
namespace zilliz {
|
||||
namespace vecwise {
|
||||
namespace server {
|
||||
|
||||
LicenseCheck::LicenseCheck() {
|
||||
|
||||
// Part 1: Legality check
|
||||
}
|
||||
|
||||
LicenseCheck::~LicenseCheck() {
|
||||
StopCountingDown();
|
||||
}
|
||||
|
||||
ServerError
|
||||
LicenseCheck::LegalityCheck(const std::string &license_file_path) {
|
||||
@ -69,14 +78,16 @@ LicenseCheck::AlterFile(const std::string &license_file_path,
|
||||
const boost::system::error_code &ec,
|
||||
boost::asio::deadline_timer *pt) {
|
||||
|
||||
ServerError err = LegalityCheck(license_file_path);
|
||||
if(err!=SERVER_SUCCESS)
|
||||
{
|
||||
ServerError err = LicenseCheck::LegalityCheck(license_file_path);
|
||||
if(err!=SERVER_SUCCESS) {
|
||||
printf("license file check error\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
printf("---runing---\n");
|
||||
pt->expires_at(pt->expires_at() + boost::posix_time::hours(1));
|
||||
pt->async_wait(boost::bind(AlterFile, license_file_path, boost::asio::placeholders::error, pt));
|
||||
pt->async_wait(boost::bind(LicenseCheck::AlterFile, license_file_path, boost::asio::placeholders::error, pt));
|
||||
|
||||
return SERVER_SUCCESS;
|
||||
|
||||
}
|
||||
@ -84,11 +95,34 @@ LicenseCheck::AlterFile(const std::string &license_file_path,
|
||||
ServerError
|
||||
LicenseCheck::StartCountingDown(const std::string &license_file_path) {
|
||||
|
||||
if (!LicenseLibrary::IsFileExistent(license_file_path)) return SERVER_LICENSE_FILE_NOT_EXIST;
|
||||
boost::asio::io_service io;
|
||||
boost::asio::deadline_timer t(io, boost::posix_time::hours(1));
|
||||
t.async_wait(boost::bind(AlterFile, license_file_path, boost::asio::placeholders::error, &t));
|
||||
io.run();
|
||||
if (!LicenseLibrary::IsFileExistent(license_file_path)) {
|
||||
printf("license file not exist\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
//create a thread to run AlterFile
|
||||
if(counting_thread_ == nullptr) {
|
||||
counting_thread_ = std::make_shared<std::thread>([&]() {
|
||||
boost::asio::deadline_timer t(io_service_, boost::posix_time::hours(1));
|
||||
t.async_wait(boost::bind(LicenseCheck::AlterFile, license_file_path, boost::asio::placeholders::error, &t));
|
||||
io_service_.run();//this thread will block here
|
||||
});
|
||||
}
|
||||
|
||||
return SERVER_SUCCESS;
|
||||
}
|
||||
|
||||
ServerError
|
||||
LicenseCheck::StopCountingDown() {
|
||||
if(!io_service_.stopped()) {
|
||||
io_service_.stop();
|
||||
}
|
||||
|
||||
if(counting_thread_ != nullptr) {
|
||||
counting_thread_->join();
|
||||
counting_thread_ = nullptr;
|
||||
}
|
||||
|
||||
return SERVER_SUCCESS;
|
||||
}
|
||||
|
||||
|
@ -4,40 +4,44 @@
|
||||
#include "LicenseLibrary.h"
|
||||
|
||||
#include <boost/asio.hpp>
|
||||
#include <boost/thread.hpp>
|
||||
#include <boost/date_time/posix_time/posix_time.hpp>
|
||||
|
||||
#include <thread>
|
||||
#include <memory>
|
||||
|
||||
namespace zilliz {
|
||||
namespace vecwise {
|
||||
namespace server {
|
||||
|
||||
class LicenseCheck {
|
||||
public:
|
||||
private:
|
||||
LicenseCheck();
|
||||
~LicenseCheck();
|
||||
|
||||
public:
|
||||
static LicenseCheck &
|
||||
GetInstance() {
|
||||
static LicenseCheck instance;
|
||||
return instance;
|
||||
};
|
||||
|
||||
|
||||
// Part 1: Legality check
|
||||
static ServerError
|
||||
LegalityCheck(const std::string &license_file_path);
|
||||
|
||||
ServerError
|
||||
StartCountingDown(const std::string &license_file_path);
|
||||
|
||||
// Part 2: Timing check license
|
||||
ServerError
|
||||
StopCountingDown();
|
||||
|
||||
private:
|
||||
static ServerError
|
||||
AlterFile(const std::string &license_file_path,
|
||||
const boost::system::error_code &ec,
|
||||
boost::asio::deadline_timer *pt);
|
||||
|
||||
|
||||
static ServerError
|
||||
StartCountingDown(const std::string &license_file_path);
|
||||
|
||||
private:
|
||||
|
||||
private:
|
||||
boost::asio::io_service io_service_;
|
||||
std::shared_ptr<std::thread> counting_thread_;
|
||||
|
||||
};
|
||||
|
||||
|
@ -159,15 +159,13 @@ Server::Start() {
|
||||
ConfigNode license_config = config.GetConfig(CONFIG_LICENSE);
|
||||
std::string license_file_path = license_config.GetValue(CONFIG_LICENSE_PATH);
|
||||
SERVER_LOG_INFO << "License path: " << license_file_path;
|
||||
|
||||
if(server::LicenseCheck::LegalityCheck(license_file_path) != SERVER_SUCCESS) {
|
||||
SERVER_LOG_ERROR << "License check failed";
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if(server::LicenseCheck::StartCountingDown(license_file_path) != SERVER_SUCCESS) {
|
||||
SERVER_LOG_ERROR << "License counter start error";
|
||||
exit(1);
|
||||
}
|
||||
server::LicenseCheck::GetInstance().StartCountingDown(license_file_path);
|
||||
#endif
|
||||
|
||||
// Handle Signal
|
||||
@ -217,6 +215,9 @@ Server::Stop() {
|
||||
|
||||
StopService();
|
||||
|
||||
#ifdef ENABLE_LICENSE
|
||||
server::LicenseCheck::GetInstance().StopCountingDown();
|
||||
#endif
|
||||
|
||||
SERVER_LOG_INFO << "Vecwise server closed";
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user