From 9f8f5e08a3a36244ce065d37eed70e046dba549e Mon Sep 17 00:00:00 2001 From: Nikitin Aleksandr Date: Wed, 9 Apr 2025 14:44:27 +0300 Subject: [PATCH] =?UTF-8?q?=D1=81=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20DB.PingC?= =?UTF-8?q?ontext()?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- postgres_gorm/postgres_gorm.go | 17 +++++++++++++++-- postgres_pgx/postgres_pgx.go | 15 ++++++++++++++- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/postgres_gorm/postgres_gorm.go b/postgres_gorm/postgres_gorm.go index b1d455c7..2330afe0 100644 --- a/postgres_gorm/postgres_gorm.go +++ b/postgres_gorm/postgres_gorm.go @@ -440,7 +440,7 @@ func GetConnection_WithApplicationName(ApplicationName string) *gorm.DB { // ping_go - делает пинг каждые 60 секунд, и реконнект func ping_go() { - var err error + //var err error ticker := time.NewTicker(60 * time.Second) defer ticker.Stop() @@ -455,8 +455,21 @@ loop: log.Warn("Context app is canceled. postgres_gorm.ping") break loop case <-ticker.C: + //ping в базе данных + DB, err := Conn.DB() + if err != nil { + NeedReconnect = true + log.Error("Conn.DB() error: ", err) + } else { + err = DB.PingContext(contextmain.GetContext()) + if err != nil { + NeedReconnect = true + log.Error("DB.PingContext() error: ", err) + } + } + + //ping порта err = port_checker.CheckPort_err(Settings.DB_HOST, Settings.DB_PORT) - //log.Debug("ticker, ping err: ", err) //удалить if err != nil { NeedReconnect = true log.Warn("postgres_gorm CheckPort(", addr, ") error: ", err) diff --git a/postgres_pgx/postgres_pgx.go b/postgres_pgx/postgres_pgx.go index 07d31dec..7d58ba7a 100644 --- a/postgres_pgx/postgres_pgx.go +++ b/postgres_pgx/postgres_pgx.go @@ -361,8 +361,21 @@ loop: log.Warn("Context app is canceled. postgres_pgx.ping") break loop case <-ticker.C: + //IsClosed + if Conn.IsClosed() == true { + NeedReconnect = true + log.Error("postgres_pgx error: IsClosed() = true") + } + + //ping в базе данных + err = Conn.Ping(contextmain.GetContext()) + if err != nil { + NeedReconnect = true + log.Error("postgres_pgx Ping() error: ", err) + } + + //ping порта err = port_checker.CheckPort_err(Settings.DB_HOST, Settings.DB_PORT) - //log.Debug("ticker, ping err: ", err) //удалить if err != nil { NeedReconnect = true log.Warn("postgres_pgx CheckPort(", addr, ") error: ", err)