mirror of
https://github.com/coder/coder.git
synced 2025-07-13 21:36:50 +00:00
feat: add logging to client tailnet yamux (#11908)
Adds logging to yamux when used for tailnet client connections, e.g. CLI and wsproxy. This could be useful for debugging connection issues with tailnet v2 API.
This commit is contained in:
@ -436,7 +436,10 @@ func (tac *tailnetAPIConnector) dial() (proto.DRPCTailnetClient, error) {
|
|||||||
}
|
}
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
client, err := tailnet.NewDRPCClient(websocket.NetConn(tac.ctx, ws, websocket.MessageBinary))
|
client, err := tailnet.NewDRPCClient(
|
||||||
|
websocket.NetConn(tac.ctx, ws, websocket.MessageBinary),
|
||||||
|
tac.logger,
|
||||||
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
tac.logger.Debug(tac.ctx, "failed to create DRPCClient", slog.Error(err))
|
tac.logger.Debug(tac.ctx, "failed to create DRPCClient", slog.Error(err))
|
||||||
_ = ws.Close(websocket.StatusInternalError, "")
|
_ = ws.Close(websocket.StatusInternalError, "")
|
||||||
|
@ -458,7 +458,7 @@ func (c *Client) DialCoordinator(ctx context.Context) (agpl.MultiAgentConn, erro
|
|||||||
go httpapi.HeartbeatClose(ctx, logger, cancel, conn)
|
go httpapi.HeartbeatClose(ctx, logger, cancel, conn)
|
||||||
|
|
||||||
nc := websocket.NetConn(ctx, conn, websocket.MessageBinary)
|
nc := websocket.NetConn(ctx, conn, websocket.MessageBinary)
|
||||||
client, err := agpl.NewDRPCClient(nc)
|
client, err := agpl.NewDRPCClient(nc, logger)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Debug(ctx, "failed to create DRPCClient", slog.Error(err))
|
logger.Debug(ctx, "failed to create DRPCClient", slog.Error(err))
|
||||||
_ = conn.Close(websocket.StatusInternalError, "")
|
_ = conn.Close(websocket.StatusInternalError, "")
|
||||||
@ -488,7 +488,9 @@ func (c *Client) DialCoordinator(ctx context.Context) (agpl.MultiAgentConn, erro
|
|||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
<-ctx.Done()
|
<-ctx.Done()
|
||||||
ma.Close()
|
_ = ma.Close()
|
||||||
|
_ = client.DRPCConn().Close()
|
||||||
|
<-client.DRPCConn().Closed()
|
||||||
_ = conn.Close(websocket.StatusGoingAway, "closed")
|
_ = conn.Close(websocket.StatusGoingAway, "closed")
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
@ -1,19 +1,21 @@
|
|||||||
package tailnet
|
package tailnet
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"io"
|
"context"
|
||||||
"net"
|
"net"
|
||||||
|
|
||||||
"github.com/hashicorp/yamux"
|
"github.com/hashicorp/yamux"
|
||||||
"golang.org/x/xerrors"
|
"golang.org/x/xerrors"
|
||||||
|
|
||||||
|
"cdr.dev/slog"
|
||||||
"github.com/coder/coder/v2/codersdk/drpc"
|
"github.com/coder/coder/v2/codersdk/drpc"
|
||||||
"github.com/coder/coder/v2/tailnet/proto"
|
"github.com/coder/coder/v2/tailnet/proto"
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewDRPCClient(conn net.Conn) (proto.DRPCTailnetClient, error) {
|
func NewDRPCClient(conn net.Conn, logger slog.Logger) (proto.DRPCTailnetClient, error) {
|
||||||
config := yamux.DefaultConfig()
|
config := yamux.DefaultConfig()
|
||||||
config.LogOutput = io.Discard
|
config.LogOutput = nil
|
||||||
|
config.Logger = slog.Stdlib(context.Background(), logger, slog.LevelInfo)
|
||||||
session, err := yamux.Client(conn, config)
|
session, err := yamux.Client(conn, config)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, xerrors.Errorf("multiplex client: %w", err)
|
return nil, xerrors.Errorf("multiplex client: %w", err)
|
||||||
|
@ -464,7 +464,7 @@ func TestRemoteCoordination(t *testing.T) {
|
|||||||
serveErr <- err
|
serveErr <- err
|
||||||
}()
|
}()
|
||||||
|
|
||||||
client, err := tailnet.NewDRPCClient(cC)
|
client, err := tailnet.NewDRPCClient(cC, logger)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
protocol, err := client.Coordinate(ctx)
|
protocol, err := client.Coordinate(ctx)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
@ -51,7 +51,7 @@ func TestClientService_ServeClient_V2(t *testing.T) {
|
|||||||
errCh <- err
|
errCh <- err
|
||||||
}()
|
}()
|
||||||
|
|
||||||
client, err := tailnet.NewDRPCClient(c)
|
client, err := tailnet.NewDRPCClient(c, logger)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
// Coordinate
|
// Coordinate
|
||||||
|
Reference in New Issue
Block a user