Skip to content
This repository was archived by the owner on Aug 30, 2024. It is now read-only.

Commit e1d83c6

Browse files
committed
Merge branch 'master' into perf
2 parents 5095792 + f44c5ca commit e1d83c6

File tree

19 files changed

+118
-41
lines changed

19 files changed

+118
-41
lines changed

.github/workflows/build.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ jobs:
77
steps:
88
- name: Checkout
99
uses: actions/checkout@v1
10+
- uses: actions/setup-go@v2
11+
with:
12+
go-version: '^1.16.3'
1013
- name: Build
1114
run: make -j build/linux build/windows
1215
- name: Upload
@@ -19,6 +22,9 @@ jobs:
1922
steps:
2023
- name: Checkout
2124
uses: actions/checkout@v1
25+
- uses: actions/setup-go@v2
26+
with:
27+
go-version: '^1.16.3'
2228
- name: Install Gon
2329
run: |
2430
brew tap mitchellh/gon

ci/image/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM golang:1
1+
FROM golang:1.16.3
22

33
ENV GOFLAGS="-mod=readonly"
44
ENV CI=true

internal/cmd/agent.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ coder agent start --coder-url https://my-coder.com --token xxxx-xxxx
5151
var ok bool
5252
coderURL, ok = os.LookupEnv("CODER_URL")
5353
if !ok {
54-
client, err := newClient(ctx)
54+
client, err := newClient(ctx, true)
5555
if err != nil {
5656
return xerrors.New("must login, pass --coder-url flag, or set the CODER_URL env variable")
5757
}

internal/cmd/auth.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ var errNeedLogin = clog.Fatal(
2323
const tokenEnv = "CODER_TOKEN"
2424
const urlEnv = "CODER_URL"
2525

26-
func newClient(ctx context.Context) (coder.Client, error) {
26+
func newClient(ctx context.Context, checkVersion bool) (coder.Client, error) {
2727
var (
2828
err error
2929
sessionToken = os.Getenv(tokenEnv)
@@ -55,10 +55,14 @@ func newClient(ctx context.Context) (coder.Client, error) {
5555
return nil, xerrors.Errorf("failed to create new coder.Client: %w", err)
5656
}
5757

58-
apiVersion, err := c.APIVersion(ctx)
59-
if apiVersion != "" && !version.VersionsMatch(apiVersion) {
60-
logVersionMismatchError(apiVersion)
58+
if checkVersion {
59+
var apiVersion string
60+
apiVersion, err = c.APIVersion(ctx)
61+
if apiVersion != "" && !version.VersionsMatch(apiVersion) {
62+
logVersionMismatchError(apiVersion)
63+
}
6164
}
65+
6266
if err != nil {
6367
var he *coder.HTTPError
6468
if xerrors.As(err, &he) {

internal/cmd/configssh.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ func configSSH(configpath *string, remove *bool, p2p *bool) func(cmd *cobra.Comm
8888
return nil
8989
}
9090

91-
client, err := newClient(ctx)
91+
client, err := newClient(ctx, true)
9292
if err != nil {
9393
return err
9494
}

internal/cmd/envs.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ func lsEnvsCommand() *cobra.Command {
5959
Long: "List all Coder environments owned by the active user.",
6060
RunE: func(cmd *cobra.Command, args []string) error {
6161
ctx := cmd.Context()
62-
client, err := newClient(ctx)
62+
client, err := newClient(ctx, true)
6363
if err != nil {
6464
return err
6565
}
@@ -128,7 +128,7 @@ coder envs --user [email protected] ls -o json \
128128
Args: cobra.MinimumNArgs(1),
129129
RunE: func(cmd *cobra.Command, args []string) error {
130130
ctx := cmd.Context()
131-
client, err := newClient(ctx)
131+
client, err := newClient(ctx, true)
132132
if err != nil {
133133
return xerrors.Errorf("new client: %w", err)
134134
}
@@ -189,7 +189,7 @@ coder envs create my-new-powerful-env --cpu 12 --disk 100 --memory 16 --image ub
189189
return xerrors.New("image unset")
190190
}
191191

192-
client, err := newClient(ctx)
192+
client, err := newClient(ctx, true)
193193
if err != nil {
194194
return err
195195
}
@@ -315,7 +315,7 @@ coder envs create-from-config --name="dev-env" -f coder.yaml`,
315315
)
316316
}
317317

318-
client, err := newClient(ctx)
318+
client, err := newClient(ctx, true)
319319
if err != nil {
320320
return err
321321
}
@@ -438,7 +438,7 @@ func editEnvCmd() *cobra.Command {
438438
coder envs edit back-end-env --disk 20`,
439439
RunE: func(cmd *cobra.Command, args []string) error {
440440
ctx := cmd.Context()
441-
client, err := newClient(ctx)
441+
client, err := newClient(ctx, true)
442442
if err != nil {
443443
return err
444444
}
@@ -532,7 +532,7 @@ func rmEnvsCmd() *cobra.Command {
532532
Args: cobra.MinimumNArgs(1),
533533
RunE: func(cmd *cobra.Command, args []string) error {
534534
ctx := cmd.Context()
535-
client, err := newClient(ctx)
535+
client, err := newClient(ctx, true)
536536
if err != nil {
537537
return err
538538
}

internal/cmd/images.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ func lsImgsCommand(user *string) *cobra.Command {
3838
RunE: func(cmd *cobra.Command, args []string) error {
3939
ctx := cmd.Context()
4040

41-
client, err := newClient(ctx)
41+
client, err := newClient(ctx, true)
4242
if err != nil {
4343
return err
4444
}

internal/cmd/providers.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ coder providers create my-provider --hostname=https://provider.example.com --clu
5050
RunE: func(cmd *cobra.Command, args []string) error {
5151
ctx := cmd.Context()
5252

53-
client, err := newClient(ctx)
53+
client, err := newClient(ctx, true)
5454
if err != nil {
5555
return err
5656
}
@@ -143,7 +143,7 @@ coder providers ls`,
143143
RunE: func(cmd *cobra.Command, args []string) error {
144144
ctx := cmd.Context()
145145

146-
client, err := newClient(ctx)
146+
client, err := newClient(ctx, true)
147147
if err != nil {
148148
return err
149149
}
@@ -174,7 +174,7 @@ func deleteProviderCmd() *cobra.Command {
174174
coder providers rm my-workspace-provider`,
175175
RunE: func(cmd *cobra.Command, args []string) error {
176176
ctx := cmd.Context()
177-
client, err := newClient(ctx)
177+
client, err := newClient(ctx, true)
178178
if err != nil {
179179
return err
180180
}
@@ -232,7 +232,7 @@ func cordonProviderCmd() *cobra.Command {
232232
coder providers cordon my-workspace-provider --reason "limit cloud clost"`,
233233
RunE: func(cmd *cobra.Command, args []string) error {
234234
ctx := cmd.Context()
235-
client, err := newClient(ctx)
235+
client, err := newClient(ctx, true)
236236
if err != nil {
237237
return err
238238
}
@@ -265,7 +265,7 @@ func unCordonProviderCmd() *cobra.Command {
265265
coder providers uncordon my-workspace-provider`,
266266
RunE: func(cmd *cobra.Command, args []string) error {
267267
ctx := cmd.Context()
268-
client, err := newClient(ctx)
268+
client, err := newClient(ctx, true)
269269
if err != nil {
270270
return err
271271
}
@@ -296,7 +296,7 @@ func renameProviderCmd() *cobra.Command {
296296
coder providers rename build-in us-east-1`,
297297
RunE: func(cmd *cobra.Command, args []string) error {
298298
ctx := cmd.Context()
299-
client, err := newClient(ctx)
299+
client, err := newClient(ctx, true)
300300
if err != nil {
301301
return err
302302
}

internal/cmd/rebuild.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ func rebuildEnvCommand() *cobra.Command {
2929
coder envs rebuild backend-env --force`,
3030
RunE: func(cmd *cobra.Command, args []string) error {
3131
ctx := cmd.Context()
32-
client, err := newClient(ctx)
32+
client, err := newClient(ctx, true)
3333
if err != nil {
3434
return err
3535
}
@@ -166,7 +166,7 @@ func watchBuildLogCommand() *cobra.Command {
166166
Args: xcobra.ExactArgs(1),
167167
RunE: func(cmd *cobra.Command, args []string) error {
168168
ctx := cmd.Context()
169-
client, err := newClient(ctx)
169+
client, err := newClient(ctx, true)
170170
if err != nil {
171171
return err
172172
}

internal/cmd/resourcemanager.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ coder resources top --sort-by memory --show-empty`,
6262
func runResourceTop(options *resourceTopOptions) func(cmd *cobra.Command, args []string) error {
6363
return func(cmd *cobra.Command, args []string) error {
6464
ctx := cmd.Context()
65-
client, err := newClient(ctx)
65+
client, err := newClient(ctx, true)
6666
if err != nil {
6767
return err
6868
}

internal/cmd/ssh.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ coder ssh my-dev pwd`,
3737

3838
func shell(cmd *cobra.Command, args []string) error {
3939
ctx := cmd.Context()
40-
client, err := newClient(ctx)
40+
client, err := newClient(ctx, true)
4141
if err != nil {
4242
return err
4343
}
@@ -99,7 +99,7 @@ func shValidArgs(cmd *cobra.Command, args []string) error {
9999
ctx := cmd.Context()
100100
err := cobra.MinimumNArgs(1)(cmd, args)
101101
if err != nil {
102-
client, err := newClient(ctx)
102+
client, err := newClient(ctx, true)
103103
if err != nil {
104104
return clog.Error("missing [environment_name] argument")
105105
}

internal/cmd/sync.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ func makeRunSync(init *bool) func(cmd *cobra.Command, args []string) error {
5454
remote = args[1]
5555
)
5656

57-
client, err := newClient(ctx)
57+
client, err := newClient(ctx, true)
5858
if err != nil {
5959
return err
6060
}

internal/cmd/tags.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ func tagsCreateCmd() *cobra.Command {
4141
Args: xcobra.ExactArgs(1),
4242
RunE: func(cmd *cobra.Command, args []string) error {
4343
ctx := cmd.Context()
44-
client, err := newClient(ctx)
44+
client, err := newClient(ctx, true)
4545
if err != nil {
4646
return err
4747
}
@@ -86,7 +86,7 @@ func tagsLsCmd() *cobra.Command {
8686
Example: `coder tags ls --image ubuntu --org default --output json`,
8787
RunE: func(cmd *cobra.Command, args []string) error {
8888
ctx := cmd.Context()
89-
client, err := newClient(ctx)
89+
client, err := newClient(ctx, true)
9090
if err != nil {
9191
return err
9292
}
@@ -143,7 +143,7 @@ func tagsRmCmd() *cobra.Command {
143143
Args: xcobra.ExactArgs(1),
144144
RunE: func(cmd *cobra.Command, args []string) error {
145145
ctx := cmd.Context()
146-
client, err := newClient(ctx)
146+
client, err := newClient(ctx, true)
147147
if err != nil {
148148
return err
149149
}

internal/cmd/tokens.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ func lsTokensCmd() *cobra.Command {
3636
Short: "show the user's active API tokens",
3737
RunE: func(cmd *cobra.Command, args []string) error {
3838
ctx := cmd.Context()
39-
client, err := newClient(ctx)
39+
client, err := newClient(ctx, true)
4040
if err != nil {
4141
return err
4242
}
@@ -79,7 +79,7 @@ func createTokensCmd() *cobra.Command {
7979
Args: xcobra.ExactArgs(1),
8080
RunE: func(cmd *cobra.Command, args []string) error {
8181
ctx := cmd.Context()
82-
client, err := newClient(ctx)
82+
client, err := newClient(ctx, true)
8383
if err != nil {
8484
return err
8585
}
@@ -102,7 +102,7 @@ func rmTokenCmd() *cobra.Command {
102102
Args: xcobra.ExactArgs(1),
103103
RunE: func(cmd *cobra.Command, args []string) error {
104104
ctx := cmd.Context()
105-
client, err := newClient(ctx)
105+
client, err := newClient(ctx, true)
106106
if err != nil {
107107
return err
108108
}
@@ -121,7 +121,7 @@ func regenTokenCmd() *cobra.Command {
121121
Args: xcobra.ExactArgs(1),
122122
RunE: func(cmd *cobra.Command, args []string) error {
123123
ctx := cmd.Context()
124-
client, err := newClient(ctx)
124+
client, err := newClient(ctx, true)
125125
if err != nil {
126126
return err
127127
}

internal/cmd/tunnel.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ coder tunnel my-dev 3000 3000
4949
}
5050
}
5151

52-
sdk, err := newClient(ctx)
52+
sdk, err := newClient(ctx, false)
5353
if err != nil {
5454
return xerrors.Errorf("getting coder client: %w", err)
5555
}
@@ -72,7 +72,7 @@ coder tunnel my-dev 3000 3000
7272
}
7373

7474
c := &tunnneler{
75-
log: log.Leveled(slog.LevelDebug),
75+
log: log,
7676
brokerAddr: &baseURL,
7777
token: sdk.Token(),
7878
workspaceID: envID,

internal/cmd/urls.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ func accessLevelIsValid(level string) bool {
8181
func listDevURLsCmd(outputFmt *string) func(cmd *cobra.Command, args []string) error {
8282
return func(cmd *cobra.Command, args []string) error {
8383
ctx := cmd.Context()
84-
client, err := newClient(ctx)
84+
client, err := newClient(ctx, true)
8585
if err != nil {
8686
return err
8787
}
@@ -147,7 +147,7 @@ func createDevURLCmd() *cobra.Command {
147147
if urlname != "" && !devURLNameValidRx.MatchString(urlname) {
148148
return xerrors.New("update devurl: name must be < 64 chars in length, begin with a letter and only contain letters or digits.")
149149
}
150-
client, err := newClient(ctx)
150+
client, err := newClient(ctx, true)
151151
if err != nil {
152152
return err
153153
}
@@ -228,7 +228,7 @@ func removeDevURL(cmd *cobra.Command, args []string) error {
228228
return xerrors.Errorf("validate port: %w", err)
229229
}
230230

231-
client, err := newClient(ctx)
231+
client, err := newClient(ctx, true)
232232
if err != nil {
233233
return err
234234
}

internal/cmd/users.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ coder users ls -o json | jq .[] | jq -r .email`,
3232
func listUsers(outputFmt *string) func(cmd *cobra.Command, args []string) error {
3333
return func(cmd *cobra.Command, args []string) error {
3434
ctx := cmd.Context()
35-
client, err := newClient(ctx)
35+
client, err := newClient(ctx, true)
3636
if err != nil {
3737
return err
3838
}

wsnet/listen.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ import (
1818
"cdr.dev/coder-cli/coder-sdk"
1919
)
2020

21+
var keepAliveInterval = 5 * time.Second
22+
2123
// Listen connects to the broker proxies connections to the local net.
2224
// Close will end all RTC connections.
2325
func Listen(ctx context.Context, broker string) (io.Closer, error) {
@@ -35,7 +37,7 @@ func Listen(ctx context.Context, broker string) (io.Closer, error) {
3537
go func() {
3638
for {
3739
err := <-ch
38-
if errors.Is(err, io.EOF) {
40+
if errors.Is(err, io.EOF) || errors.Is(err, yamux.ErrKeepAliveTimeout) {
3941
// If we hit an EOF, then the connection to the broker
4042
// was interrupted. We'll take a short break then dial
4143
// again.
@@ -76,7 +78,10 @@ func (l *listener) dial(ctx context.Context) (<-chan error, error) {
7678
}
7779
l.ws = conn
7880
nconn := websocket.NetConn(ctx, conn, websocket.MessageBinary)
79-
session, err := yamux.Server(nconn, nil)
81+
config := yamux.DefaultConfig()
82+
config.KeepAliveInterval = keepAliveInterval
83+
config.LogOutput = io.Discard
84+
session, err := yamux.Server(nconn, config)
8085
if err != nil {
8186
return nil, fmt.Errorf("create multiplex: %w", err)
8287
}

0 commit comments

Comments
 (0)