Use state_change for measuring elapsed time

This commit is contained in:
Julien Riou 2018-06-11 21:02:24 +02:00
parent bb7ddf2bc5
commit 3a89201a94
No known key found for this signature in database
GPG key ID: BA3E15176E45E85D
3 changed files with 35 additions and 40 deletions

View file

@ -67,11 +67,11 @@ func (t *Terminator) terminate() {
}
// activeSessions returns a list of active sessions
// A session is active when state is "active" and backend has started before elapsed
// A session is active when state is "active" and state has changed before elapsed seconds
// seconds
func activeSessions(sessions []base.Session, elapsed float64) (result []base.Session) {
for _, session := range sessions {
if session.State == "active" && session.QueryDuration > elapsed {
if session.State == "active" && session.StateDuration > elapsed {
result = append(result, session)
}
}
@ -79,14 +79,11 @@ func activeSessions(sessions []base.Session, elapsed float64) (result []base.Ses
}
// idleSessions returns a list of idle sessions
// A sessions is idle when state is "idle" and backend has started before elapsed seconds
// and when state is "idle in transaction" or "idle in transaction (aborted)" and
// transaction has started before elapsed seconds
// A sessions is idle when state is "idle", "idle in transaction" or "idle in transaction
// (aborted)"and state has changed before elapsed seconds
func idleSessions(sessions []base.Session, elapsed float64) (result []base.Session) {
for _, session := range sessions {
if session.State == "idle" && session.BackendDuration > elapsed {
result = append(result, session)
} else if (session.State == "idle in transaction" || session.State == "idle in transaction (aborted)") && session.XactDuration > elapsed {
if session.IsIdle() && session.StateDuration > elapsed {
result = append(result, session)
}
}