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

Rsync error msgs #58

Merged
merged 1 commit into from
Jun 24, 2020
Merged

Rsync error msgs #58

merged 1 commit into from
Jun 24, 2020

Conversation

Russtopia
Copy link

@Russtopia Russtopia commented Jun 24, 2020

What This Does

  • Improve checking for rsync errors in initial sync
  • Suggest to user what might be wrong (in this case, missing rsync in remote environment)

Background

While trying out coder-cli on my own dev server, I had used a base ubuntu docker image for my environment. It doesn't install rsync by default, so coder sync fails with obscure "rsync: exit status 12".

It took a while for me to realize rsync wasn't installed in the environment. We should make coder-cli suggest actions to resolve the issue to the user.

Also, I suspect the existing check for incompatible rsync protocol won't work, as the errors returned from the sync internal package are xerrors vs. the plain error type declared to compare errors against. When I tried adding the equivalent check for error status 12, following the example for exit status 2, the comparison did not work.

I know it's cheezy to compare literal string representations of errors in Go -- so if a better method is suggested I'll use that instead.

Example 'improved' output if remote environment has no rsync installed

$ ./coder sync foo russ-env1:/home/coder/newpath
2020-06-24 11:41:03 INFO	doing initial sync (/home/russtopia/dev/coder-cli/cmd/coder/foo -> /home/coder/newpath)
2020-06-24 11:41:04 FATAL	error in rsync protocol datastream (no installed remote rsync?)

@Russtopia Russtopia merged commit 29dde34 into master Jun 24, 2020
@Russtopia Russtopia deleted the rsync-error-msgs branch June 24, 2020 19:06
Comment on lines +84 to +87
if fmt.Sprintf("%v", err) == fmt.Sprintf("%v", IncompatRsync) {
flog.Fatal("no compatible rsync present on remote machine")
} else if fmt.Sprintf("%v", err) == fmt.Sprintf("%v", StreamErrRsync) {
flog.Fatal("error in rsync protocol datastream (no installed remote rsync?)")
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This isn't great.

We should be checking the exit code here, and wrap the error with an informative string based on the exit code.

See https://stackoverflow.com/a/55055100 for how we can get the exit code from a command error.

Copy link
Author

@Russtopia Russtopia Jun 25, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, I figured this wasn't be best way to do it :/ I'll update this ASAP, and include it in PR #60

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants