Skip to content

Commit 3fd0d39

Browse files
committed
Handle deferred errors and define findCtx in main
1 parent 2a73974 commit 3fd0d39

File tree

1 file changed

+22
-14
lines changed

1 file changed

+22
-14
lines changed

internal/cmd/perfcomp/main.go

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -125,8 +125,16 @@ func main() {
125125
log.Fatalf("Error connecting client: %v", err)
126126
}
127127

128+
defer func() { // Defer disconnect client
129+
err = client.Disconnect(context.Background())
130+
if err != nil {
131+
log.Fatalf("Failed to disconnect client: %v", err)
132+
}
133+
}()
134+
128135
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
129136
defer cancel()
137+
130138
err = client.Ping(ctx, nil)
131139
if err != nil {
132140
log.Fatalf("Error pinging MongoDB Analytics: %v", err)
@@ -136,7 +144,11 @@ func main() {
136144
db := client.Database(expandedMetricsDB)
137145

138146
// Get raw data, most recent stable region, and calculate energy stats
139-
patchRawData, err := findRawData(version, db.Collection(rawResultsColl))
147+
148+
findCtx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
149+
defer cancel()
150+
151+
patchRawData, err := findRawData(findCtx, version, db.Collection(rawResultsColl))
140152
if err != nil {
141153
log.Fatalf("Error getting raw data: %v", err)
142154
}
@@ -146,39 +158,35 @@ func main() {
146158
log.Fatalf("Error getting energy statistics: %v", err)
147159
}
148160
log.Println(generatePRComment(allEnergyStats, version))
149-
150-
// Disconnect client
151-
err = client.Disconnect(context.Background())
152-
if err != nil {
153-
log.Fatalf("Failed to disconnect client: %v", err)
154-
}
155161
}
156162

157-
func findRawData(version string, coll *mongo.Collection) ([]RawData, error) {
163+
func findRawData(ctx context.Context, version string, coll *mongo.Collection) ([]RawData, error) {
158164
filter := bson.D{
159165
{"info.project", "mongo-go-driver"},
160166
{"info.version", version},
161167
{"info.variant", "perf"},
162168
{"info.task_name", "perf"},
163169
}
164170

165-
findCtx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
166-
defer cancel()
167-
168-
cursor, err := coll.Find(findCtx, filter)
171+
cursor, err := coll.Find(ctx, filter)
169172
if err != nil {
170173
log.Fatalf(
171174
"Error retrieving raw data for version %q: %v",
172175
version,
173176
err,
174177
)
175178
}
176-
defer func() { err = cursor.Close(findCtx) }()
179+
defer func() {
180+
err = cursor.Close(ctx)
181+
if err != nil {
182+
log.Fatalf("Error closing cursor while retrieving raw data for version %q: %v", version, err)
183+
}
184+
}()
177185

178186
log.Printf("Successfully retrieved %d docs from version %s.\n", cursor.RemainingBatchLength(), version)
179187

180188
var rawData []RawData
181-
err = cursor.All(findCtx, &rawData)
189+
err = cursor.All(ctx, &rawData)
182190
if err != nil {
183191
log.Fatalf(
184192
"Error decoding raw data from version %q: %v",

0 commit comments

Comments
 (0)