Skip to content

Commit 306685b

Browse files
ShivaShiva
authored andcommitted
add retry logic to get container ports
1 parent 9f255b9 commit 306685b

File tree

2 files changed

+27
-5
lines changed

2 files changed

+27
-5
lines changed

systest/backup/nfs-backup/backup_test.go

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -59,11 +59,10 @@ func backupRestoreTest(t *testing.T, backupAlphaName string, backupZeroName stri
5959
backupZero := testutil.ContainerInstance{Name: backupZeroName, Prefix: testutil.DockerPrefix}
6060
require.NoError(t, backupZero.BestEffortWaitForHealthy(6080))
6161

62-
// Resolve addresses after containers are healthy
63-
backupAlphaSocketAddr := testutil.ContainerAddr(backupAlphaName, 9080)
64-
backupAlphaSocketAddrHttp := testutil.ContainerAddr(backupAlphaName, 8080)
65-
restoreAlphaAddr := testutil.ContainerAddr(restoreAlphaName, 8080)
66-
backupZeroAddr := testutil.ContainerAddr(backupZeroName, 6080)
62+
backupAlphaSocketAddr := testutil.ContainerAddrRetry(backupAlphaName, 9080)
63+
backupAlphaSocketAddrHttp := testutil.ContainerAddrRetry(backupAlphaName, 8080)
64+
restoreAlphaAddr := testutil.ContainerAddrRetry(restoreAlphaName, 8080)
65+
backupZeroAddr := testutil.ContainerAddrRetry(backupZeroName, 6080)
6766

6867
var dg *dgo.Dgraph
6968
var err error

testutil/docker.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,25 @@ func ContainerAddrWithHost(name string, privatePort uint16, host string) string
226226
return host + ":" + strconv.Itoa(int(privatePort))
227227
}
228228

229+
func ContainerAddrWithHostRetry(name string, privatePort uint16, host string) string {
230+
maxAttempts := 30
231+
for attempt := range maxAttempts {
232+
c := getContainer(name)
233+
for _, p := range c.Ports {
234+
if p.PrivatePort == privatePort {
235+
// Found the mapping - return immediately without waiting
236+
return host + ":" + strconv.Itoa(int(p.PublicPort))
237+
}
238+
}
239+
240+
if attempt < maxAttempts-1 {
241+
time.Sleep(500 * time.Millisecond)
242+
}
243+
}
244+
245+
return host + ":" + strconv.Itoa(int(privatePort))
246+
}
247+
229248
func ContainerAddrLocalhost(name string, privatePort uint16) string {
230249
return ContainerAddrWithHost(name, privatePort, "localhost")
231250
}
@@ -234,6 +253,10 @@ func ContainerAddr(name string, privatePort uint16) string {
234253
return ContainerAddrWithHost(name, privatePort, "0.0.0.0")
235254
}
236255

256+
func ContainerAddrRetry(name string, privatePort uint16) string {
257+
return ContainerAddrWithHostRetry(name, privatePort, "0.0.0.0")
258+
}
259+
237260
// DockerStart starts the specified services.
238261
func DockerRun(instance string, op int) error {
239262
c := getContainer(instance)

0 commit comments

Comments
 (0)