Skip to content

Commit c78d2ed

Browse files
committed
RHINENG-25597: lock out manager as well
(migrations are running as admin)
1 parent 49ff16b commit c78d2ed

1 file changed

Lines changed: 13 additions & 10 deletions

File tree

database_admin/update.go

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,15 @@ import (
55
"database/sql"
66
"fmt"
77
"os"
8+
"strings"
89
"time"
910

1011
"github.com/golang-migrate/migrate/v4/database"
1112
log "github.com/sirupsen/logrus"
1213
)
1314

15+
var lockUsers = []string{"listener", "evaluator", "manager", "vmaas_sync"}
16+
1417
func execOrPanic(db *sql.DB, query string, args ...interface{}) {
1518
if _, err := db.Exec(query, args...); err != nil {
1619
panic(err)
@@ -35,19 +38,19 @@ func releaseAdvisoryLock(db *sql.DB) {
3538
execOrPanic(db, "SELECT pg_advisory_unlock(123)")
3639
}
3740

38-
// Wait for closing of all "listener", "evaluator" and "vmaas_sync" database sessions.
41+
// Wait for closing of all lockUsers database sessions.
3942
func waitForSessionClosed(db *sql.DB) {
4043
for {
4144
session := ""
4245
err := db.QueryRow(
43-
"SELECT usename || ' ' || substring(query for 50) FROM pg_stat_activity WHERE " +
44-
"usename IN ('evaluator', 'listener', 'vmaas_sync') LIMIT 30;",
46+
"SELECT usename || ' ' || substring(query for 50) FROM pg_stat_activity WHERE "+
47+
"usename IN (?) LIMIT 30;", lockUsers,
4548
).Scan(&session)
4649
if err != nil {
4750
log.Info(err)
4851
}
4952
if session == "" {
50-
log.Info("No 'listener', 'evaluator', 'vmaas_sync' sessions found")
53+
log.Info("No ", strings.Join(lockUsers, ", "), " sessions found")
5154
return
5255
}
5356
utils.LogInfo("session:", session, "Session found")
@@ -66,15 +69,15 @@ func setPgEnv() {
6669
}
6770

6871
func blockUsers(db *sql.DB) {
69-
execOrPanic(db, "ALTER USER listener NOLOGIN")
70-
execOrPanic(db, "ALTER USER evaluator NOLOGIN")
71-
execOrPanic(db, "ALTER USER vmaas_sync NOLOGIN")
72+
for _, user := range lockUsers {
73+
execOrPanic(db, "ALTER USER "+user+" NOLOGIN")
74+
}
7275
}
7376

7477
func unblockUsers(db *sql.DB) {
75-
execOrPanic(db, "ALTER USER listener LOGIN")
76-
execOrPanic(db, "ALTER USER evaluator LOGIN")
77-
execOrPanic(db, "ALTER USER vmaas_sync LOGIN")
78+
for _, user := range lockUsers {
79+
execOrPanic(db, "ALTER USER "+user+" LOGIN")
80+
}
7881
}
7982

8083
func startMigration(conn database.Driver, db *sql.DB, migrationFilesURL string) {

0 commit comments

Comments
 (0)