From df897126213161e9d7a6edf247871aeddc4c7a27 Mon Sep 17 00:00:00 2001 From: tobe Date: Fri, 3 Mar 2023 15:41:58 +0800 Subject: [PATCH] feat: get job fail status for show job commands (#3112) * Get job fail status for show job commands * Do not check result set for GetJobResultSet --- src/sdk/sql_cluster_router.cc | 26 ++++++++++++++------------ src/sdk/sql_cluster_router.h | 2 +- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/src/sdk/sql_cluster_router.cc b/src/sdk/sql_cluster_router.cc index faefc0747d7..c858915383d 100644 --- a/src/sdk/sql_cluster_router.cc +++ b/src/sdk/sql_cluster_router.cc @@ -1845,7 +1845,8 @@ std::shared_ptr SQLClusterRouter::HandleSQLCmd(const h *status = {StatusCode::kCmdError, "Failed to parse job id: " + cmd_node->GetArgs()[0]}; return {}; } - return this->GetJobResultSet(job_id); + + return this->GetJobResultSet(job_id, status); } case hybridse::node::kCmdShowJobLog: { int job_id; @@ -1881,7 +1882,8 @@ std::shared_ptr SQLClusterRouter::HandleSQLCmd(const h ::openmldb::taskmanager::JobInfo job_info; StopJob(job_id, &job_info); - return this->GetJobResultSet(job_id); + + return this->GetJobResultSet(job_id, status); } case hybridse::node::kCmdDropTable: { *status = {}; @@ -2571,7 +2573,7 @@ std::shared_ptr SQLClusterRouter::ExecuteSQL( ReadSparkConfFromFile(std::dynamic_pointer_cast(options_)->spark_conf_path, &config); auto base_status = ExportOfflineData(sql, config, db, is_sync_job, offline_job_timeout, &job_info); if (base_status.OK()) { - return this->GetJobResultSet(job_info.id()); + return this->GetJobResultSet(job_info.id(), status); } else { *status = {StatusCode::kCmdError, base_status.msg}; } @@ -2625,7 +2627,7 @@ std::shared_ptr SQLClusterRouter::ExecuteSQL( base_status = ImportOfflineData(sql, config, database, is_sync_job, offline_job_timeout, &job_info); } if (base_status.OK() && job_info.id() > 0) { - return this->GetJobResultSet(job_info.id()); + return this->GetJobResultSet(job_info.id(), status); } else { APPEND_FROM_BASE_AND_WARN(status, base_status, "taskmanager load data failed"); } @@ -2683,7 +2685,8 @@ std::shared_ptr SQLClusterRouter::ExecuteOfflineQuery( APPEND_FROM_BASE_AND_WARN(status, base_status, "async offline query failed"); return {}; } - return this->GetJobResultSet(job_info.id()); + + return this->GetJobResultSet(job_info.id(), status); } } @@ -4199,19 +4202,18 @@ void SQLClusterRouter::ReadSparkConfFromFile(std::string conf_file_path, std::ma } } -std::shared_ptr SQLClusterRouter::GetJobResultSet(int job_id) { - hybridse::sdk::Status status; - +std::shared_ptr SQLClusterRouter::GetJobResultSet(int job_id, + ::hybridse::sdk::Status* status) { std::string db = openmldb::nameserver::INTERNAL_DB; std::string sql = "SELECT * FROM JOB_INFO WHERE id = " + std::to_string(job_id); - auto rs = ExecuteSQLParameterized(db, sql, {}, &status); - if (!status.IsOK()) { + auto rs = ExecuteSQLParameterized(db, sql, {}, status); + if (!status->IsOK()) { return {}; } if (rs->Size() == 0) { - status.code = ::hybridse::common::StatusCode::kCmdError; - status.msg = "Job not found: " + std::to_string(job_id); + status->SetCode(::hybridse::common::StatusCode::kCmdError); + status->SetMsg("Job not found: " + std::to_string(job_id)); return {}; } if (FLAGS_role == "sql_client") { diff --git a/src/sdk/sql_cluster_router.h b/src/sdk/sql_cluster_router.h index 3df7cf9030a..fa44fa1c31b 100644 --- a/src/sdk/sql_cluster_router.h +++ b/src/sdk/sql_cluster_router.h @@ -367,7 +367,7 @@ class SQLClusterRouter : public SQLRouter { const std::string& pattern, hybridse::sdk::Status* status); - std::shared_ptr GetJobResultSet(int job_id); + std::shared_ptr GetJobResultSet(int job_id, ::hybridse::sdk::Status* status); bool CheckTableStatus(const std::string& db, const std::string& table_name, uint32_t tid, const nameserver::TablePartition& partition_info, uint32_t replica_num,