1
0
mirror of https://github.com/ManyakRus/starter.git synced 2025-11-27 23:18:34 +02:00

сделал mutexReconnect.RLock() //race

This commit is contained in:
Nikitin Aleksandr
2025-04-29 09:52:18 +03:00
parent 7121601717
commit 10493066cb

View File

@@ -32,7 +32,7 @@ import (
var Conn *pgx.Conn var Conn *pgx.Conn
// mutexReconnect - защита от многопоточности Reconnect() // mutexReconnect - защита от многопоточности Reconnect()
var mutexReconnect = &sync.Mutex{} var mutexReconnect = &sync.RWMutex{}
// Settings хранит все нужные переменные окружения // Settings хранит все нужные переменные окружения
var Settings SettingsINI var Settings SettingsINI
@@ -230,6 +230,10 @@ func CloseConnection_err() error {
ctxMain := contextmain.GetContext() ctxMain := contextmain.GetContext()
ctx, cancel := context.WithTimeout(ctxMain, 60*time.Second) ctx, cancel := context.WithTimeout(ctxMain, 60*time.Second)
defer cancel() defer cancel()
mutexReconnect.Lock()
defer mutexReconnect.Unlock()
err := Conn.Close(ctx) err := Conn.Close(ctx)
return err return err
@@ -356,17 +360,22 @@ func ping_go() {
addr := Settings.DB_HOST + ":" + Settings.DB_PORT addr := Settings.DB_HOST + ":" + Settings.DB_PORT
var ctx context.Context
//бесконечный цикл //бесконечный цикл
loop: loop:
for { for {
ctx = contextmain.GetContext()
select { select {
case <-contextmain.GetContext().Done(): case <-ctx.Done():
log.Warn("Context app is canceled. postgres_pgx.ping") log.Warn("Context app is canceled. postgres_pgx.ping")
break loop break loop
case <-ticker.C: case <-ticker.C:
//ping в базе данных //ping в базе данных
err = Conn.Ping(contextmain.GetContext()) mutexReconnect.RLock() //race
err = Conn.Ping(ctx)
mutexReconnect.RUnlock()
if err != nil { if err != nil {
switch err.Error() { switch err.Error() {
case TextConnBusy: case TextConnBusy: