changeset 133:f4523620ba5d

Close idle connections until there are only maxOpen connections open.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Thu, 28 Jun 2018 17:26:38 +0200
parents 61f86d069259
children 0c56c56a1c44 731fb359b29c 0fd572582ab8
files auth/connection.go
diffstat 1 files changed, 14 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/auth/connection.go	Thu Jun 28 17:18:29 2018 +0200
+++ b/auth/connection.go	Thu Jun 28 17:26:38 2018 +0200
@@ -161,20 +161,23 @@
 
 	conn.refCount--
 
-	least := time.Now()
-	var count int
-	var oldest *Connection
+	for {
+		least := time.Now()
+		var count int
+		var oldest *Connection
 
-	for _, con := range cp.conns {
-		if con.db != nil && con.refCount <= 0 {
-			if con.access.Before(least) {
-				least = con.access
-				oldest = con
+		for _, con := range cp.conns {
+			if con.db != nil && con.refCount <= 0 {
+				if con.access.Before(least) {
+					least = con.access
+					oldest = con
+				}
+				count++
 			}
-			count++
 		}
-	}
-	if count > maxOpen {
+		if count <= maxOpen {
+			break
+		}
 		oldest.close()
 	}
 }