Skip to content

Commit ba15023

Browse files
committed
fix: add DB connection retry loop for Docker compose startup ordering
Signed-off-by: slayerjain <shubhamkjain@outlook.com>
1 parent 9df2994 commit ba15023

1 file changed

Lines changed: 12 additions & 3 deletions

File tree

ps-cache-postgres/main.go

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"os"
1010
"strconv"
1111
"sync"
12+
"time"
1213

1314
"github.com/jackc/pgx/v5/pgxpool"
1415
)
@@ -20,9 +21,17 @@ var (
2021

2122
func main() {
2223
var err error
23-
pool, err = newPool(context.Background())
24+
// Retry connection for up to 30s to handle Docker compose startup ordering
25+
for i := 0; i < 30; i++ {
26+
pool, err = newPool(context.Background())
27+
if err == nil {
28+
break
29+
}
30+
log.Printf("waiting for database (%d/30): %v", i+1, err)
31+
time.Sleep(time.Second)
32+
}
2433
if err != nil {
25-
log.Fatalf("failed to create pool (check DATABASE_URL and ensure Postgres is reachable): %v", err)
34+
log.Fatalf("failed to create pool after 30s: %v", err)
2635
}
2736
defer pool.Close()
2837

@@ -40,7 +49,7 @@ func main() {
4049
}
4150
log.Printf("listening on :%s", port)
4251
if err := http.ListenAndServe(":"+port, nil); err != nil {
43-
log.Fatalf("server failed (check if port %s is already in use): %v", port, err)
52+
log.Fatalf("server failed: %v", port, err)
4453
}
4554
}
4655

0 commit comments

Comments
 (0)