Skip to content

Commit 48801a1

Browse files
authored
fix: close connection on any return from azure-vnet-telemetry (#2711)
* move error handling code to defer * invert conditional * address linter issues * add close connection on telemetry unmarshal error unit test * Revert "add close connection on telemetry unmarshal error unit test" This reverts commit e8447f9.
1 parent b8677ff commit 48801a1

File tree

1 file changed

+48
-41
lines changed

1 file changed

+48
-41
lines changed

telemetry/telemetrybuffer.go

Lines changed: 48 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -116,55 +116,62 @@ func (tb *TelemetryBuffer) StartServer() error {
116116
tb.connections = append(tb.connections, conn)
117117
tb.mutex.Unlock()
118118
go func() {
119+
defer func() {
120+
var index int
121+
var value net.Conn
122+
var found bool
123+
124+
tb.mutex.Lock()
125+
defer tb.mutex.Unlock()
126+
127+
for index, value = range tb.connections {
128+
if value == conn {
129+
conn.Close()
130+
found = true
131+
break
132+
}
133+
}
134+
135+
if found {
136+
tb.connections = remove(tb.connections, index)
137+
}
138+
}()
139+
119140
for {
120141
reportStr, err := read(conn)
121-
if err == nil {
122-
var tmp map[string]interface{}
123-
err = json.Unmarshal(reportStr, &tmp)
142+
if err != nil {
143+
return
144+
}
145+
var tmp map[string]interface{}
146+
err = json.Unmarshal(reportStr, &tmp)
147+
if err != nil {
148+
if tb.logger != nil {
149+
tb.logger.Error("StartServer: unmarshal error", zap.Error(err))
150+
} else {
151+
log.Logf("StartServer: unmarshal error:%v", err)
152+
}
153+
return
154+
}
155+
if _, ok := tmp["CniSucceeded"]; ok {
156+
var cniReport CNIReport
157+
err = json.Unmarshal([]byte(reportStr), &cniReport)
124158
if err != nil {
125-
if tb.logger != nil {
126-
tb.logger.Error("StartServer: unmarshal error", zap.Error(err))
127-
} else {
128-
log.Logf("StartServer: unmarshal error:%v", err)
129-
}
130159
return
131160
}
132-
if _, ok := tmp["CniSucceeded"]; ok {
133-
var cniReport CNIReport
134-
json.Unmarshal([]byte(reportStr), &cniReport)
135-
tb.data <- cniReport
136-
} else if _, ok := tmp["Metric"]; ok {
137-
var aiMetric AIMetric
138-
json.Unmarshal([]byte(reportStr), &aiMetric)
139-
tb.data <- aiMetric
140-
} else {
141-
if tb.logger != nil {
142-
tb.logger.Info("StartServer: default", zap.Any("case", tmp))
143-
} else {
144-
log.Logf("StartServer: default case:%+v...", tmp)
145-
}
161+
tb.data <- cniReport
162+
} else if _, ok := tmp["Metric"]; ok {
163+
var aiMetric AIMetric
164+
err = json.Unmarshal([]byte(reportStr), &aiMetric)
165+
if err != nil {
166+
return
146167
}
168+
tb.data <- aiMetric
147169
} else {
148-
var index int
149-
var value net.Conn
150-
var found bool
151-
152-
tb.mutex.Lock()
153-
defer tb.mutex.Unlock()
154-
155-
for index, value = range tb.connections {
156-
if value == conn {
157-
conn.Close()
158-
found = true
159-
break
160-
}
161-
}
162-
163-
if found {
164-
tb.connections = remove(tb.connections, index)
170+
if tb.logger != nil {
171+
tb.logger.Info("StartServer: default", zap.Any("case", tmp))
172+
} else {
173+
log.Logf("StartServer: default case:%+v...", tmp)
165174
}
166-
167-
return
168175
}
169176
}
170177
}()

0 commit comments

Comments
 (0)