Skip to content

Commit b574133

Browse files
authored
[sshshim] re-try 3 times for finding activeVM (#554)
## Summary Its possible the check for activeVM failed due to some ephemeral reason. So, we try 3 times with a sleep of 10 seconds in between. ## How was it tested? 1. verified that sync still works. 2. - killed the VM - tailed the logs at `~/.config/devbox/ssh/shims/logs.txt` ``` [DEBUG] 2023/01/27 17:09:59 /Users/savil/code/jetpack/devbox/internal/cloud/openssh/sshshim/logger.go:27: Debug mode enabled. [DEBUG] 2023/01/27 17:09:59 /Users/savil/code/jetpack/devbox/internal/cloud/openssh/sshshim/logger.go:28: started sshshim [DEBUG] 2023/01/27 17:09:59 /Users/savil/code/jetpack/devbox/internal/cloud/openssh/sshshim/command.go:30: os.Args: [/Users/savil/.config/devbox/ssh/shims/ssh -oConnectTimeout=5 -oServerAliveInterval=10 -oServerAliveCountMax=1 [email protected] .mutagen/agents/0.16.2/mutagen-agent synchronizer --log-level=info] [DEBUG] 2023/01/27 17:09:59 /Users/savil/code/jetpack/devbox/internal/cloud/openssh/sshshim/mutagen.go:20: Found vmAddr: [email protected] [DEBUG] 2023/01/27 17:09:59 /Users/savil/code/jetpack/devbox/internal/cloud/openssh/sshshim/logger.go:27: Debug mode enabled. [DEBUG] 2023/01/27 17:09:59 /Users/savil/code/jetpack/devbox/internal/cloud/openssh/sshshim/logger.go:28: started sshshim [DEBUG] 2023/01/27 17:09:59 /Users/savil/code/jetpack/devbox/internal/cloud/openssh/sshshim/command.go:30: os.Args: [/Users/savil/.config/devbox/ssh/shims/ssh -oConnectTimeout=5 -oServerAliveInterval=10 -oServerAliveCountMax=1 [email protected] .mutagen/agents/0.16.2/mutagen-agent synchronizer --log-level=info] [DEBUG] 2023/01/27 17:09:59 /Users/savil/code/jetpack/devbox/internal/cloud/openssh/sshshim/mutagen.go:20: Found vmAddr: [email protected] [DEBUG] 2023/01/27 17:10:00 /Users/savil/code/jetpack/devbox/internal/cloud/openssh/sshshim/mutagen.go:85: checkActiveVM: No active VM. returning false for exit status 255 [DEBUG] 2023/01/27 17:10:00 /Users/savil/code/jetpack/devbox/internal/cloud/openssh/sshshim/mutagen.go:67: Try 1 failed to find activeVM for e784935c246683.vm.devbox-vms.internal [DEBUG] 2023/01/27 17:10:00 /Users/savil/code/jetpack/devbox/internal/cloud/openssh/sshshim/mutagen.go:85: checkActiveVM: No active VM. returning false for exit status 255 [DEBUG] 2023/01/27 17:10:00 /Users/savil/code/jetpack/devbox/internal/cloud/openssh/sshshim/mutagen.go:67: Try 2 failed to find activeVM for e784935c246683.vm.devbox-vms.internal [DEBUG] 2023/01/27 17:10:00 /Users/savil/code/jetpack/devbox/internal/cloud/openssh/sshshim/mutagen.go:31: terminating mutagen session for vm: e784935c246683.vm.devbox-vms.internal [DEBUG] 2023/01/27 17:10:00 /Users/savil/code/jetpack/devbox/internal/cloud/mutagen/wrapper.go:176: running mutagen cmd /Users/savil/.cache/mutagen/bin/mutagen sync terminate --label-selector devbox-vm=e784935c246683 with MUTAGEN env: , MUTAGEN_SSH_PATH=/Users/savil/.config/devbox/ssh/shims, MUTAGEN_DATA_DIRECTORY=/Users/savil/.config/devbox/mutagen [DEBUG] 2023/01/27 17:10:00 /Users/savil/code/jetpack/devbox/internal/cloud/mutagen/wrapper.go:164: execMutagen worked for cmd: /Users/savil/.cache/mutagen/bin/mutagen sync terminate --label-selector devbox-vm=e784935c246683 [DEBUG] 2023/01/27 17:10:00 /Users/savil/code/jetpack/devbox/internal/cloud/mutagen/wrapper.go:176: running mutagen cmd /Users/savil/.cache/mutagen/bin/mutagen forward terminate --label-selector devbox=true with MUTAGEN env: , MUTAGEN_DATA_DIRECTORY=/Users/savil/.config/devbox/mutagen, MUTAGEN_SSH_PATH=/Users/savil/.config/devbox/ssh/shims [DEBUG] 2023/01/27 17:10:00 /Users/savil/code/jetpack/devbox/internal/cloud/mutagen/wrapper.go:164: execMutagen worked for cmd: /Users/savil/.cache/mutagen/bin/mutagen forward terminate --label-selector devbox=true ``` NOTE: output is prior to my adding Sleep. I'll re-check with the sleep, but sending PR for review. (UPDATE: confirmed, it works as expected with Sleep as well).
1 parent 7535691 commit b574133

File tree

1 file changed

+18
-1
lines changed

1 file changed

+18
-1
lines changed

internal/cloud/openssh/sshshim/mutagen.go

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ func EnsureLiveVMOrTerminateMutagenSessions(sshArgs []string) (bool, error) {
2525
return true, nil
2626
}
2727

28-
if isActive, err := checkActiveVM(vmAddr); err != nil {
28+
if isActive, err := checkActiveVMWithRetries(vmAddr); err != nil {
2929
return false, errors.WithStack(err)
3030
} else if !isActive {
3131
debug.Log("terminating mutagen session for vm: %s", vmAddr)
@@ -54,6 +54,23 @@ func terminateMutagenSessions(vmAddr string) error {
5454
return mutagenbox.ForwardTerminateAll()
5555
}
5656

57+
func checkActiveVMWithRetries(vmAddr string) (bool, error) {
58+
var err error
59+
60+
// Try 3 times:
61+
for num := 0; num < 3; num++ {
62+
var isActive bool
63+
isActive, err = checkActiveVM(vmAddr)
64+
if err == nil && isActive {
65+
// found an active VM
66+
return true, nil
67+
}
68+
time.Sleep(10 * time.Second)
69+
debug.Log("Try %d failed to find activeVM for %s", num, vmAddr)
70+
}
71+
return false, err
72+
}
73+
5774
func checkActiveVM(vmAddr string) (bool, error) {
5875

5976
ctx, cancel := context.WithTimeout(context.Background(), time.Minute*2)

0 commit comments

Comments
 (0)