Skip to content

Commit 38ffa07

Browse files
committed
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 7ab7294 commit 38ffa07

File tree

1 file changed

+41
-34
lines changed

1 file changed

+41
-34
lines changed

telemetry/telemetrybuffer.go

+41-34
Original file line numberDiff line numberDiff line change
@@ -103,47 +103,54 @@ func (tb *TelemetryBuffer) StartServer() error {
103103
tb.connections = append(tb.connections, conn)
104104
tb.mutex.Unlock()
105105
go func() {
106+
defer func() {
107+
var index int
108+
var value net.Conn
109+
var found bool
110+
111+
tb.mutex.Lock()
112+
defer tb.mutex.Unlock()
113+
114+
for index, value = range tb.connections {
115+
if value == conn {
116+
conn.Close()
117+
found = true
118+
break
119+
}
120+
}
121+
122+
if found {
123+
tb.connections = remove(tb.connections, index)
124+
}
125+
}()
126+
106127
for {
107128
reportStr, err := read(conn)
108-
if err == nil {
109-
var tmp map[string]interface{}
110-
err = json.Unmarshal(reportStr, &tmp)
129+
if err != nil {
130+
return
131+
}
132+
var tmp map[string]interface{}
133+
err = json.Unmarshal(reportStr, &tmp)
134+
if err != nil {
135+
log.Logf("StartServer: unmarshal error:%v", err)
136+
return
137+
}
138+
if _, ok := tmp["CniSucceeded"]; ok {
139+
var cniReport CNIReport
140+
err = json.Unmarshal([]byte(reportStr), &cniReport)
111141
if err != nil {
112-
log.Logf("StartServer: unmarshal error:%v", err)
113142
return
114143
}
115-
if _, ok := tmp["CniSucceeded"]; ok {
116-
var cniReport CNIReport
117-
json.Unmarshal([]byte(reportStr), &cniReport)
118-
tb.data <- cniReport
119-
} else if _, ok := tmp["Metric"]; ok {
120-
var aiMetric AIMetric
121-
json.Unmarshal([]byte(reportStr), &aiMetric)
122-
tb.data <- aiMetric
123-
} else {
124-
log.Logf("StartServer: default case:%+v...", tmp)
144+
tb.data <- cniReport
145+
} else if _, ok := tmp["Metric"]; ok {
146+
var aiMetric AIMetric
147+
err = json.Unmarshal([]byte(reportStr), &aiMetric)
148+
if err != nil {
149+
return
125150
}
151+
tb.data <- aiMetric
126152
} else {
127-
var index int
128-
var value net.Conn
129-
var found bool
130-
131-
tb.mutex.Lock()
132-
defer tb.mutex.Unlock()
133-
134-
for index, value = range tb.connections {
135-
if value == conn {
136-
conn.Close()
137-
found = true
138-
break
139-
}
140-
}
141-
142-
if found {
143-
tb.connections = remove(tb.connections, index)
144-
}
145-
146-
return
153+
log.Logf("StartServer: default case:%+v...", tmp)
147154
}
148155
}
149156
}()

0 commit comments

Comments
 (0)