Skip to content

Commit

Permalink
fix: etcd scheme on grpc resolver, because of grpc resolver logic cha…
Browse files Browse the repository at this point in the history
…nged
  • Loading branch information
kevwan committed May 6, 2024
1 parent 588e10d commit 403cec0
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 10 deletions.
42 changes: 33 additions & 9 deletions zrpc/resolver/internal/discovbuilder.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,44 @@ import (
"google.golang.org/grpc/resolver"
)

type discovBuilder struct{}
type discovBuilder struct {
cc resolver.ClientConn
update func()
}

func (b *discovBuilder) Build(target resolver.Target, cc resolver.ClientConn, _ resolver.BuildOptions) (
resolver.Resolver, error) {
b.cc = cc
if err := b.updateState(target); err != nil {
return nil, err
}

return &nopResolver{cc: cc}, nil

Check warning on line 24 in zrpc/resolver/internal/discovbuilder.go

View check run for this annotation

Codecov / codecov/patch

zrpc/resolver/internal/discovbuilder.go#L24

Added line #L24 was not covered by tests
}

func (b *discovBuilder) Scheme() string {
return DiscovScheme
}

func (b *discovBuilder) updateState(target resolver.Target) error {
if b.update == nil {
if err := b.buildEndpointsUpdater(target); err != nil {
return err
}
}

b.update()

Check warning on line 38 in zrpc/resolver/internal/discovbuilder.go

View check run for this annotation

Codecov / codecov/patch

zrpc/resolver/internal/discovbuilder.go#L38

Added line #L38 was not covered by tests

return nil

Check warning on line 40 in zrpc/resolver/internal/discovbuilder.go

View check run for this annotation

Codecov / codecov/patch

zrpc/resolver/internal/discovbuilder.go#L40

Added line #L40 was not covered by tests
}

func (b *discovBuilder) buildEndpointsUpdater(target resolver.Target) error {
hosts := strings.FieldsFunc(targets.GetAuthority(target), func(r rune) bool {
return r == EndpointSepChar
})
sub, err := discov.NewSubscriber(hosts, targets.GetEndpoints(target))
if err != nil {
return nil, err
return err
}

update := func() {
Expand All @@ -28,18 +56,14 @@ func (b *discovBuilder) Build(target resolver.Target, cc resolver.ClientConn, _
Addr: val,
})
}
if err := cc.UpdateState(resolver.State{
if err := b.cc.UpdateState(resolver.State{

Check warning on line 59 in zrpc/resolver/internal/discovbuilder.go

View check run for this annotation

Codecov / codecov/patch

zrpc/resolver/internal/discovbuilder.go#L59

Added line #L59 was not covered by tests
Addresses: addrs,
}); err != nil {
logx.Error(err)
}
}
sub.AddListener(update)
update()
b.update = update

Check warning on line 66 in zrpc/resolver/internal/discovbuilder.go

View check run for this annotation

Codecov / codecov/patch

zrpc/resolver/internal/discovbuilder.go#L66

Added line #L66 was not covered by tests

return &nopResolver{cc: cc}, nil
}

func (b *discovBuilder) Scheme() string {
return DiscovScheme
return nil

Check warning on line 68 in zrpc/resolver/internal/discovbuilder.go

View check run for this annotation

Codecov / codecov/patch

zrpc/resolver/internal/discovbuilder.go#L68

Added line #L68 was not covered by tests
}
3 changes: 2 additions & 1 deletion zrpc/resolver/internal/kubebuilder.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@ type kubeResolver struct {
stopCh chan struct{}
}

func (r *kubeResolver) ResolveNow(_ resolver.ResolveNowOptions) {}
func (r *kubeResolver) ResolveNow(_ resolver.ResolveNowOptions) {

Check warning on line 29 in zrpc/resolver/internal/kubebuilder.go

View check run for this annotation

Codecov / codecov/patch

zrpc/resolver/internal/kubebuilder.go#L29

Added line #L29 was not covered by tests
}

func (r *kubeResolver) start() {
threading.GoSafe(func() {
Expand Down

0 comments on commit 403cec0

Please sign in to comment.