Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 6fcd156

Browse files
committed
chore: remove legacy wsconncache
1 parent 4579eae commit 6fcd156

22 files changed

+36
-1241
lines changed

.vscode/settings.json

-1
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,6 @@
170170
"workspaceapps",
171171
"workspacebuilds",
172172
"workspacename",
173-
"wsconncache",
174173
"wsjson",
175174
"xerrors",
176175
"xlarge",

coderd/apidoc/docs.go

-49
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/apidoc/swagger.json

-45
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/coderd.go

-2
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,6 @@ import (
6565
"github.com/coder/coder/v2/coderd/updatecheck"
6666
"github.com/coder/coder/v2/coderd/util/slice"
6767
"github.com/coder/coder/v2/coderd/workspaceapps"
68-
"github.com/coder/coder/v2/coderd/wsconncache"
6968
"github.com/coder/coder/v2/codersdk"
7069
"github.com/coder/coder/v2/codersdk/drpc"
7170
"github.com/coder/coder/v2/provisionerd/proto"
@@ -481,7 +480,6 @@ func New(options *Options) *API {
481480
func(context.Context) (tailnet.MultiAgentConn, error) {
482481
return (*api.TailnetCoordinator.Load()).ServeMultiAgent(uuid.New()), nil
483482
},
484-
wsconncache.New(api._dialWorkspaceAgentTailnet, 0),
485483
api.TracerProvider,
486484
)
487485
if err != nil {

coderd/tailnet.go

+13-30
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ import (
2222
"cdr.dev/slog"
2323
"github.com/coder/coder/v2/coderd/tracing"
2424
"github.com/coder/coder/v2/coderd/workspaceapps"
25-
"github.com/coder/coder/v2/coderd/wsconncache"
2625
"github.com/coder/coder/v2/codersdk"
2726
"github.com/coder/coder/v2/site"
2827
"github.com/coder/coder/v2/tailnet"
@@ -41,16 +40,14 @@ func init() {
4140

4241
var _ workspaceapps.AgentProvider = (*ServerTailnet)(nil)
4342

44-
// NewServerTailnet creates a new tailnet intended for use by coderd. It
45-
// automatically falls back to wsconncache if a legacy agent is encountered.
43+
// NewServerTailnet creates a new tailnet intended for use by coderd.
4644
func NewServerTailnet(
4745
ctx context.Context,
4846
logger slog.Logger,
4947
derpServer *derp.Server,
5048
derpMapFn func() *tailcfg.DERPMap,
5149
derpForceWebSockets bool,
5250
getMultiAgent func(context.Context) (tailnet.MultiAgentConn, error),
53-
cache *wsconncache.Cache,
5451
traceProvider trace.TracerProvider,
5552
) (*ServerTailnet, error) {
5653
logger = logger.Named("servertailnet")
@@ -97,7 +94,6 @@ func NewServerTailnet(
9794
conn: conn,
9895
coordinatee: conn,
9996
getMultiAgent: getMultiAgent,
100-
cache: cache,
10197
agentConnectionTimes: map[uuid.UUID]time.Time{},
10298
agentTickets: map[uuid.UUID]map[uuid.UUID]struct{}{},
10399
transport: tailnetTransport.Clone(),
@@ -299,7 +295,6 @@ type ServerTailnet struct {
299295

300296
getMultiAgent func(context.Context) (tailnet.MultiAgentConn, error)
301297
agentConn atomic.Pointer[tailnet.MultiAgentConn]
302-
cache *wsconncache.Cache
303298
nodesMu sync.Mutex
304299
// agentConnectionTimes is a map of agent tailnetNodes the server wants to
305300
// keep a connection to. It contains the last time the agent was connected
@@ -311,7 +306,7 @@ type ServerTailnet struct {
311306
transport *http.Transport
312307
}
313308

314-
func (s *ServerTailnet) ReverseProxy(targetURL, dashboardURL *url.URL, agentID uuid.UUID) (_ *httputil.ReverseProxy, release func(), _ error) {
309+
func (s *ServerTailnet) ReverseProxy(targetURL, dashboardURL *url.URL, agentID uuid.UUID) *httputil.ReverseProxy {
315310
proxy := httputil.NewSingleHostReverseProxy(targetURL)
316311
proxy.ErrorHandler = func(w http.ResponseWriter, r *http.Request, err error) {
317312
site.RenderStaticErrorPage(w, r, site.ErrorPageData{
@@ -325,7 +320,7 @@ func (s *ServerTailnet) ReverseProxy(targetURL, dashboardURL *url.URL, agentID u
325320
proxy.Director = s.director(agentID, proxy.Director)
326321
proxy.Transport = s.transport
327322

328-
return proxy, func() {}, nil
323+
return proxy
329324
}
330325

331326
type agentIDKey struct{}
@@ -387,28 +382,17 @@ func (s *ServerTailnet) AgentConn(ctx context.Context, agentID uuid.UUID) (*code
387382
ret func()
388383
)
389384

390-
if s.getAgentConn().AgentIsLegacy(agentID) {
391-
s.logger.Debug(s.ctx, "acquiring legacy agent", slog.F("agent_id", agentID))
392-
cconn, release, err := s.cache.Acquire(agentID)
393-
if err != nil {
394-
return nil, nil, xerrors.Errorf("acquire legacy agent conn: %w", err)
395-
}
396-
397-
conn = cconn.WorkspaceAgentConn
398-
ret = release
399-
} else {
400-
s.logger.Debug(s.ctx, "acquiring agent", slog.F("agent_id", agentID))
401-
err := s.ensureAgent(agentID)
402-
if err != nil {
403-
return nil, nil, xerrors.Errorf("ensure agent: %w", err)
404-
}
405-
ret = s.acquireTicket(agentID)
406-
407-
conn = codersdk.NewWorkspaceAgentConn(s.conn, codersdk.WorkspaceAgentConnOptions{
408-
AgentID: agentID,
409-
CloseFunc: func() error { return codersdk.ErrSkipClose },
410-
})
385+
s.logger.Debug(s.ctx, "acquiring agent", slog.F("agent_id", agentID))
386+
err := s.ensureAgent(agentID)
387+
if err != nil {
388+
return nil, nil, xerrors.Errorf("ensure agent: %w", err)
411389
}
390+
ret = s.acquireTicket(agentID)
391+
392+
conn = codersdk.NewWorkspaceAgentConn(s.conn, codersdk.WorkspaceAgentConnOptions{
393+
AgentID: agentID,
394+
CloseFunc: func() error { return codersdk.ErrSkipClose },
395+
})
412396

413397
// Since we now have an open conn, be careful to close it if we error
414398
// without returning it to the user.
@@ -458,7 +442,6 @@ func (c *netConnCloser) Close() error {
458442

459443
func (s *ServerTailnet) Close() error {
460444
s.cancel()
461-
_ = s.cache.Close()
462445
_ = s.conn.Close()
463446
s.transport.CloseIdleConnections()
464447
<-s.derpMapUpdaterClosed

coderd/tailnet_test.go

+2-86
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ import (
2121
"github.com/coder/coder/v2/agent"
2222
"github.com/coder/coder/v2/agent/agenttest"
2323
"github.com/coder/coder/v2/coderd"
24-
"github.com/coder/coder/v2/coderd/wsconncache"
2524
"github.com/coder/coder/v2/codersdk"
2625
"github.com/coder/coder/v2/codersdk/agentsdk"
2726
"github.com/coder/coder/v2/tailnet"
@@ -45,24 +44,6 @@ func TestServerTailnet_AgentConn_OK(t *testing.T) {
4544
assert.True(t, conn.AwaitReachable(ctx))
4645
}
4746

48-
func TestServerTailnet_AgentConn_Legacy(t *testing.T) {
49-
t.Parallel()
50-
51-
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitMedium)
52-
defer cancel()
53-
54-
// Force a connection through wsconncache using the legacy hardcoded ip.
55-
agentID, _, serverTailnet := setupAgent(t, []netip.Prefix{
56-
netip.PrefixFrom(codersdk.WorkspaceAgentIP, 128),
57-
})
58-
59-
conn, release, err := serverTailnet.AgentConn(ctx, agentID)
60-
require.NoError(t, err)
61-
defer release()
62-
63-
assert.True(t, conn.AwaitReachable(ctx))
64-
}
65-
6647
func TestServerTailnet_ReverseProxy(t *testing.T) {
6748
t.Parallel()
6849

@@ -77,9 +58,7 @@ func TestServerTailnet_ReverseProxy(t *testing.T) {
7758
u, err := url.Parse(fmt.Sprintf("http://127.0.0.1:%d", codersdk.WorkspaceAgentHTTPAPIServerPort))
7859
require.NoError(t, err)
7960

80-
rp, release, err := serverTailnet.ReverseProxy(u, u, agentID)
81-
require.NoError(t, err)
82-
defer release()
61+
rp := serverTailnet.ReverseProxy(u, u, agentID)
8362

8463
rw := httptest.NewRecorder()
8564
req := httptest.NewRequest(
@@ -113,9 +92,7 @@ func TestServerTailnet_ReverseProxy(t *testing.T) {
11392
uri, err := url.Parse(s.URL)
11493
require.NoError(t, err)
11594

116-
rp, release, err := serverTailnet.ReverseProxy(uri, uri, agentID)
117-
require.NoError(t, err)
118-
defer release()
95+
rp := serverTailnet.ReverseProxy(uri, uri, agentID)
11996

12097
rw := httptest.NewRecorder()
12198
req := httptest.NewRequest(
@@ -130,38 +107,6 @@ func TestServerTailnet_ReverseProxy(t *testing.T) {
130107

131108
assert.Equal(t, expectedResponseCode, res.StatusCode)
132109
})
133-
134-
t.Run("Legacy", func(t *testing.T) {
135-
t.Parallel()
136-
137-
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
138-
defer cancel()
139-
140-
// Force a connection through wsconncache using the legacy hardcoded ip.
141-
agentID, _, serverTailnet := setupAgent(t, []netip.Prefix{
142-
netip.PrefixFrom(codersdk.WorkspaceAgentIP, 128),
143-
})
144-
145-
u, err := url.Parse(fmt.Sprintf("http://127.0.0.1:%d", codersdk.WorkspaceAgentHTTPAPIServerPort))
146-
require.NoError(t, err)
147-
148-
rp, release, err := serverTailnet.ReverseProxy(u, u, agentID)
149-
require.NoError(t, err)
150-
defer release()
151-
152-
rw := httptest.NewRecorder()
153-
req := httptest.NewRequest(
154-
http.MethodGet,
155-
u.String(),
156-
nil,
157-
).WithContext(ctx)
158-
159-
rp.ServeHTTP(rw, req)
160-
res := rw.Result()
161-
defer res.Body.Close()
162-
163-
assert.Equal(t, http.StatusOK, res.StatusCode)
164-
})
165110
}
166111

167112
func setupAgent(t *testing.T, agentAddresses []netip.Prefix) (uuid.UUID, agent.Agent, *coderd.ServerTailnet) {
@@ -197,42 +142,13 @@ func setupAgent(t *testing.T, agentAddresses []netip.Prefix) (uuid.UUID, agent.A
197142
return coord.Node(manifest.AgentID) != nil
198143
}, testutil.WaitShort, testutil.IntervalFast)
199144

200-
cache := wsconncache.New(func(id uuid.UUID) (*codersdk.WorkspaceAgentConn, error) {
201-
conn, err := tailnet.NewConn(&tailnet.Options{
202-
Addresses: []netip.Prefix{netip.PrefixFrom(tailnet.IP(), 128)},
203-
DERPMap: manifest.DERPMap,
204-
Logger: logger.Named("client"),
205-
})
206-
require.NoError(t, err)
207-
t.Cleanup(func() {
208-
_ = conn.Close()
209-
})
210-
clientID := uuid.New()
211-
testCtx, testCtxCancel := context.WithCancel(context.Background())
212-
t.Cleanup(testCtxCancel)
213-
coordination := tailnet.NewInMemoryCoordination(
214-
testCtx, logger,
215-
clientID, manifest.AgentID,
216-
coord, conn,
217-
)
218-
t.Cleanup(func() {
219-
_ = coordination.Close()
220-
})
221-
return codersdk.NewWorkspaceAgentConn(conn, codersdk.WorkspaceAgentConnOptions{
222-
AgentID: manifest.AgentID,
223-
AgentIP: codersdk.WorkspaceAgentIP,
224-
CloseFunc: func() error { return codersdk.ErrSkipClose },
225-
}), nil
226-
}, 0)
227-
228145
serverTailnet, err := coderd.NewServerTailnet(
229146
context.Background(),
230147
logger,
231148
derpServer,
232149
func() *tailcfg.DERPMap { return manifest.DERPMap },
233150
false,
234151
func(context.Context) (tailnet.MultiAgentConn, error) { return coord.ServeMultiAgent(uuid.New()), nil },
235-
cache,
236152
trace.NewNoopTracerProvider(),
237153
)
238154
require.NoError(t, err)

0 commit comments

Comments
 (0)