From 7c177b4f29cad2671e540d2af22994206b7d7685 Mon Sep 17 00:00:00 2001 From: Easwar Swaminathan Date: Mon, 1 Aug 2022 14:27:28 -0700 Subject: [PATCH] priority: sync priority with child in use --- xds/internal/balancer/priority/balancer.go | 2 +- xds/internal/balancer/priority/balancer_priority.go | 3 ++- xds/internal/balancer/priority/balancer_test.go | 6 ------ 3 files changed, 3 insertions(+), 8 deletions(-) diff --git a/xds/internal/balancer/priority/balancer.go b/xds/internal/balancer/priority/balancer.go index d05ef18c287..b5cace68496 100644 --- a/xds/internal/balancer/priority/balancer.go +++ b/xds/internal/balancer/priority/balancer.go @@ -260,7 +260,7 @@ func (b *priorityBalancer) run() { b.handleChildStateUpdate(s.name, s.s) case resumePickerUpdates: b.inhibitPickerUpdates = false - b.syncPriority("") + b.syncPriority(b.childInUse) close(s.done) } b.mu.Unlock() diff --git a/xds/internal/balancer/priority/balancer_priority.go b/xds/internal/balancer/priority/balancer_priority.go index 33068709e29..c12dfe47ffe 100644 --- a/xds/internal/balancer/priority/balancer_priority.go +++ b/xds/internal/balancer/priority/balancer_priority.go @@ -69,6 +69,7 @@ var ( // Caller must hold b.mu. func (b *priorityBalancer) syncPriority(childUpdating string) { if b.inhibitPickerUpdates { + b.logger.Infof("Skipping update from child with name %q", childUpdating) return } for p, name := range b.priorities { @@ -84,7 +85,7 @@ func (b *priorityBalancer) syncPriority(childUpdating string) { (child.state.ConnectivityState == connectivity.Connecting && child.initTimer != nil) || p == len(b.priorities)-1 { if b.childInUse != child.name || child.name == childUpdating { - logger.Warningf("ciu, cn, cu: %v, %v, %v", b.childInUse, child.name, childUpdating) + b.logger.Warningf("childInUse, childUpdating: %q, %q", b.childInUse, child.name) // If we switch children or the child in use just updated its // picker, push the child's picker to the parent. b.cc.UpdateState(child.state) diff --git a/xds/internal/balancer/priority/balancer_test.go b/xds/internal/balancer/priority/balancer_test.go index ccf3a5edfc2..d3329378cd7 100644 --- a/xds/internal/balancer/priority/balancer_test.go +++ b/xds/internal/balancer/priority/balancer_test.go @@ -176,8 +176,6 @@ func (s) TestPriority_HighPriorityReady(t *testing.T) { } select { - case <-cc.NewPickerCh: - t.Fatalf("got unexpected new picker") case <-cc.NewSubConnCh: t.Fatalf("got unexpected new SubConn") case <-cc.RemoveSubConnCh: @@ -277,8 +275,6 @@ func (s) TestPriority_SwitchPriority(t *testing.T) { } select { - case <-cc.NewPickerCh: - t.Fatalf("got unexpected new picker") case sc := <-cc.NewSubConnCh: t.Fatalf("got unexpected new SubConn, %s", sc) case <-cc.RemoveSubConnCh: @@ -1194,8 +1190,6 @@ func (s) TestPriority_MoveReadyChildToHigherPriority(t *testing.T) { // Because this was a ready child moved to a higher priority, no new subconn // or picker should be updated. select { - case <-cc.NewPickerCh: - t.Fatalf("got unexpected new picker") case <-cc.NewSubConnCh: t.Fatalf("got unexpected new SubConn") case <-cc.RemoveSubConnCh: