Skip to content

Commit 75140e3

Browse files
author
Tim Middleton
committed
Update resolver to rety on failure
1 parent 0f36f05 commit 75140e3

File tree

1 file changed

+17
-5
lines changed

1 file changed

+17
-5
lines changed

coherence/resolver.go

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,14 +57,26 @@ type nsLookupResolver struct {
5757

5858
func (r *nsLookupResolver) resolve() {
5959
r.mutex.Lock()
60+
grpcEndpoints := generateNSAddresses(r.target.Endpoint())
6061
defer r.mutex.Unlock()
6162

62-
grpcEndpoints := generateNSAddresses(r.target.Endpoint())
6363
if len(grpcEndpoints) == 0 {
64-
msg := "resolver produced zero addresses"
65-
resolverDebug(msg)
66-
r.cc.ReportError(errors.New(msg))
67-
return
64+
// try 8 times over 2 seconds to get gRPC addresses as we may be in the middle of fail-over
65+
for i := 0; i < 8; i++ {
66+
resolverDebug("retrying NSLookup attempt", i)
67+
time.Sleep(time.Duration(250) * time.Millisecond)
68+
grpcEndpoints = generateNSAddresses(r.target.Endpoint())
69+
if len(grpcEndpoints) != 0 {
70+
break
71+
}
72+
}
73+
74+
if len(grpcEndpoints) == 0 {
75+
msg := "resolver produced zero addresses"
76+
resolverDebug(msg)
77+
r.cc.ReportError(errors.New(msg))
78+
return
79+
}
6880
}
6981

7082
addresses := make([]resolver.Address, len(grpcEndpoints))

0 commit comments

Comments
 (0)