add logs, modify sock file permission and serivce file
(cherry picked from commit 19d0a5c5172dfbd75f2ccac4a5c19492fc44625c)
This commit is contained in:
parent
787113d9ee
commit
6a0eb4490d
322
0005-modify-logs-sock-file-permission-and-fix-service-fil.patch
Normal file
322
0005-modify-logs-sock-file-permission-and-fix-service-fil.patch
Normal file
@ -0,0 +1,322 @@
|
||||
From 906d417f7a370b6b9f60069bae41ee6d00d7537e Mon Sep 17 00:00:00 2001
|
||||
From: fly_1997 <flylove7@outlook.com>
|
||||
Date: Tue, 7 May 2024 18:02:15 +0800
|
||||
Subject: [PATCH] modify logs, sock file permission and fix service file,
|
||||
repetition of dependencies
|
||||
|
||||
---
|
||||
config.yaml | 11 ++++-----
|
||||
oeaware.service | 2 +-
|
||||
src/client/cmd_handler.cpp | 22 +++++++++++++-----
|
||||
src/client/cmd_handler.h | 2 ++
|
||||
src/plugin_mgr/dep_handler.cpp | 36 +++++++++++++++++++++---------
|
||||
src/plugin_mgr/dep_handler.h | 8 +++----
|
||||
src/plugin_mgr/error_code.cpp | 2 +-
|
||||
src/plugin_mgr/message_manager.cpp | 3 +++
|
||||
src/plugin_mgr/plugin.h | 6 +++--
|
||||
src/plugin_mgr/plugin_manager.cpp | 15 ++++++++-----
|
||||
10 files changed, 73 insertions(+), 34 deletions(-)
|
||||
|
||||
diff --git a/config.yaml b/config.yaml
|
||||
index ef0b44b..99d01d7 100644
|
||||
--- a/config.yaml
|
||||
+++ b/config.yaml
|
||||
@@ -1,8 +1,9 @@
|
||||
log_path: /var/log/oeAware
|
||||
-log_level: 1
|
||||
+log_level: 2
|
||||
enable_list:
|
||||
- - name: aaa.so
|
||||
+
|
||||
plugin_list:
|
||||
- - name: test
|
||||
- description: hello world
|
||||
- url: https://gitee.com/openeuler/oeAware-manager
|
||||
\ No newline at end of file
|
||||
+ - name: numafast
|
||||
+ description: numafast is a userspace tool designed for Kunpeng Chips that aims to improve
|
||||
+ system performance by reducing cross-NUMA memory access.
|
||||
+ url: https://repo.oepkgs.net/openeuler/rpm/openEuler-22.03-LTS-SP1/extras/aarch64/Packages/n/numafast-v1.0.0-2.aarch64.rpm
|
||||
\ No newline at end of file
|
||||
diff --git a/oeaware.service b/oeaware.service
|
||||
index b321530..be13c4b 100644
|
||||
--- a/oeaware.service
|
||||
+++ b/oeaware.service
|
||||
@@ -5,7 +5,7 @@ After=network.target
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStart=/usr/bin/oeaware /etc/oeAware/config.yaml
|
||||
-ExecStop=kill $MAINPID && sleep 5 && kill -9 $MAINPID
|
||||
+ExecStop=kill $MAINPID
|
||||
Restart=on-failure
|
||||
RestartSec=1
|
||||
RemainAfterExit=yes
|
||||
diff --git a/src/client/cmd_handler.cpp b/src/client/cmd_handler.cpp
|
||||
index 1f2b8a5..4fec95b 100644
|
||||
--- a/src/client/cmd_handler.cpp
|
||||
+++ b/src/client/cmd_handler.cpp
|
||||
@@ -15,12 +15,22 @@
|
||||
|
||||
std::unordered_set<std::string> LoadHandler::types = {"collector", "scenario", "tune"};
|
||||
|
||||
+void LoadHandler::check(const std::string &arg, const std::string &type) {
|
||||
+ if (arg.empty()) {
|
||||
+ ArgParse::arg_error("plugin name empty.");
|
||||
+ }
|
||||
+ if (type.empty()) {
|
||||
+ ArgParse::arg_error("type empty.");
|
||||
+ }
|
||||
+ if (!types.count(type)) {
|
||||
+ ArgParse::arg_error("this type is not supported.");
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
void LoadHandler::handler(const ArgParse &arg_parse, Msg &msg) {
|
||||
std::string arg = arg_parse.get_arg();
|
||||
std::string type = arg_parse.get_type();
|
||||
- if (arg.empty() || type.empty() || !types.count(type)) {
|
||||
- ArgParse::arg_error("args error.");
|
||||
- }
|
||||
+ check(arg, type);
|
||||
msg.add_payload(arg);
|
||||
msg.add_payload(type);
|
||||
msg.set_opt(Opt::LOAD);
|
||||
@@ -84,7 +94,7 @@ void RemoveHandler::handler(const ArgParse &arg_parse, Msg &msg) {
|
||||
|
||||
void RemoveHandler::res_handler(Msg &msg) {
|
||||
if (msg.get_opt() == Opt::RESPONSE_OK) {
|
||||
- std::cout << "plugin remove successful.\n";
|
||||
+ std::cout << "plugin remove successfully.\n";
|
||||
} else {
|
||||
std::cout << "plugin remove failed, because " << msg.payload(0) << ".\n";
|
||||
}
|
||||
@@ -131,7 +141,7 @@ void EnabledHandler::handler(const ArgParse &arg_parse, Msg &msg) {
|
||||
|
||||
void EnabledHandler::res_handler(Msg &msg) {
|
||||
if (msg.get_opt() == Opt::RESPONSE_OK) {
|
||||
- std::cout << "instance enabled.\n";
|
||||
+ std::cout << "instance enabled successfully.\n";
|
||||
} else {
|
||||
std::cout << "instance enabled failed, because "<< msg.payload(0) << ".\n";
|
||||
}
|
||||
@@ -145,7 +155,7 @@ void DisabledHandler::handler(const ArgParse &arg_parse, Msg &msg) {
|
||||
|
||||
void DisabledHandler::res_handler(Msg &msg) {
|
||||
if (msg.get_opt() == Opt::RESPONSE_OK) {
|
||||
- std::cout << "instance disabled.\n";
|
||||
+ std::cout << "instance disabled successfully.\n";
|
||||
} else {
|
||||
std::cout << "instance disabled failed, because "<< msg.payload(0) << ".\n";
|
||||
}
|
||||
diff --git a/src/client/cmd_handler.h b/src/client/cmd_handler.h
|
||||
index ab21944..1b6f1c1 100644
|
||||
--- a/src/client/cmd_handler.h
|
||||
+++ b/src/client/cmd_handler.h
|
||||
@@ -29,6 +29,7 @@ public:
|
||||
void handler(const ArgParse &arg_parse, Msg &msg) override;
|
||||
void res_handler(Msg &msg) override;
|
||||
private:
|
||||
+ void check(const std::string &arg, const std::string &type);
|
||||
static std::unordered_set<std::string> types;
|
||||
};
|
||||
|
||||
@@ -36,6 +37,7 @@ class QueryHandler : public CmdHandler {
|
||||
public:
|
||||
void handler(const ArgParse &arg_parse, Msg &msg) override;
|
||||
void res_handler(Msg &msg) override;
|
||||
+private:
|
||||
void print_format();
|
||||
};
|
||||
|
||||
diff --git a/src/plugin_mgr/dep_handler.cpp b/src/plugin_mgr/dep_handler.cpp
|
||||
index eff333c..652fdce 100644
|
||||
--- a/src/plugin_mgr/dep_handler.cpp
|
||||
+++ b/src/plugin_mgr/dep_handler.cpp
|
||||
@@ -11,6 +11,7 @@
|
||||
******************************************************************************/
|
||||
#include "dep_handler.h"
|
||||
#include <queue>
|
||||
+#include <unordered_set>
|
||||
#include <stdio.h>
|
||||
|
||||
void DepHandler::add_arc_node(std::shared_ptr<Node> node, const std::vector<std::string> &dep_nodes) {
|
||||
@@ -38,14 +39,14 @@ void DepHandler::add_arc_node(std::shared_ptr<Node> node, const std::vector<std:
|
||||
}
|
||||
|
||||
|
||||
-void DepHandler::add_node(std::string name, std::vector<std::string> dep_nodes) {
|
||||
+void DepHandler::add_node(const std::string &name, std::vector<std::string> dep_nodes) {
|
||||
std::shared_ptr<Node> cur_node = add_new_node(name);
|
||||
this->nodes[name] = cur_node;
|
||||
add_arc_node(cur_node, dep_nodes);
|
||||
change_arc_nodes(name, true);
|
||||
}
|
||||
|
||||
-void DepHandler::del_node(std::string name) {
|
||||
+void DepHandler::del_node(const std::string &name) {
|
||||
del_node_and_arc_nodes(get_node(name));
|
||||
this->nodes.erase(name);
|
||||
}
|
||||
@@ -119,26 +120,41 @@ void DepHandler::query_node_top(std::string name, std::vector<std::vector<std::s
|
||||
}
|
||||
}
|
||||
|
||||
-void DepHandler::query_node(std::string name, std::vector<std::vector<std::string>> &query) {
|
||||
+void DepHandler::query_node(const std::string &name, std::vector<std::vector<std::string>> &query) {
|
||||
if (!nodes.count(name)) return;
|
||||
- std::shared_ptr<Node> p = nodes[name];
|
||||
- query.emplace_back(std::vector<std::string>{name});
|
||||
- for (auto cur = p->head->next; cur != nullptr; cur = cur->next) {
|
||||
- query.emplace_back(std::vector<std::string>{name, cur->arc_name});
|
||||
- query_node(cur->arc_name, query);
|
||||
+ std::queue<std::string> q;
|
||||
+ std::unordered_set<std::string> vis;
|
||||
+ vis.insert(name);
|
||||
+ q.push(name);
|
||||
+ while (!q.empty()) {
|
||||
+ auto node = nodes[q.front()];
|
||||
+ q.pop();
|
||||
+ query.emplace_back(std::vector<std::string>{node->name});
|
||||
+ for (auto cur = node->head->next; cur != nullptr; cur = cur->next) {
|
||||
+ query.emplace_back(std::vector<std::string>{node->name, cur->arc_name});
|
||||
+ if (!vis.count(cur->arc_name)) {
|
||||
+ vis.insert(cur->arc_name);
|
||||
+ q.push(cur->arc_name);
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
-std::vector<std::string> DepHandler::get_pre_dependencies(std::string name) {
|
||||
+std::vector<std::string> DepHandler::get_pre_dependencies(const std::string &name) {
|
||||
std::vector<std::string> res;
|
||||
std::queue<std::shared_ptr<Node>> q;
|
||||
+ std::unordered_set<std::string> vis;
|
||||
+ vis.insert(name);
|
||||
q.push(nodes[name]);
|
||||
while (!q.empty()) {
|
||||
auto &node = q.front();
|
||||
q.pop();
|
||||
res.emplace_back(node->name);
|
||||
for (auto arc_node = node->head->next; arc_node != nullptr; arc_node = arc_node->next) {
|
||||
- q.push(nodes[arc_node->arc_name]);
|
||||
+ if (!vis.count(arc_node->arc_name)) {
|
||||
+ vis.insert(arc_node->arc_name);
|
||||
+ q.push(nodes[arc_node->arc_name]);
|
||||
+ }
|
||||
}
|
||||
}
|
||||
return res;
|
||||
diff --git a/src/plugin_mgr/dep_handler.h b/src/plugin_mgr/dep_handler.h
|
||||
index cc8570a..76abf49 100644
|
||||
--- a/src/plugin_mgr/dep_handler.h
|
||||
+++ b/src/plugin_mgr/dep_handler.h
|
||||
@@ -47,11 +47,11 @@ public:
|
||||
bool get_node_state(std::string name) {
|
||||
return this->nodes[name]->state;
|
||||
}
|
||||
- void add_node(std::string name, std::vector<std::string> dep_nodes = {});
|
||||
- void del_node(std::string name);
|
||||
- std::vector<std::string> get_pre_dependencies(std::string name);
|
||||
+ void add_node(const std::string &name, std::vector<std::string> dep_nodes = {});
|
||||
+ void del_node(const std::string &name);
|
||||
+ std::vector<std::string> get_pre_dependencies(const std::string &name);
|
||||
// query instance dependency
|
||||
- void query_node(std::string name, std::vector<std::vector<std::string>> &query);
|
||||
+ void query_node(const std::string &name, std::vector<std::vector<std::string>> &query);
|
||||
// query all instance dependencies
|
||||
void query_all_top(std::vector<std::vector<std::string>> &query);
|
||||
bool have_dep(const std::string &name) {
|
||||
diff --git a/src/plugin_mgr/error_code.cpp b/src/plugin_mgr/error_code.cpp
|
||||
index 6e09cb0..30cc4f8 100644
|
||||
--- a/src/plugin_mgr/error_code.cpp
|
||||
+++ b/src/plugin_mgr/error_code.cpp
|
||||
@@ -12,7 +12,7 @@ const std::unordered_map<ErrorCode, std::string> ErrorText::error_codes = {
|
||||
{ErrorCode::REMOVE_INSTANCE_HAVE_DEP, "instance with pre-dependency"},
|
||||
{ErrorCode::LOAD_PLUGIN_FILE_NOT_EXIST, "plugin file does not exist"},
|
||||
{ErrorCode::LOAD_PLUGIN_FILE_IS_NOT_SO, "file is not a plugin file"},
|
||||
- {ErrorCode::LOAD_PLUGIN_FILE_PERMISSION_DEFINED, "plugin file permission defined"},
|
||||
+ {ErrorCode::LOAD_PLUGIN_FILE_PERMISSION_DEFINED, "plugin file permission is not the specified permission"},
|
||||
{ErrorCode::LOAD_PLUGIN_EXIST, "plugin already loaded"},
|
||||
{ErrorCode::LOAD_PLUGIN_DLOPEN_FAILED, "plugin dlopen failed"},
|
||||
{ErrorCode::LOAD_PLUGIN_DLSYM_FAILED, "plugin dlsym failed"},
|
||||
diff --git a/src/plugin_mgr/message_manager.cpp b/src/plugin_mgr/message_manager.cpp
|
||||
index e2fd3b6..f081f20 100644
|
||||
--- a/src/plugin_mgr/message_manager.cpp
|
||||
+++ b/src/plugin_mgr/message_manager.cpp
|
||||
@@ -25,6 +25,9 @@ int TcpSocket::domain_listen(const char *name) {
|
||||
ERROR("[MessageManager] bind error!");
|
||||
return -1;
|
||||
}
|
||||
+ if (chmod(name, S_IRWXU | S_IRGRP | S_IXGRP) == -1) {
|
||||
+ ERROR("[MessageManager] " << name << " chmod error!");
|
||||
+ }
|
||||
if (listen(sock, 20) < 0) {
|
||||
ERROR("[MessageManager] listen error!");
|
||||
return -1;
|
||||
diff --git a/src/plugin_mgr/plugin.h b/src/plugin_mgr/plugin.h
|
||||
index 69837af..a2a1815 100644
|
||||
--- a/src/plugin_mgr/plugin.h
|
||||
+++ b/src/plugin_mgr/plugin.h
|
||||
@@ -123,8 +123,10 @@ private:
|
||||
class Plugin {
|
||||
public:
|
||||
Plugin(std::string name, PluginType type) : name(name), type(type), handler(nullptr) { }
|
||||
- ~Plugin() {
|
||||
- dlclose(handler);
|
||||
+ ~Plugin() {
|
||||
+ if (handler != nullptr) {
|
||||
+ dlclose(handler);
|
||||
+ }
|
||||
}
|
||||
int load(const std::string dl_path);
|
||||
std::string get_name() const {
|
||||
diff --git a/src/plugin_mgr/plugin_manager.cpp b/src/plugin_mgr/plugin_manager.cpp
|
||||
index 0826a60..5ef395c 100644
|
||||
--- a/src/plugin_mgr/plugin_manager.cpp
|
||||
+++ b/src/plugin_mgr/plugin_manager.cpp
|
||||
@@ -13,6 +13,7 @@
|
||||
#include "default_path.h"
|
||||
#include "utils.h"
|
||||
#include <iostream>
|
||||
+#include <unordered_set>
|
||||
#include <dirent.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
@@ -203,15 +204,15 @@ ErrorCode PluginManager::load_plugin(const std::string &name, PluginType type) {
|
||||
std::string generate_dot(MemoryStore &memory_store, const std::vector<std::vector<std::string>> &query) {
|
||||
std::string res;
|
||||
res += "digraph G {\n";
|
||||
- std::unordered_map<std::string, std::vector<std::string>> sub_graph;
|
||||
+ std::unordered_map<std::string, std::unordered_set<std::string>> sub_graph;
|
||||
for (auto &vec : query) {
|
||||
std::shared_ptr<Instance> instance = memory_store.get_instance(vec[0]);
|
||||
- sub_graph[instance->get_plugin_name()].emplace_back(vec[0]);
|
||||
+ sub_graph[instance->get_plugin_name()].insert(vec[0]);
|
||||
if (vec.size() == 1) {
|
||||
continue;
|
||||
}
|
||||
instance = memory_store.get_instance(vec[1]);
|
||||
- sub_graph[instance->get_plugin_name()].emplace_back(vec[1]);
|
||||
+ sub_graph[instance->get_plugin_name()].insert(vec[1]);
|
||||
res += vec[0] + "->" + vec[1] + ";";
|
||||
}
|
||||
int id = 0;
|
||||
@@ -371,8 +372,12 @@ void PluginManager::pre_load_plugin(PluginType type) {
|
||||
while ((entry = readdir(dir)) != nullptr) {
|
||||
std::string name = entry->d_name;
|
||||
if (end_with(name, ".so")) {
|
||||
- Message msg;
|
||||
- load_plugin(name, type);
|
||||
+ auto ret = load_plugin(name, type);
|
||||
+ if (ret != ErrorCode::OK) {
|
||||
+ WARN("[PluginManager] " << name << " plugin preload failed, because " << ErrorText::get_error_text(ret) << ".");
|
||||
+ } else {
|
||||
+ INFO("[PluginManager] " << name << " plugin loaded.");
|
||||
+ }
|
||||
}
|
||||
}
|
||||
closedir(dir);
|
||||
--
|
||||
2.33.0
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
Name: oeAware-manager
|
||||
Version: v1.0.0
|
||||
Release: 3
|
||||
Release: 4
|
||||
Summary: OeAware server and client
|
||||
License: MulanPSL2
|
||||
URL: https://gitee.com/openeuler/%{name}
|
||||
@ -9,6 +9,7 @@ Patch1: 0001-fix-remove-plugin-bug-and-refactor.patch
|
||||
Patch2: 0002-add-error-code-and-replace-raw-poniters-with-smart-p.patch
|
||||
Patch3: 0003-add-client-error-description-extract-class-and-fix-b.patch
|
||||
Patch4: 0004-fix-auto-enable-error-and-check-plugin-list-config.patch
|
||||
Patch5: 0005-modify-logs-sock-file-permission-and-fix-service-fil.patch
|
||||
|
||||
BuildRequires: cmake make gcc-c++
|
||||
BuildRequires: boost-devel
|
||||
@ -46,6 +47,9 @@ install -D -p -m 0644 oeaware.service %{buildroot}%{_unitdir}/oeaware.service
|
||||
%attr(0644, root, root) %{_unitdir}/oeaware.service
|
||||
|
||||
%changelog
|
||||
* Mon May 6 2024 fly_1997 <flylove7@outlook.com> -v1.0.0-4
|
||||
- add logs, modify sock file permission and serivce file
|
||||
|
||||
* Mon Apr 29 2024 fly_1997 <flylove7@outlook.com> -v1.0.0-3
|
||||
- add error description, refactor, and fix bugs
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user