internal/buildstats: Close bigquery and datastore clients after use
SyncBuilds and SyncSpans are invoked by cmd/coordinator/*
without invoking Close for the various bigquery and datastore
clients instantiations. In syncBuildStatsLoop, SyncSpans is
invoked in a [5min, 16min) loop, which will leave a bunch of
underlying resources and HTTP connections unclosed.
Change-Id: I8713c26c31daef3fc1b2c65a2d1bbfc74c8a63ba
Reviewed-on: https://go-review.googlesource.com/138695
Run-TryBot: Emmanuel Odeke <emm.odeke@gmail.com>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
diff --git a/internal/buildstats/buildstats.go b/internal/buildstats/buildstats.go
index 1b0995a..799744a 100644
--- a/internal/buildstats/buildstats.go
+++ b/internal/buildstats/buildstats.go
@@ -30,6 +30,8 @@
if err != nil {
return err
}
+ defer bq.Close()
+
buildsTable := bq.Dataset("builds").Table("Builds")
meta, err := buildsTable.Metadata(ctx)
if ae, ok := err.(*googleapi.Error); ok && ae.Code == 404 {
@@ -104,6 +106,7 @@
if err != nil {
return fmt.Errorf("datastore.NewClient: %v", err)
}
+ defer ds.Close()
up := buildsTable.Uploader()
@@ -176,6 +179,8 @@
if err != nil {
log.Fatal(err)
}
+ defer bq.Close()
+
table := bq.Dataset("builds").Table("Spans")
meta, err := table.Metadata(ctx)
if ae, ok := err.(*googleapi.Error); ok && ae.Code == 404 {
@@ -247,6 +252,7 @@
if err != nil {
return fmt.Errorf("datastore.NewClient: %v", err)
}
+ defer ds.Close()
up := table.Uploader()