@@ -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+
1417func 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.
3942func 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
6871func 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
7477func 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
8083func startMigration (conn database.Driver , db * sql.DB , migrationFilesURL string ) {
0 commit comments