Distinguish build step states
The web interface now shows whether a build step is connecting, copying inputs/outputs, building, etc.
This commit is contained in:
@ -271,7 +271,7 @@ void State::clearBusy(Connection & conn, time_t stopTime)
|
||||
{
|
||||
pqxx::work txn(conn);
|
||||
txn.parameterized
|
||||
("update BuildSteps set busy = 0, status = $1, stopTime = $2 where busy = 1")
|
||||
("update BuildSteps set busy = 0, status = $1, stopTime = $2 where busy != 0")
|
||||
((int) bsAborted)
|
||||
(stopTime, stopTime != 0).exec();
|
||||
txn.commit();
|
||||
@ -317,6 +317,18 @@ unsigned int State::createBuildStep(pqxx::work & txn, time_t startTime, BuildID
|
||||
}
|
||||
|
||||
|
||||
void State::updateBuildStep(pqxx::work & txn, BuildID buildId, unsigned int stepNr, StepState stepState)
|
||||
{
|
||||
if (txn.parameterized
|
||||
("update BuildSteps set busy = $1 where build = $2 and stepnr = $3 and busy != 0 and status is null")
|
||||
((int) stepState)
|
||||
(buildId)
|
||||
(stepNr)
|
||||
.exec().affected_rows() != 1)
|
||||
throw Error("step %d of build %d is in an unexpected state", stepNr, buildId);
|
||||
}
|
||||
|
||||
|
||||
void State::finishBuildStep(pqxx::work & txn, const RemoteResult & result,
|
||||
BuildID buildId, unsigned int stepNr, const std::string & machine)
|
||||
{
|
||||
@ -892,7 +904,7 @@ void State::run(BuildID buildOne)
|
||||
for (auto & step : steps) {
|
||||
printMsg(lvlError, format("cleaning orphaned step %d of build %d") % step.second % step.first);
|
||||
txn.parameterized
|
||||
("update BuildSteps set busy = 0, status = $1 where build = $2 and stepnr = $3 and busy = 1")
|
||||
("update BuildSteps set busy = 0, status = $1 where build = $2 and stepnr = $3 and busy != 0")
|
||||
((int) bsAborted)
|
||||
(step.first)
|
||||
(step.second).exec();
|
||||
|
Reference in New Issue
Block a user