Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 4ed1f55

Browse files
authoredFeb 1, 2024
chore(coderd): add logging to agent rpc yamux conn (#11965)
1 parent cc0dc10 commit 4ed1f55

File tree

2 files changed

+17
-11
lines changed

2 files changed

+17
-11
lines changed
 

‎coderd/files.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@ import (
1212
"io"
1313
"net/http"
1414

15-
"cdr.dev/slog"
1615
"github.com/go-chi/chi/v5"
1716
"github.com/google/uuid"
1817

18+
"cdr.dev/slog"
1919
"github.com/coder/coder/v2/coderd/database"
2020
"github.com/coder/coder/v2/coderd/database/dbtime"
2121
"github.com/coder/coder/v2/coderd/httpapi"

‎coderd/workspaceagentsrpc.go

+16-10
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ import (
3737
// @x-apidocgen {"skip": true}
3838
func (api *API) workspaceAgentRPC(rw http.ResponseWriter, r *http.Request) {
3939
ctx := r.Context()
40+
logger := api.Logger.Named("agentrpc")
4041

4142
version := r.URL.Query().Get("version")
4243
if version == "" {
@@ -61,7 +62,7 @@ func (api *API) workspaceAgentRPC(rw http.ResponseWriter, r *http.Request) {
6162
defer api.WebsocketWaitGroup.Done()
6263
workspaceAgent := httpmw.WorkspaceAgent(r)
6364

64-
build, ok := ensureLatestBuild(ctx, api.Database, api.Logger, rw, workspaceAgent)
65+
build, ok := ensureLatestBuild(ctx, api.Database, logger, rw, workspaceAgent)
6566
if !ok {
6667
return
6768
}
@@ -84,6 +85,12 @@ func (api *API) workspaceAgentRPC(rw http.ResponseWriter, r *http.Request) {
8485
return
8586
}
8687

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+
8794
conn, err := websocket.Accept(rw, r, nil)
8895
if err != nil {
8996
httpapi.Write(ctx, rw, http.StatusBadRequest, codersdk.Response{
@@ -96,7 +103,11 @@ func (api *API) workspaceAgentRPC(rw http.ResponseWriter, r *http.Request) {
96103
ctx, wsNetConn := websocketNetConn(ctx, conn, websocket.MessageBinary)
97104
defer wsNetConn.Close()
98105

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)
100111
if err != nil {
101112
httpapi.Write(ctx, rw, http.StatusBadRequest, codersdk.Response{
102113
Message: "Failed to start yamux over websocket.",
@@ -106,12 +117,7 @@ func (api *API) workspaceAgentRPC(rw http.ResponseWriter, r *http.Request) {
106117
}
107118
defer mux.Close()
108119

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))
115121

116122
closeCtx, closeCtxCancel := context.WithCancel(ctx)
117123
defer closeCtxCancel()
@@ -122,7 +128,7 @@ func (api *API) workspaceAgentRPC(rw http.ResponseWriter, r *http.Request) {
122128
AgentID: workspaceAgent.ID,
123129

124130
Ctx: api.ctx,
125-
Log: api.Logger,
131+
Log: logger,
126132
Database: api.Database,
127133
Pubsub: api.Pubsub,
128134
DerpMapFn: api.DERPMap,
@@ -155,7 +161,7 @@ func (api *API) workspaceAgentRPC(rw http.ResponseWriter, r *http.Request) {
155161
ctx = agentapi.WithAPIVersion(ctx, version)
156162
err = agentAPI.Serve(ctx, mux)
157163
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))
159165
_ = conn.Close(websocket.StatusInternalError, err.Error())
160166
return
161167
}

0 commit comments

Comments
 (0)
Failed to load comments.