Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Vladimir Barsukov
zdb
Commits
bf385ebd
Commit
bf385ebd
authored
May 20, 2023
by
Vladimir Barsukov
Browse files
save
parent
50b3df83
Pipeline
#39
canceled with stages
Changes
1
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
pool.go
View file @
bf385ebd
...
@@ -64,26 +64,26 @@ func (d *Pool) NewConn(mode connMode, pgConnString string) error {
...
@@ -64,26 +64,26 @@ func (d *Pool) NewConn(mode connMode, pgConnString string) error {
return
nil
return
nil
}
}
}
}
func
(
d
*
Pool
)
newConn
(
mode
connMode
,
pgConnString
string
)
(
c
*
conn
,
err
error
)
{
func
(
d
*
Pool
)
newConn
(
mode
connMode
,
pgConnString
string
)
(
q
*
conn
,
err
error
)
{
var
pool
*
pgxpool
.
Pool
var
p
gxP
ool
*
pgxpool
.
Pool
if
!
strings
.
Contains
(
pgConnString
,
"default_query_exec_mode="
)
{
if
!
strings
.
Contains
(
pgConnString
,
"default_query_exec_mode="
)
{
pgConnString
+=
" default_query_exec_mode=simple_protocol"
pgConnString
+=
" default_query_exec_mode=simple_protocol"
}
}
if
pool
,
err
=
pgxpool
.
New
(
d
.
ctx
,
pgConnString
);
err
!=
nil
{
if
p
gxP
ool
,
err
=
pgxpool
.
New
(
d
.
ctx
,
pgConnString
);
err
!=
nil
{
return
&
conn
{
Pool
:
pool
,
Alive
:
false
,
Mode
:
mode
},
err
return
&
conn
{
Pool
:
p
gxP
ool
,
Alive
:
false
,
Mode
:
mode
},
err
}
}
c
=
&
conn
{
Pool
:
pool
,
Alive
:
false
,
Mode
:
mode
}
q
=
&
conn
{
Pool
:
p
gxP
ool
,
Alive
:
false
,
Mode
:
mode
}
if
err
=
d
.
testConn
(
c
);
err
!=
nil
{
if
err
=
d
.
testConn
(
q
);
err
!=
nil
{
return
c
,
err
return
q
,
err
}
}
c
.
Alive
=
true
q
.
Alive
=
true
return
c
,
nil
return
q
,
nil
}
}
func
(
d
*
Pool
)
slave
()
*
conn
{
func
(
d
*
Pool
)
slave
()
*
conn
{
...
@@ -110,21 +110,21 @@ func (d *Pool) slaveAsync() *conn {
...
@@ -110,21 +110,21 @@ func (d *Pool) slaveAsync() *conn {
func
(
d
*
Pool
)
execWrapper
(
pool
connMode
,
dst
any
,
f
func
(
conn
*
conn
,
dst1
any
)
error
)
error
{
func
(
d
*
Pool
)
execWrapper
(
pool
connMode
,
dst
any
,
f
func
(
conn
*
conn
,
dst1
any
)
error
)
error
{
for
{
for
{
var
c
*
conn
var
q
*
conn
if
pool
==
ConnModeSync
{
if
pool
==
ConnModeSync
{
c
=
d
.
slave
()
q
=
d
.
slave
()
}
else
{
}
else
{
c
=
d
.
slaveAsync
()
q
=
d
.
slaveAsync
()
}
}
if
err
:=
f
(
c
,
dst
);
err
!=
nil
{
if
err
:=
f
(
q
,
dst
);
err
!=
nil
{
if
c
.
Mode
==
ConnModeMaster
{
if
q
.
Mode
==
ConnModeMaster
{
return
err
return
err
}
else
{
}
else
{
if
strings
.
Contains
(
err
.
Error
(),
"connect"
)
||
strings
.
Contains
(
err
.
Error
(),
"EOF"
)
{
if
strings
.
Contains
(
err
.
Error
(),
"connect"
)
||
strings
.
Contains
(
err
.
Error
(),
"EOF"
)
{
d
.
logger
.
Printf
(
"DB_EXEC_WRAPPER_ERR: %s"
,
err
.
Error
())
d
.
logger
.
Printf
(
"DB_EXEC_WRAPPER_ERR: %s"
,
err
.
Error
())
d
.
setNotAliveConn
(
c
)
d
.
setNotAliveConn
(
q
)
continue
continue
}
else
{
}
else
{
return
err
return
err
...
@@ -178,15 +178,15 @@ func (d *Pool) setNotAliveConn(conn *conn) {
...
@@ -178,15 +178,15 @@ func (d *Pool) setNotAliveConn(conn *conn) {
func
(
d
*
Pool
)
Test
()
{
func
(
d
*
Pool
)
Test
()
{
go
func
()
{
go
func
()
{
for
{
for
{
for
i
,
p
:=
range
d
.
notAliveConns
{
for
i
,
q
:=
range
d
.
notAliveConns
{
if
err
:=
d
.
testConn
(
p
);
err
==
nil
{
if
err
:=
d
.
testConn
(
q
);
err
==
nil
{
d
.
mu
.
Lock
()
d
.
mu
.
Lock
()
p
.
Alive
=
true
q
.
Alive
=
true
d
.
notAliveConns
=
remove
(
d
.
notAliveConns
,
i
)
d
.
notAliveConns
=
remove
(
d
.
notAliveConns
,
i
)
if
p
.
Mode
==
ConnModeSync
{
if
q
.
Mode
==
ConnModeSync
{
d
.
srvSlaves
=
append
(
d
.
srvSlaves
,
p
)
d
.
srvSlaves
=
append
(
d
.
srvSlaves
,
q
)
}
else
if
p
.
Mode
==
ConnModeAsync
{
}
else
if
q
.
Mode
==
ConnModeAsync
{
d
.
srvSlavesAsync
=
append
(
d
.
srvSlavesAsync
,
p
)
d
.
srvSlavesAsync
=
append
(
d
.
srvSlavesAsync
,
q
)
}
}
d
.
mu
.
Unlock
()
d
.
mu
.
Unlock
()
}
}
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment