mirror of
https://gitee.com/milvus-io/milvus.git
synced 2026-01-07 19:31:51 +08:00
fix license check bug
Former-commit-id: 69114c03a3482ab0835e209b7c680d9b2a0f684c
This commit is contained in:
parent
a2d7a4072c
commit
51c9ffbaaf
@ -9,25 +9,18 @@
|
||||
#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 {
|
||||
|
||||
using IO_SERVICE = boost::asio::io_service;
|
||||
|
||||
namespace {
|
||||
IO_SERVICE& GetIOService() {
|
||||
static IO_SERVICE io;
|
||||
return io;
|
||||
}
|
||||
|
||||
LicenseCheck::LicenseCheck() {
|
||||
|
||||
}
|
||||
|
||||
// Part 1: Legality check
|
||||
|
||||
ServerError
|
||||
LicenseCheck::LegalityCheck(const std::string &license_file_path) {
|
||||
|
||||
@ -81,14 +74,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;
|
||||
|
||||
}
|
||||
@ -102,22 +97,26 @@ LicenseCheck::StartCountingDown(const std::string &license_file_path) {
|
||||
}
|
||||
|
||||
//create a thread to run AlterFile
|
||||
std::thread io_thread([&]() {
|
||||
boost::asio::io_service& io = GetIOService();
|
||||
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();//this thread will block here
|
||||
});
|
||||
io_thread.detach();
|
||||
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() {
|
||||
boost::asio::io_service& io = GetIOService();
|
||||
if(!io.stopped()) {
|
||||
io.stop();
|
||||
if(!io_service_.stopped()) {
|
||||
io_service_.stop();
|
||||
}
|
||||
|
||||
if(counting_thread_ != nullptr) {
|
||||
counting_thread_->join();
|
||||
counting_thread_ = nullptr;
|
||||
}
|
||||
|
||||
return SERVER_SUCCESS;
|
||||
|
||||
@ -4,36 +4,43 @@
|
||||
#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:
|
||||
// Part 1: Legality check
|
||||
private:
|
||||
LicenseCheck();
|
||||
|
||||
public:
|
||||
static LicenseCheck &
|
||||
GetInstance() {
|
||||
static LicenseCheck instance;
|
||||
return instance;
|
||||
};
|
||||
|
||||
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);
|
||||
|
||||
static ServerError
|
||||
StopCountingDown();
|
||||
|
||||
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
|
||||
@ -218,7 +216,7 @@ Server::Stop() {
|
||||
StopService();
|
||||
|
||||
#ifdef ENABLE_LICENSE
|
||||
server::LicenseCheck::StopCountingDown();
|
||||
server::LicenseCheck::GetInstance().StopCountingDown();
|
||||
#endif
|
||||
|
||||
SERVER_LOG_INFO << "Vecwise server closed";
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user