@@ -757,18 +757,30 @@ func (api *API) workspaceAgentReportStats(rw http.ResponseWriter, r *http.Reques
757
757
758
758
// Allow overriding the stat interval for debugging and testing purposes.
759
759
timer := time .NewTicker (api .AgentStatsRefreshInterval )
760
- for {
761
- err := wsjson .Write (ctx , conn , codersdk.AgentStatsReportRequest {})
762
- if err != nil {
763
- api .Logger .Debug (ctx , "write report request" , slog .Error (err ))
764
- conn .Close (websocket .StatusInternalError , httpapi .WebsocketCloseSprintf ("write report request: %s" , err ))
765
- return
760
+ defer timer .Stop ()
761
+
762
+ go func () {
763
+ for {
764
+ err := wsjson .Write (ctx , conn , codersdk.AgentStatsReportRequest {})
765
+ if err != nil {
766
+ conn .Close (websocket .StatusInternalError , httpapi .WebsocketCloseSprintf ("write report request: %s" , err ))
767
+ return
768
+ }
769
+
770
+ select {
771
+ case <- timer .C :
772
+ continue
773
+ case <- ctx .Done ():
774
+ conn .Close (websocket .StatusNormalClosure , "" )
775
+ return
776
+ }
766
777
}
767
- var rep codersdk. AgentStatsReportResponse
778
+ }()
768
779
780
+ for {
781
+ var rep codersdk.AgentStatsReportResponse
769
782
err = wsjson .Read (ctx , conn , & rep )
770
783
if err != nil {
771
- api .Logger .Debug (ctx , "read report response" , slog .Error (err ))
772
784
conn .Close (websocket .StatusInternalError , httpapi .WebsocketCloseSprintf ("read report response: %s" , err ))
773
785
return
774
786
}
@@ -827,14 +839,6 @@ func (api *API) workspaceAgentReportStats(rw http.ResponseWriter, r *http.Reques
827
839
return
828
840
}
829
841
}
830
-
831
- select {
832
- case <- timer .C :
833
- continue
834
- case <- ctx .Done ():
835
- conn .Close (websocket .StatusNormalClosure , "" )
836
- return
837
- }
838
842
}
839
843
}
840
844
0 commit comments