diff --git a/src/core/cpn/DatabaseCampaign.cc b/src/core/cpn/DatabaseCampaign.cc index 274fd0a9..07f3f598 100644 --- a/src/core/cpn/DatabaseCampaign.cc +++ b/src/core/cpn/DatabaseCampaign.cc @@ -79,11 +79,14 @@ bool DatabaseCampaign::run() { boost::thread collect_thread(&DatabaseCampaign::collect_result_thread, this); #endif - load_completed_pilots(); std::vector variants = db->get_variants(variant, benchmark); for (std::vector::const_iterator it = variants.begin(); it != variants.end(); ++it) { + // Which Pilots were already processed? + load_completed_pilots(*it); + + // Push all other variants to the queue if (!run_variant(*it)) { log_send << "run_variant failed for " << it->variant << "/" << it->benchmark <query_stream(sql.str().c_str()); - log_send << "loading completed pilot IDs ..." << std::endl; MYSQL_ROW row; unsigned rowcount = 0; while ((row = mysql_fetch_row(ids)) != 0) { diff --git a/src/core/cpn/DatabaseCampaign.hpp b/src/core/cpn/DatabaseCampaign.hpp index 11f4a8f7..cc8c593c 100644 --- a/src/core/cpn/DatabaseCampaign.hpp +++ b/src/core/cpn/DatabaseCampaign.hpp @@ -29,7 +29,7 @@ class DatabaseCampaign : public Campaign { int fspmethod_id; // !< Which fspmethod should be put out to the clients void collect_result_thread(); - void load_completed_pilots(); + void load_completed_pilots(fail::Database::Variant); unsigned existing_results_for_pilot(unsigned pilot_id); #ifndef __puma