Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit c4b370f

Browse files
fix: cortex stop child process (menloresearch#1841)
* fix: download recursive * fix: handle model not loaded * fix: set permission for all venv folder * format code * fix: cortex stop will stop all running models * Fix: comment
1 parent a77cd96 commit c4b370f

File tree

5 files changed

+20
-13
lines changed

5 files changed

+20
-13
lines changed

engine/controllers/process_manager.cc

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
#include "process_manager.h"
2-
#include "utils/cortex_utils.h"
3-
42
#include <trantor/utils/Logger.h>
53
#include <cstdlib>
4+
#include "json/json.h"
5+
#include "utils/cortex_utils.h"
66

77
void ProcessManager::destroy(
88
const HttpRequestPtr& req,
99
std::function<void(const HttpResponsePtr&)>&& callback) {
10-
10+
auto loaded_engines = engine_service_->GetSupportedEngineNames();
11+
for (const auto& engine : loaded_engines.value()) {
12+
engine_service_->UnloadEngine(engine);
13+
}
1114
app().quit();
1215
Json::Value ret;
1316
ret["message"] = "Program is exitting, goodbye!";

engine/controllers/process_manager.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
#include <drogon/HttpController.h>
44
#include <drogon/HttpTypes.h>
5+
#include "services/engine_service.h"
56

67
using namespace drogon;
78

@@ -13,4 +14,10 @@ class ProcessManager : public drogon::HttpController<ProcessManager, false> {
1314

1415
void destroy(const HttpRequestPtr& req,
1516
std::function<void(const HttpResponsePtr&)>&& callback);
17+
18+
ProcessManager(std::shared_ptr<EngineService> engine_service)
19+
: engine_service_(engine_service) {}
20+
21+
private:
22+
std::shared_ptr<EngineService> engine_service_;
1623
};

engine/extensions/python-engine/python_engine.cc

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ static size_t WriteCallback(char* ptr, size_t size, size_t nmemb,
1818

1919
PythonEngine::PythonEngine() : q_(4 /*n_parallel*/, "python_engine") {}
2020

21-
2221
PythonEngine::~PythonEngine() {
2322
curl_global_cleanup();
2423
}
@@ -507,7 +506,6 @@ CurlResponse PythonEngine::MakeStreamPostRequest(
507506
return response;
508507
}
509508

510-
511509
void PythonEngine::HandleInference(
512510
std::shared_ptr<Json::Value> json_body,
513511
std::function<void(Json::Value&&, Json::Value&&)>&& callback) {
@@ -943,7 +941,11 @@ void PythonEngine::Load(EngineLoadOption opts) {
943941
// Develop register model here on loading engine
944942
};
945943

946-
void PythonEngine::Unload(EngineUnloadOption opts) {};
944+
void PythonEngine::Unload(EngineUnloadOption opts) {
945+
for (const auto& pair : models_) {
946+
TerminateModelProcess(pair.first);
947+
}
948+
};
947949

948950
// extern "C" {
949951
// EngineI* get_engine() {

engine/main.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ void RunServer(std::optional<std::string> host, std::optional<int> port,
182182
auto model_ctl = std::make_shared<Models>(db_service, model_service,
183183
engine_service, model_src_svc);
184184
auto event_ctl = std::make_shared<Events>(event_queue_ptr);
185-
auto pm_ctl = std::make_shared<ProcessManager>();
185+
auto pm_ctl = std::make_shared<ProcessManager>(engine_service);
186186
auto hw_ctl = std::make_shared<Hardware>(engine_service, hw_service);
187187
auto server_ctl =
188188
std::make_shared<inferences::server>(inference_svc, engine_service);

engine/services/model_service.cc

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -567,7 +567,6 @@ ModelService::DownloadModelFromCortexsoAsync(
567567
std::filesystem::path("python.exe"))
568568
.string()
569569
<< std::endl;
570-
571570
#else
572571
pyvenv_cfg << "home = "
573572
<< (venv_path / std::filesystem::path("bin/")).string()
@@ -577,14 +576,10 @@ ModelService::DownloadModelFromCortexsoAsync(
577576
<< (venv_path / std::filesystem::path("bin/python")).string()
578577
<< std::endl;
579578
#endif
580-
581579
// Close the file
582580
pyvenv_cfg.close();
583581
// Add executable permission to python
584-
585-
set_permission_utils::SetExecutePermissionsRecursive(
586-
venv_path );
587-
582+
set_permission_utils::SetExecutePermissionsRecursive(venv_path);
588583
} else {
589584
CTL_ERR("Failed to extract venv.zip");
590585
};

0 commit comments

Comments
 (0)