Merge pull request #1173 from DeterminateSystems/queue-runner-exporter
hydra-queue-runner metrics
This commit is contained in:
		@@ -82,6 +82,8 @@ struct PreviousFailure : public std::exception {
 | 
			
		||||
bool State::getQueuedBuilds(Connection & conn,
 | 
			
		||||
    ref<Store> destStore, unsigned int & lastBuildId)
 | 
			
		||||
{
 | 
			
		||||
    prom.queue_checks_started.Increment();
 | 
			
		||||
 | 
			
		||||
    printInfo("checking the queue for builds > %d...", lastBuildId);
 | 
			
		||||
 | 
			
		||||
    /* Grab the queued builds from the database, but don't process
 | 
			
		||||
@@ -107,7 +109,10 @@ bool State::getQueuedBuilds(Connection & conn,
 | 
			
		||||
            auto builds_(builds.lock());
 | 
			
		||||
            BuildID id = row["id"].as<BuildID>();
 | 
			
		||||
            if (buildOne && id != buildOne) continue;
 | 
			
		||||
            if (id > newLastBuildId) newLastBuildId = id;
 | 
			
		||||
            if (id > newLastBuildId) {
 | 
			
		||||
                newLastBuildId = id;
 | 
			
		||||
                prom.queue_max_id.Set(id);
 | 
			
		||||
            }
 | 
			
		||||
            if (builds_->count(id)) continue;
 | 
			
		||||
 | 
			
		||||
            auto build = std::make_shared<Build>(
 | 
			
		||||
@@ -136,6 +141,7 @@ bool State::getQueuedBuilds(Connection & conn,
 | 
			
		||||
    std::set<StorePath> finishedDrvs;
 | 
			
		||||
 | 
			
		||||
    createBuild = [&](Build::ptr build) {
 | 
			
		||||
        prom.queue_build_loads.Increment();
 | 
			
		||||
        printMsg(lvlTalkative, format("loading build %1% (%2%)") % build->id % build->fullJobName());
 | 
			
		||||
        nrAdded++;
 | 
			
		||||
        newBuildsByID.erase(build->id);
 | 
			
		||||
@@ -306,9 +312,14 @@ bool State::getQueuedBuilds(Connection & conn,
 | 
			
		||||
 | 
			
		||||
        /* Stop after a certain time to allow priority bumps to be
 | 
			
		||||
           processed. */
 | 
			
		||||
        if (std::chrono::system_clock::now() > start + std::chrono::seconds(600)) break;
 | 
			
		||||
        if (std::chrono::system_clock::now() > start + std::chrono::seconds(600)) {
 | 
			
		||||
            prom.queue_checks_early_exits.Increment();
 | 
			
		||||
            break;
 | 
			
		||||
        } 
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    prom.queue_checks_finished.Increment();
 | 
			
		||||
 | 
			
		||||
    lastBuildId = newBuildsByID.empty() ? newLastBuildId : newBuildsByID.begin()->first - 1;
 | 
			
		||||
    return newBuildsByID.empty();
 | 
			
		||||
}
 | 
			
		||||
@@ -437,6 +448,8 @@ Step::ptr State::createStep(ref<Store> destStore,
 | 
			
		||||
 | 
			
		||||
    if (!isNew) return step;
 | 
			
		||||
 | 
			
		||||
    prom.queue_steps_created.Increment();
 | 
			
		||||
 | 
			
		||||
    printMsg(lvlDebug, "considering derivation ‘%1%’", localStore->printStorePath(drvPath));
 | 
			
		||||
 | 
			
		||||
    /* Initialize the step. Note that the step may be visible in
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user