You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficcontrol.apache.org by da...@apache.org on 2018/07/12 20:44:42 UTC
[trafficcontrol] branch master updated: Fix TO database leak
This is an automated email from the ASF dual-hosted git repository.
dangogh pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficcontrol.git
The following commit(s) were added to refs/heads/master by this push:
new 57201d4 Fix TO database leak
57201d4 is described below
commit 57201d46998d6f2c43807c8de1c1f541cdc94686
Author: Robert Butts <ro...@apache.org>
AuthorDate: Thu Jul 12 09:18:08 2018 -0600
Fix TO database leak
Fixes a missing rows.Close(), by changing a Query() whose results
were unused to an Exec().
Also fixes a db Scan() error being ignored.
---
.../traffic_ops_golang/deliveryservice/servers/servers.go | 10 ++++++----
.../deliveryservicesregexes/deliveryservicesregexes.go | 3 +++
2 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/traffic_ops/traffic_ops_golang/deliveryservice/servers/servers.go b/traffic_ops/traffic_ops_golang/deliveryservice/servers/servers.go
index d1e3018..0c4cbec 100644
--- a/traffic_ops/traffic_ops_golang/deliveryservice/servers/servers.go
+++ b/traffic_ops/traffic_ops_golang/deliveryservice/servers/servers.go
@@ -521,10 +521,13 @@ func GetCreateHandler(db *sqlx.DB) http.HandlerFunc {
// the same transaction
for serverIds.Next() {
var serverId int
- err := serverIds.Scan(&serverId)
+ if err := serverIds.Scan(&serverId); err != nil {
+ log.Errorln("scanning for create delivery service servers: " + err.Error())
+ handleErrs(http.StatusInternalServerError, errors.New("scanning for create delivery service servers: "+err.Error()))
+ return
+ }
dtos := map[string]interface{}{"id": dsId, "server": serverId}
- resultRows, err := tx.NamedQuery(insertIdsQuery(), dtos)
- if err != nil {
+ if _, err := tx.NamedExec(insertIdsQuery(), dtos); err != nil {
if pqErr, ok := err.(*pq.Error); ok {
err, eType := dbhelpers.ParsePQUniqueConstraintError(pqErr)
log.Errorln("could not begin transaction: %v", err)
@@ -538,7 +541,6 @@ func GetCreateHandler(db *sqlx.DB) http.HandlerFunc {
log.Errorf("received non pq error: %++v from create execution", err)
return
}
- resultRows.Next()
}
err = tx.Commit()
diff --git a/traffic_ops/traffic_ops_golang/deliveryservicesregexes/deliveryservicesregexes.go b/traffic_ops/traffic_ops_golang/deliveryservicesregexes/deliveryservicesregexes.go
index 7016943..5b8caa0 100644
--- a/traffic_ops/traffic_ops_golang/deliveryservicesregexes/deliveryservicesregexes.go
+++ b/traffic_ops/traffic_ops_golang/deliveryservicesregexes/deliveryservicesregexes.go
@@ -58,6 +58,7 @@ JOIN type as rt ON r.type = rt.id
handleErrs(http.StatusInternalServerError, errors.New("querying: "+err.Error()))
return
}
+ defer rows.Close()
dsRegexes := map[tc.DeliveryServiceName][]tc.DeliveryServiceRegex{}
for rows.Next() {
// if (!$tenant_utils->is_ds_resource_accessible($tenants_data, $ds->tenant_id)) {
@@ -141,6 +142,7 @@ ORDER BY dsr.set_number ASC
handleErrs(http.StatusInternalServerError, errors.New("querying: "+err.Error()))
return
}
+ defer rows.Close()
regexes := []tc.DeliveryServiceIDRegex{}
for rows.Next() {
dsTenantID := 0
@@ -233,6 +235,7 @@ ORDER BY dsr.set_number ASC
handleErrs(http.StatusInternalServerError, errors.New("querying: "+err.Error()))
return
}
+ defer rows.Close()
regexes := []tc.DeliveryServiceIDRegex{}
for rows.Next() {
dsTenantID := 0