Also add support for automatically retrying failed source and build checks up to a certain point (1h for source builds, several days for build checks)

This commit is contained in:
Simon Quigley 2025-02-08 02:01:22 -06:00
parent 9233c8d810
commit 8371277873

View File

@ -882,40 +882,46 @@ void PackageConf::sync() {
bool PackageConf::can_check_source_upload() { bool PackageConf::can_check_source_upload() {
std::lock_guard<std::mutex> lock(*task_mutex_); std::lock_guard<std::mutex> lock(*task_mutex_);
bool upload_ok = false, source_check_ok = false; bool upload_ok = false, source_check_ok = false, source_check_successful = false;
std::int64_t upload_time = 0, source_check_time = 0; std::int64_t upload_time = 0, source_check_time = 0;
std::int64_t now = std::chrono::duration_cast<std::chrono::milliseconds>(
std::chrono::system_clock::now().time_since_epoch()).count();
for (const auto &kv : jobstatus_task_map_) { for (const auto &kv : jobstatus_task_map_) {
if (kv.first->name == "upload" && kv.second && kv.second->finish_time > 0 && kv.second->successful) { if (kv.first->name == "upload" && kv.second && kv.second->finish_time > 0 && kv.second->successful) {
upload_ok = true; upload_ok = true;
upload_time = kv.second->finish_time; upload_time = kv.second->finish_time;
} } else if (kv.first->name == "source_check" && kv.second && kv.second->finish_time > 0) {
if (kv.first->name == "source_check" && kv.second && kv.second->finish_time > 0 && kv.second->successful) {
source_check_ok = true; source_check_ok = true;
source_check_successful = kv.second->successful;
source_check_time = kv.second->finish_time; source_check_time = kv.second->finish_time;
} }
} }
if (!source_check_ok && upload_ok) return true; if (upload_ok && !source_check_ok) return true;
else if (!source_check_ok && !upload_ok) return false; else if (!upload_ok && source_check_ok) return false;
else if (upload_ok && source_check_ok && !source_check_successful && (source_check_time >= (now - (60 * 60 * 1000)))) return true;
else return upload_ok && source_check_ok && (source_check_time <= upload_time); else return upload_ok && source_check_ok && (source_check_time <= upload_time);
} }
bool PackageConf::can_check_builds() { bool PackageConf::can_check_builds() {
std::lock_guard<std::mutex> lock(*task_mutex_); std::lock_guard<std::mutex> lock(*task_mutex_);
bool upload_ok = false, build_check_ok = false; bool source_check_ok = false, build_check_ok = false, build_check_successful;
std::int64_t upload_time = 0, build_check_time = 0; std::int64_t source_check_time = 0, build_check_time = 0;
std::int64_t now = std::chrono::duration_cast<std::chrono::milliseconds>(
std::chrono::system_clock::now().time_since_epoch()).count();
for (const auto &kv : jobstatus_task_map_) { for (const auto &kv : jobstatus_task_map_) {
if (kv.first->name == "upload" && kv.second && kv.second->finish_time > 0 && kv.second->successful) { if (kv.first->name == "source_check" && kv.second && kv.second->finish_time > 0 && kv.second->successful) {
upload_ok = true; source_check_ok = true;
upload_time = kv.second->finish_time; source_check_time = kv.second->finish_time;
} } else if (kv.first->name == "build_check" && kv.second && kv.second->finish_time > 0) {
if (kv.first->name == "build_check" && kv.second && kv.second->finish_time > 0 && kv.second->successful) {
build_check_ok = true; build_check_ok = true;
build_check_successful = kv.second->successful;
build_check_time = kv.second->finish_time; build_check_time = kv.second->finish_time;
} }
} }
if (!build_check_ok && upload_ok) return true; if (!build_check_ok && source_check_ok) return true;
else if (!build_check_ok && !upload_ok) return false; else if (!build_check_ok && !source_check_ok) return false;
else return upload_ok && build_check_ok && (build_check_time <= upload_time); else if (source_check_ok && build_check_ok && !build_check_successful && (build_check_time >= (now - (4 * 24 * 60 * 60 * 1000)))) return true;
else return source_check_ok && build_check_ok && (build_check_time <= source_check_time);
} }
// End of PackageConf // End of PackageConf
// Start of GitCommit // Start of GitCommit