@@ -37,6 +37,7 @@ import (
37
37
// @x-apidocgen {"skip": true}
38
38
func (api * API ) workspaceAgentRPC (rw http.ResponseWriter , r * http.Request ) {
39
39
ctx := r .Context ()
40
+ logger := api .Logger .Named ("agentrpc" )
40
41
41
42
version := r .URL .Query ().Get ("version" )
42
43
if version == "" {
@@ -61,7 +62,7 @@ func (api *API) workspaceAgentRPC(rw http.ResponseWriter, r *http.Request) {
61
62
defer api .WebsocketWaitGroup .Done ()
62
63
workspaceAgent := httpmw .WorkspaceAgent (r )
63
64
64
- build , ok := ensureLatestBuild (ctx , api .Database , api . Logger , rw , workspaceAgent )
65
+ build , ok := ensureLatestBuild (ctx , api .Database , logger , rw , workspaceAgent )
65
66
if ! ok {
66
67
return
67
68
}
@@ -84,6 +85,12 @@ func (api *API) workspaceAgentRPC(rw http.ResponseWriter, r *http.Request) {
84
85
return
85
86
}
86
87
88
+ logger = logger .With (
89
+ slog .F ("owner" , owner .Username ),
90
+ slog .F ("workspace_name" , workspace .Name ),
91
+ slog .F ("agent_name" , workspaceAgent .Name ),
92
+ )
93
+
87
94
conn , err := websocket .Accept (rw , r , nil )
88
95
if err != nil {
89
96
httpapi .Write (ctx , rw , http .StatusBadRequest , codersdk.Response {
@@ -96,7 +103,11 @@ func (api *API) workspaceAgentRPC(rw http.ResponseWriter, r *http.Request) {
96
103
ctx , wsNetConn := websocketNetConn (ctx , conn , websocket .MessageBinary )
97
104
defer wsNetConn .Close ()
98
105
99
- mux , err := yamux .Server (wsNetConn , nil )
106
+ ycfg := yamux .DefaultConfig ()
107
+ ycfg .LogOutput = nil
108
+ ycfg .Logger = slog .Stdlib (ctx , logger .Named ("yamux" ), slog .LevelInfo )
109
+
110
+ mux , err := yamux .Server (wsNetConn , ycfg )
100
111
if err != nil {
101
112
httpapi .Write (ctx , rw , http .StatusBadRequest , codersdk.Response {
102
113
Message : "Failed to start yamux over websocket." ,
@@ -106,12 +117,7 @@ func (api *API) workspaceAgentRPC(rw http.ResponseWriter, r *http.Request) {
106
117
}
107
118
defer mux .Close ()
108
119
109
- api .Logger .Debug (ctx , "accepting agent RPC connection" ,
110
- slog .F ("owner" , owner .Username ),
111
- slog .F ("workspace" , workspace .Name ),
112
- slog .F ("name" , workspaceAgent .Name ),
113
- )
114
- api .Logger .Debug (ctx , "accepting agent details" , slog .F ("agent" , workspaceAgent ))
120
+ logger .Debug (ctx , "accepting agent RPC connection" , slog .F ("agent" , workspaceAgent ))
115
121
116
122
closeCtx , closeCtxCancel := context .WithCancel (ctx )
117
123
defer closeCtxCancel ()
@@ -122,7 +128,7 @@ func (api *API) workspaceAgentRPC(rw http.ResponseWriter, r *http.Request) {
122
128
AgentID : workspaceAgent .ID ,
123
129
124
130
Ctx : api .ctx ,
125
- Log : api . Logger ,
131
+ Log : logger ,
126
132
Database : api .Database ,
127
133
Pubsub : api .Pubsub ,
128
134
DerpMapFn : api .DERPMap ,
@@ -155,7 +161,7 @@ func (api *API) workspaceAgentRPC(rw http.ResponseWriter, r *http.Request) {
155
161
ctx = agentapi .WithAPIVersion (ctx , version )
156
162
err = agentAPI .Serve (ctx , mux )
157
163
if err != nil {
158
- api . Logger .Warn (ctx , "workspace agent RPC listen error" , slog .Error (err ))
164
+ logger .Warn (ctx , "workspace agent RPC listen error" , slog .Error (err ))
159
165
_ = conn .Close (websocket .StatusInternalError , err .Error ())
160
166
return
161
167
}
0 commit comments