Update libpqxx usage to move away from deprecated API interactions.
[?]
Jan 12, 2020, 6:38 AM
DKR2GXSAVIZGOR3HEAD46SZWTRXJO2EH43H57P2365Y5M2QCQHDACDependencies
- [2]
X2LETBPIFix race in finishing builds that have been cancelled - [3]
UPNGFCXGFor completeness, re-implement meta.schedulingPriority - [4]
YFD6CBV3hydra-queue-runner: Fix handling of missing derivations - [5]
2H2AVMXIFix "Evaluation pending since..." message even though the jobset has been evaluated - [6]
PW4TLMWSSync with latest Nix - [7]
XIFDDTXZDon't lock the BuildSteps table when inserting - [8]
G7KWXSFMDistinguish build step states - [9]
WYELTQMOSeparate payload elements using \t - [10]
IE2PRAQUhydra-queue-runner: Send build notifications - [11]
7LWB2J2ZPeriodically clear orphaned build steps - [12]
BRAESISHWarn if PostgreSQL appears stalled - [13]
WDGARQ76Reuse build products / metrics stored in the database - [14]
62MQPRXCPass null values to libpqxx properly - [15]
ZK76B5ZZLoad the queue in order of global priority - [16]
W4G5MZZShydra-evaluator improvements - [17]
VZCNKQSBRemove superfluous check - [18]
NJJ7H64SVery basic multi-threaded queue runner - [19]
YZAI5GQUImplement a database connection pool - [20]
IWB3F4Z6Fail builds with previously failed steps early - [21]
RQUAATWBAdd status dump facility - [22]
FQQRJUO4Mark builds as busy - [23]
LVQXQIYAKill active build steps when builds are cancelled - [24]
IK2UBDAURevive jobset scheduling - [25]
PQFOMNTLhydra-queue-runner: More stats - [26]
DKJFD6JNProcess Nix API changes - [27]
UNVMKJV5Unify build and step status codes - [28]
UQQ4IL55Add a error type for "unsupported system type" - [29]
L2IBPED2Typo - [30]
HUUZFPPKFix race between the queue monitor and the builder threads - [31]
NAYQT2GThydra-queue-runner: Use cmdBuildDerivation - [32]
3BKPZ52CDisambiguate "marking build as succeeded" message - [33]
WE5Q2NVIAllow build to be bumped to the front of the queue via the web interface - [34]
4YCF3KBGConcurrent hydra-evaluator - [35]
EPWEMRI2Allow determinism checking for entire jobsets - [36]
LJILHOJ7Create BuildSteps race-free - [37]
ACBS7C6Qhydra-queue-runner: Detect changes to the scheduling shares - [38]
FITVNQ2SKeep track of the time we spend copying to/from build machines - [39]
24BMQDZAStart of single-process hydra-queue-runner - [40]
YTAYNN7VQueue monitor: Bail out earlier if a step has failed previously - [41]
B7ENVLRShydra-queue-runner: Make build notification more reliable - [42]
WHULPA6SHandle failure with output - [43]
BG6PEOB2Make the output size limit configurable - [44]
P6EWEJHLhydra-evaluator: Allow setting the maximum number of concurrent evaluations - [45]
HPJKBFZ4Handle concurrent finishing of the same build - [46]
KBZHIGLGRecord the machine used for a build step - [47]
GKZN4UV7Make the queue monitor more robust, and better debug output - [48]
MSIHMO45Tweak build steps - [49]
TPNHTE5VRemove obsolete Builds columns and provide accurate "Running builds" - [50]
VQISTKOPhydra-queue-runner: Use substitutes - [51]
T5BIOVJEAdd support for tracking custom metrics - [52]
32KJOERMTurn hydra-notify into a daemon - [53]
5AIYUMTBBasic remote building - [54]
NTEDD7T4Provide a plugin hook for when build steps finish - [55]
MHVIT4JYSplit hydra-queue-runner.cc more - [56]
LENA4O2VPeriodically close RemoteStore connections - [57]
ZM6WYVL7hydra-evaluator: Set jobset error if hydra-eval-jobset dies - [58]
RND7XFNHgetQueuedBuilds(): Periodically stop to handle priority bumps - [59]
PLOZBRTRAdd command ‘hydra-queue-runner --status’ to show current status
Change contents
- replacement in src/hydra-evaluator/hydra-evaluator.cc at line 62
auto res = txn.parameterizedauto res = txn.exec - replacement in src/hydra-evaluator/hydra-evaluator.cc at line 64
"where j.enabled != 0 and p.enabled != 0").exec();"where j.enabled != 0 and p.enabled != 0"); - replacement in src/hydra-evaluator/hydra-evaluator.cc at line 110
txn.parameterized("update Jobsets set startTime = $1 where project = $2 and name = $3")(now)(jobset.name.first)(jobset.name.second).exec();txn.exec_params0("update Jobsets set startTime = $1 where project = $2 and name = $3",now,jobset.name.first,jobset.name.second); - replacement in src/hydra-evaluator/hydra-evaluator.cc at line 268[10.1993]→[10.1993:2039](∅→∅),[10.2039]→[5.0:162](∅→∅),[5.162]→[10.2200:2346](∅→∅),[10.2200]→[10.2200:2346](∅→∅)
txn.parameterized("update Jobsets set triggerTime = null where project = $1 and name = $2 and startTime is not null and triggerTime <= startTime")(jobset.name.first)(jobset.name.second).exec();txn.exec_params0("update Jobsets set triggerTime = null where project = $1 and name = $2 and startTime is not null and triggerTime <= startTime",jobset.name.first,jobset.name.second); - replacement in src/hydra-evaluator/hydra-evaluator.cc at line 274
txn.parameterized("update Jobsets set startTime = null where project = $1 and name = $2")(jobset.name.first)(jobset.name.second).exec();txn.exec_params0("update Jobsets set startTime = null where project = $1 and name = $2",jobset.name.first,jobset.name.second); - replacement in src/hydra-evaluator/hydra-evaluator.cc at line 280[10.225]→[10.225:275](∅→∅),[10.275]→[10.2701:2867](∅→∅),[10.2867]→[10.364:447](∅→∅),[10.364]→[10.364:447](∅→∅),[10.447]→[10.2868:3023](∅→∅),[10.3023]→[10.493:538](∅→∅),[10.493]→[10.493:538](∅→∅)
txn.parameterized("update Jobsets set errorMsg = $1, lastCheckedTime = $2, errorTime = $2, fetchErrorMsg = null where project = $3 and name = $4")(fmt("evaluation %s", statusToString(status)))(now)(jobset.name.first)(jobset.name.second).exec();txn.exec_params0("update Jobsets set errorMsg = $1, lastCheckedTime = $2, errorTime = $2, fetchErrorMsg = null where project = $3 and name = $4",fmt("evaluation %s", statusToString(status)),now,jobset.name.first,jobset.name.second); - replacement in src/hydra-evaluator/hydra-evaluator.cc at line 310
txn.parameterized("update Jobsets set startTime = null").exec();txn.exec("update Jobsets set startTime = null"); - replacement in src/hydra-queue-runner/builder.cc at line 427[10.12489]→[10.12489:12527](∅→∅),[10.12527]→[10.0:190](∅→∅),[10.184]→[10.12696:12733](∅→∅),[10.190]→[10.12696:12733](∅→∅),[10.12696]→[10.12696:12733](∅→∅),[10.12733]→[10.3520:3660](∅→∅),[10.3660]→[10.12855:12940](∅→∅),[10.12855]→[10.12855:12940](∅→∅),[10.12940]→[10.3661:3740](∅→∅)
txn.parameterized("update Builds set finished = 1, buildStatus = $2, startTime = $3, stopTime = $4, isCachedBuild = $5, notificationPendingSince = $4 where id = $1 and finished = 0")(build2->id)((int) (build2->drvPath != step->drvPath && result.buildStatus() == bsFailed ? bsDepFailed : result.buildStatus()))(result.startTime)(result.stopTime)(result.stepStatus == bsCachedFailure ? 1 : 0).exec();txn.exec_params0("update Builds set finished = 1, buildStatus = $2, startTime = $3, stopTime = $4, isCachedBuild = $5, notificationPendingSince = $4 where id = $1 and finished = 0",build2->id,(int) (build2->drvPath != step->drvPath && result.buildStatus() == bsFailed ? bsDepFailed : result.buildStatus()),result.startTime,result.stopTime,result.stepStatus == bsCachedFailure ? 1 : 0); - replacement in src/hydra-queue-runner/builder.cc at line 441
txn.parameterized("insert into FailedPaths values ($1)")(path).exec();txn.exec_params0("insert into FailedPaths values ($1)", path); - edit in src/hydra-queue-runner/hydra-queue-runner.cc at line 3
#include <optional> - replacement in src/hydra-queue-runner/hydra-queue-runner.cc at line 230[10.268]→[10.0:22](∅→∅),[10.447]→[10.0:22](∅→∅),[10.7845]→[10.0:22](∅→∅),[10.22]→[8.813:900](∅→∅),[8.900]→[10.425:451](∅→∅),[10.7964]→[10.425:451](∅→∅),[10.451]→[10.50:92](∅→∅),[10.50]→[10.50:92](∅→∅)
txn.parameterized("update BuildSteps set busy = 0, status = $1, stopTime = $2 where busy != 0")((int) bsAborted)(stopTime, stopTime != 0).exec();txn.exec_params0("update BuildSteps set busy = 0, status = $1, stopTime = $2 where busy != 0",(int) bsAborted,stopTime != 0 ? std::make_optional(stopTime) : std::nullopt); - replacement in src/hydra-queue-runner/hydra-queue-runner.cc at line 240
auto res = txn.parameterized("select max(stepnr) from BuildSteps where build = $1")(buildId).exec();return res[0][0].is_null() ? 1 : res[0][0].as<int>() + 1;auto res = txn.exec_params1("select max(stepnr) from BuildSteps where build = $1", buildId);return res[0].is_null() ? 1 : res[0].as<int>() + 1; - replacement in src/hydra-queue-runner/hydra-queue-runner.cc at line 251[10.8432]→[7.11:268](∅→∅),[7.268]→[10.2963:2981](∅→∅),[10.578]→[10.2963:2981](∅→∅),[10.2981]→[10.405:470](∅→∅),[10.405]→[10.405:470](∅→∅),[10.470]→[10.560:595](∅→∅),[10.506]→[10.73:138](∅→∅),[10.595]→[10.73:138](∅→∅),[10.73]→[10.73:138](∅→∅),[10.138]→[10.596:637](∅→∅),[10.637]→[10.262:343](∅→∅),[10.262]→[10.262:343](∅→∅),[10.343]→[10.638:694](∅→∅),[10.196]→[10.49:75](∅→∅),[10.694]→[10.49:75](∅→∅),[10.618]→[10.49:75](∅→∅)
auto r = txn.parameterized("insert into BuildSteps (build, stepnr, type, drvPath, busy, startTime, system, status, propagatedFrom, errorMsg, stopTime, machine) values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) on conflict do nothing")(buildId)(stepNr)(0) // == build(step->drvPath)(status == bsBusy ? 1 : 0)(startTime, startTime != 0)(step->drv.platform)((int) status, status != bsBusy)(propagatedFrom, propagatedFrom != 0)(errorMsg, errorMsg != "")(startTime, startTime != 0 && status != bsBusy)(machine).exec();auto r = txn.exec_params("insert into BuildSteps (build, stepnr, type, drvPath, busy, startTime, system, status, propagatedFrom, errorMsg, stopTime, machine) values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) on conflict do nothing",buildId,stepNr,0, // == buildstep->drvPath,status == bsBusy ? 1 : 0,startTime != 0 ? std::make_optional(startTime) : std::nullopt,step->drv.platform,status != bsBusy ? std::make_optional((int) status) : std::nullopt,propagatedFrom != 0 ? std::make_optional(propagatedFrom) : std::nullopt, // internal::paramserrorMsg != "" ? std::make_optional(errorMsg) : std::nullopt,startTime != 0 && status != bsBusy ? std::make_optional(startTime) : std::nullopt,machine); - replacement in src/hydra-queue-runner/hydra-queue-runner.cc at line 269
txn.parameterized("insert into BuildStepOutputs (build, stepnr, name, path) values ($1, $2, $3, $4)")(buildId)(stepNr)(output.first)(output.second.path).exec();txn.exec_params0("insert into BuildStepOutputs (build, stepnr, name, path) values ($1, $2, $3, $4)",buildId, stepNr, output.first, output.second.path); - replacement in src/hydra-queue-runner/hydra-queue-runner.cc at line 282
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)if (txn.exec_params("update BuildSteps set busy = $1 where build = $2 and stepnr = $3 and busy != 0 and status is null",(int) stepState,buildId,stepNr).affected_rows() != 1) - replacement in src/hydra-queue-runner/hydra-queue-runner.cc at line 296[10.1496]→[10.391:413](∅→∅),[10.9600]→[10.391:413](∅→∅),[10.9438]→[10.391:413](∅→∅),[10.413]→[10.1497:1848](∅→∅),[10.1848]→[10.1316:1349](∅→∅),[10.973]→[10.1316:1349](∅→∅),[10.1349]→[10.1849:2024](∅→∅)
txn.parameterized("update BuildSteps set busy = 0, status = $1, errorMsg = $4, startTime = $5, stopTime = $6, machine = $7, overhead = $8, timesBuilt = $9, isNonDeterministic = $10 where build = $2 and stepnr = $3")((int) result.stepStatus)(buildId)(stepNr)(result.errorMsg, result.errorMsg != "")(result.startTime)(result.stopTime)(machine, machine != "")(result.overhead, result.overhead != 0)(result.timesBuilt, result.timesBuilt > 0)(result.isNonDeterministic, result.timesBuilt > 1).exec();txn.exec_params0("update BuildSteps set busy = 0, status = $1, errorMsg = $4, startTime = $5, stopTime = $6, machine = $7, overhead = $8, timesBuilt = $9, isNonDeterministic = $10 where build = $2 and stepnr = $3",(int) result.stepStatus, buildId, stepNr,result.errorMsg != "" ? std::make_optional(result.errorMsg) : std::nullopt,result.startTime, result.stopTime,machine != "" ? std::make_optional(machine) : std::nullopt,result.overhead != 0 ? std::make_optional(result.overhead) : std::nullopt,result.timesBuilt > 0 ? std::make_optional(result.timesBuilt) : std::nullopt,result.timesBuilt > 1 ? std::make_optional(result.isNonDeterministic) : std::nullopt); - replacement in src/hydra-queue-runner/hydra-queue-runner.cc at line 317
auto r = txn.parameterized("insert into BuildSteps (build, stepnr, type, drvPath, busy, status, startTime, stopTime) values ($1, $2, $3, $4, $5, $6, $7, $8) on conflict do nothing")(build->id)(stepNr)(1) // == substitution(drvPath)(0)(0)(startTime)(stopTime).exec();auto r = txn.exec_params("insert into BuildSteps (build, stepnr, type, drvPath, busy, status, startTime, stopTime) values ($1, $2, $3, $4, $5, $6, $7, $8) on conflict do nothing",build->id,stepNr,1, // == substitutiondrvPath,0,0,startTime,stopTime); - replacement in src/hydra-queue-runner/hydra-queue-runner.cc at line 330
txn.parameterized("insert into BuildStepOutputs (build, stepnr, name, path) values ($1, $2, $3, $4)")(build->id)(stepNr)(outputName)(storePath).exec();txn.exec_params0("insert into BuildStepOutputs (build, stepnr, name, path) values ($1, $2, $3, $4)",build->id, stepNr, outputName, storePath); - replacement in src/hydra-queue-runner/hydra-queue-runner.cc at line 399
if (txn.parameterized("select 1 from Builds where id = $1 and finished = 0")(build->id).exec().empty()) return;if (txn.exec_params("select 1 from Builds where id = $1 and finished = 0", build->id).empty()) return; - replacement in src/hydra-queue-runner/hydra-queue-runner.cc at line 401[10.14684]→[10.578:600](∅→∅),[10.17826]→[10.578:600](∅→∅),[10.600]→[10.191:395](∅→∅),[10.183]→[10.18032:18052](∅→∅),[10.358]→[10.18032:18052](∅→∅),[10.395]→[10.18032:18052](∅→∅),[10.878]→[10.18032:18052](∅→∅),[10.1909]→[10.18032:18052](∅→∅),[10.18032]→[10.18032:18052](∅→∅),[10.18052]→[10.296:358](∅→∅),[10.358]→[10.18078:18136](∅→∅),[10.18078]→[10.18078:18136](∅→∅),[10.18136]→[10.601:716](∅→∅)
txn.parameterized("update Builds set finished = 1, buildStatus = $2, startTime = $3, stopTime = $4, size = $5, closureSize = $6, releaseName = $7, isCachedBuild = $8, notificationPendingSince = $4 where id = $1")(build->id)((int) (res.failed ? bsFailedWithOutput : bsSuccess))(startTime)(stopTime)(res.size)(res.closureSize)(res.releaseName, res.releaseName != "")(isCachedBuild ? 1 : 0).exec();txn.exec_params0("update Builds set finished = 1, buildStatus = $2, startTime = $3, stopTime = $4, size = $5, closureSize = $6, releaseName = $7, isCachedBuild = $8, notificationPendingSince = $4 where id = $1",build->id,(int) (res.failed ? bsFailedWithOutput : bsSuccess),startTime,stopTime,res.size,res.closureSize,res.releaseName != "" ? std::make_optional(res.releaseName) : std::nullopt,isCachedBuild ? 1 : 0); - replacement in src/hydra-queue-runner/hydra-queue-runner.cc at line 412
txn.parameterized("delete from BuildProducts where build = $1")(build->id).exec();txn.exec_params0("delete from BuildProducts where build = $1", build->id); - replacement in src/hydra-queue-runner/hydra-queue-runner.cc at line 416[10.18351]→[10.717:743](∅→∅),[10.743]→[10.18388:18647](∅→∅),[10.18388]→[10.18388:18647](∅→∅),[10.18647]→[10.744:824](∅→∅),[10.824]→[6.174:326](∅→∅),[6.326]→[10.18912:19008](∅→∅),[10.948]→[10.18912:19008](∅→∅),[10.18912]→[10.18912:19008](∅→∅)
txn.parameterized("insert into BuildProducts (build, productnr, type, subtype, fileSize, sha1hash, sha256hash, path, name, defaultPath) values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)")(build->id)(productNr++)(product.type)(product.subtype)(product.fileSize, product.isRegular)(product.sha1hash.to_string(Base16, false), product.isRegular)(product.sha256hash.to_string(Base16, false), product.isRegular)(product.path)(product.name)(product.defaultPath).exec();txn.exec_params0("insert into BuildProducts (build, productnr, type, subtype, fileSize, sha1hash, sha256hash, path, name, defaultPath) values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)",build->id,productNr++,product.type,product.subtype,product.isRegular ? std::make_optional(product.fileSize) : std::nullopt,product.isRegular ? std::make_optional(product.sha1hash.to_string(Base16, false)) : std::nullopt,product.isRegular ? std::make_optional(product.sha256hash.to_string(Base16, false)) : std::nullopt,product.path,product.name,product.defaultPath); - replacement in src/hydra-queue-runner/hydra-queue-runner.cc at line 430
txn.parameterized("delete from BuildMetrics where build = $1")(build->id).exec();txn.exec_params0("delete from BuildMetrics where build = $1", build->id); - replacement in src/hydra-queue-runner/hydra-queue-runner.cc at line 433
txn.parameterized("insert into BuildMetrics (build, name, unit, value, project, jobset, job, timestamp) values ($1, $2, $3, $4, $5, $6, $7, $8)")(build->id)(metric.second.name)(metric.second.unit, metric.second.unit != "")(metric.second.value)(build->projectName)(build->jobsetName)(build->jobName)(build->timestamp).exec();txn.exec_params0("insert into BuildMetrics (build, name, unit, value, project, jobset, job, timestamp) values ($1, $2, $3, $4, $5, $6, $7, $8)",build->id,metric.second.name,metric.second.unit != "" ? std::make_optional(metric.second.unit) : std::nullopt,metric.second.value,build->projectName,build->jobsetName,build->jobName,build->timestamp); - replacement in src/hydra-queue-runner/hydra-queue-runner.cc at line 453
if (!txn.parameterized("select 1 from FailedPaths where path = $1")(path).exec().empty())if (!txn.exec_params("select 1 from FailedPaths where path = $1", path).empty()) - replacement in src/hydra-queue-runner/hydra-queue-runner.cc at line 679
txn.parameterized("insert into SystemStatus values ('queue-runner', $1)")(out.str()).exec();txn.exec_params0("insert into SystemStatus values ('queue-runner', $1)", out.str()); - replacement in src/hydra-queue-runner/hydra-queue-runner.cc at line 809[10.1064]→[10.1064:1102](∅→∅),[10.1102]→[8.1335:1454](∅→∅),[8.1454]→[10.1220:1345](∅→∅),[10.1220]→[10.1220:1345](∅→∅)
txn.parameterized("update BuildSteps set busy = 0, status = $1 where build = $2 and stepnr = $3 and busy != 0")((int) bsAborted)(step.first)(step.second).exec();txn.exec_params0("update BuildSteps set busy = 0, status = $1 where build = $2 and stepnr = $3 and busy != 0",(int) bsAborted,step.first,step.second); - replacement in src/hydra-queue-runner/queue-monitor.cc at line 93
auto res = txn.parameterizedauto res = txn.exec_params - replacement in src/hydra-queue-runner/queue-monitor.cc at line 95
"where id > $1 and finished = 0 order by globalPriority desc, id")(lastBuildId).exec();"where id > $1 and finished = 0 order by globalPriority desc, id",lastBuildId); - replacement in src/hydra-queue-runner/queue-monitor.cc at line 140[10.23410]→[10.23410:23444](∅→∅),[10.23444]→[4.0:135](∅→∅),[4.135]→[10.23604:23674](∅→∅),[10.509]→[10.23604:23674](∅→∅),[10.23604]→[10.23604:23674](∅→∅),[10.23674]→[4.136:174](∅→∅)
txn.parameterized("update Builds set finished = 1, buildStatus = $2, startTime = $3, stopTime = $3 where id = $1 and finished = 0")(build->id)((int) bsAborted)(time(0)).exec();txn.exec_params0("update Builds set finished = 1, buildStatus = $2, startTime = $3, stopTime = $3 where id = $1 and finished = 0",build->id,(int) bsAborted,time(0)); - replacement in src/hydra-queue-runner/queue-monitor.cc at line 172
auto res = txn.parameterized("select max(build) from BuildSteps where drvPath = $1 and startTime != 0 and stopTime != 0 and status = 1")(ex.step->drvPath).exec();if (!res[0][0].is_null()) propagatedFrom = res[0][0].as<BuildID>();auto res = txn.exec_params1("select max(build) from BuildSteps where drvPath = $1 and startTime != 0 and stopTime != 0 and status = 1",ex.step->drvPath);if (!res[0].is_null()) propagatedFrom = res[0].as<BuildID>(); - replacement in src/hydra-queue-runner/queue-monitor.cc at line 179
auto res = txn.parameterized("select max(s.build) from BuildSteps s join BuildStepOutputs o on s.build = o.build where path = $1 and startTime != 0 and stopTime != 0 and status = 1")(output.second.path).exec();auto res = txn.exec_params("select max(s.build) from BuildSteps s join BuildStepOutputs o on s.build = o.build where path = $1 and startTime != 0 and stopTime != 0 and status = 1",output.second.path); - replacement in src/hydra-queue-runner/queue-monitor.cc at line 190
txn.parameterizedtxn.exec_params - replacement in src/hydra-queue-runner/queue-monitor.cc at line 192
"where id = $1 and finished = 0")(build->id)((int) (ex.step->drvPath == build->drvPath ? bsFailed : bsDepFailed))(time(0)).exec();"where id = $1 and finished = 0",build->id,(int) (ex.step->drvPath == build->drvPath ? bsFailed : bsDepFailed),time(0)); - replacement in src/hydra-queue-runner/queue-monitor.cc at line 557
auto res = txn.parameterized("select schedulingShares from Jobsets where project = $1 and name = $2")(projectName)(jobsetName).exec();auto res = txn.exec_params1("select schedulingShares from Jobsets where project = $1 and name = $2",projectName,jobsetName); - replacement in src/hydra-queue-runner/queue-monitor.cc at line 563
auto shares = res[0]["schedulingShares"].as<unsigned int>();auto shares = res["schedulingShares"].as<unsigned int>(); - replacement in src/hydra-queue-runner/queue-monitor.cc at line 569
res = txn.parameterizedauto res2 = txn.exec_params - replacement in src/hydra-queue-runner/queue-monitor.cc at line 571
"where s.startTime is not null and s.stopTime > $1 and project = $2 and jobset = $3")(time(0) - Jobset::schedulingWindow * 10)(projectName)(jobsetName).exec();for (auto const & row : res) {"where s.startTime is not null and s.stopTime > $1 and project = $2 and jobset = $3",time(0) - Jobset::schedulingWindow * 10,projectName,jobsetName);for (auto const & row : res2) { - replacement in src/hydra-queue-runner/queue-monitor.cc at line 609
auto r = txn.parameterizedauto r = txn.exec_params1 - replacement in src/hydra-queue-runner/queue-monitor.cc at line 612
"where finished = 1 and (buildStatus = 0 or buildStatus = 6) and path = $1")(output.second.path).exec();"where finished = 1 and (buildStatus = 0 or buildStatus = 6) and path = $1",output.second.path); - replacement in src/hydra-queue-runner/queue-monitor.cc at line 615
BuildID id = r[0][0].as<BuildID>();BuildID id = r[0].as<BuildID>(); - replacement in src/hydra-queue-runner/queue-monitor.cc at line 620
res.failed = r[0][1].as<int>() == bsFailedWithOutput;res.releaseName = r[0][2].is_null() ? "" : r[0][2].as<std::string>();res.closureSize = r[0][3].is_null() ? 0 : r[0][3].as<unsigned long long>();res.size = r[0][4].is_null() ? 0 : r[0][4].as<unsigned long long>();res.failed = r[1].as<int>() == bsFailedWithOutput;res.releaseName = r[2].is_null() ? "" : r[2].as<std::string>();res.closureSize = r[3].is_null() ? 0 : r[3].as<unsigned long long>();res.size = r[4].is_null() ? 0 : r[4].as<unsigned long long>(); - replacement in src/hydra-queue-runner/queue-monitor.cc at line 625
auto products = txn.parameterized("select type, subtype, fileSize, sha1hash, sha256hash, path, name, defaultPath from BuildProducts where build = $1 order by productnr")(id).exec();auto products = txn.exec_params("select type, subtype, fileSize, sha1hash, sha256hash, path, name, defaultPath from BuildProducts where build = $1 order by productnr",id); - replacement in src/hydra-queue-runner/queue-monitor.cc at line 651
auto metrics = txn.parameterized("select name, unit, value from BuildMetrics where build = $1")(id).exec();auto metrics = txn.exec_params("select name, unit, value from BuildMetrics where build = $1",id);