@@ -12,13 +12,16 @@ import (
1212 "github.com/oracle/coherence-go-client/v2/coherence/discovery"
1313 "google.golang.org/grpc/resolver"
1414 "math/rand"
15+ "strconv"
1516 "strings"
1617 "sync"
1718 "time"
1819)
1920
2021const (
21- nsLookupScheme = "coherence"
22+ nsLookupScheme = "coherence"
23+ defaultRetries = 20
24+ defaultResolverDelay = 1000 // ms
2225)
2326
2427var (
@@ -42,16 +45,27 @@ func (b *nsLookupResolverBuilder) Build(target resolver.Target, cc resolver.Clie
4245 }
4346 checkResolverDebug ()
4447
48+ // set the number of resolver retried
49+ retries := getStringValueFromEnvVarOrDefault (envResolverRetries , "20" )
50+ retriesValue , err := strconv .Atoi (retries )
51+ if err != nil {
52+ retriesValue = defaultRetries
53+ }
54+
55+ resolverDebug ("resolver retries=%v" , retriesValue )
56+ r .resolverRetries = retriesValue
57+
4558 r .start ()
4659 return r , nil
4760}
4861func (* nsLookupResolverBuilder ) Scheme () string { return nsLookupScheme }
4962
5063type nsLookupResolver struct {
51- target resolver.Target
52- cc resolver.ClientConn
53- mutex sync.Mutex
54- addrStore map [string ][]string
64+ target resolver.Target
65+ cc resolver.ClientConn
66+ mutex sync.Mutex
67+ addrStore map [string ][]string
68+ resolverRetries int
5569}
5670
5771func (r * nsLookupResolver ) resolve () {
@@ -60,10 +74,10 @@ func (r *nsLookupResolver) resolve() {
6074 defer r .mutex .Unlock ()
6175
6276 if len (grpcEndpoints ) == 0 {
63- // try 8 times over 2 seconds to get gRPC addresses as we may be in the middle of fail-over
64- for i := 0 ; i < 8 ; i ++ {
65- resolverDebug ("retrying NSLookup attempt" , i )
66- time .Sleep (time .Duration (250 ) * time .Millisecond )
77+ // try r.resolverRetries; times over 2 seconds to get gRPC addresses as we may be in the middle of fail-over
78+ for i := 1 ; i <= r . resolverRetries ; i ++ {
79+ resolverDebug ("retrying NSLookup attempt: %v " , i )
80+ time .Sleep (time .Duration (defaultResolverDelay ) * time .Millisecond )
6781 grpcEndpoints = generateNSAddresses (r .target .Endpoint ())
6882 if len (grpcEndpoints ) != 0 {
6983 break
0 commit comments