return resp, err
}
+var containerPriorityUpdateInterval = 5 * time.Minute
+
// runContainerPriorityUpdateThread periodically (and immediately
// after each container update request) corrects any inconsistent
// container priorities caused by races.
func (conn *Conn) runContainerPriorityUpdateThread(ctx context.Context) {
ctx = ctrlctx.NewWithToken(ctx, conn.cluster, conn.cluster.SystemRootToken)
log := ctxlog.FromContext(ctx).WithField("worker", "runContainerPriorityUpdateThread")
- ticker := time.NewTicker(5 * time.Minute)
+ ticker := time.NewTicker(containerPriorityUpdateInterval)
for ctx.Err() == nil {
select {
case <-ticker.C:
err := db.QueryRowxContext(ctx, `
SELECT containers.uuid from containers
JOIN container_requests
- ON container_requests.container_uuid=containers.uuid
+ ON container_requests.container_uuid = containers.uuid
AND container_requests.state = 'Committed' AND container_requests.priority > 0
LEFT JOIN containers parent
ON parent.uuid = container_requests.requesting_container_uuid
WHERE containers.state IN ('Queued', 'Locked', 'Running')
AND containers.priority = 0
- AND container_requests.uuid IS NOT NULL
AND (parent.uuid IS NULL OR parent.priority > 0)
+ ORDER BY containers.created_at
LIMIT 1`).Scan(&uuid)
if err == sql.ErrNoRows {
break