Skip to content

Commit 36e4810

Browse files
authored
orca: cleanup old code, and get grpc package to use new code (#5627)
1 parent e8866a8 commit 36e4810

File tree

5 files changed

+26
-183
lines changed

5 files changed

+26
-183
lines changed

balancer/balancer.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,7 @@ type DoneInfo struct {
244244
// ServerLoad is the load received from server. It's usually sent as part of
245245
// trailing metadata.
246246
//
247-
// The only supported type now is *orca_v1.LoadReport.
247+
// The only supported type now is *orca_v3.LoadReport.
248248
ServerLoad interface{}
249249
}
250250

orca/orca.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ import (
3434
"google.golang.org/grpc"
3535
"google.golang.org/grpc/grpclog"
3636
"google.golang.org/grpc/internal"
37+
"google.golang.org/grpc/internal/balancerload"
3738
"google.golang.org/grpc/metadata"
3839
"google.golang.org/protobuf/proto"
3940

@@ -162,3 +163,24 @@ func ToLoadReport(md metadata.MD) (*v3orcapb.OrcaLoadReport, error) {
162163
}
163164
return ret, nil
164165
}
166+
167+
// loadParser implements the Parser interface defined in `internal/balancerload`
168+
// package. This interface is used by the client stream to parse load reports
169+
// sent by the server in trailer metadata. The parsed loads are then sent to
170+
// balancers via balancer.DoneInfo.
171+
//
172+
// The grpc package cannot directly call orca.ToLoadReport() as that would cause
173+
// an import cycle. Hence this roundabout method is used.
174+
type loadParser struct{}
175+
176+
func (loadParser) Parse(md metadata.MD) interface{} {
177+
lr, err := ToLoadReport(md)
178+
if err != nil {
179+
logger.Errorf("Parse(%v) failed: %v", err)
180+
}
181+
return lr
182+
}
183+
184+
func init() {
185+
balancerload.SetParser(loadParser{})
186+
}

xds/internal/balancer/clusterimpl/picker.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,15 @@
1919
package clusterimpl
2020

2121
import (
22-
orcapb "github.com/cncf/xds/go/xds/data/orca/v3"
2322
"google.golang.org/grpc/balancer"
2423
"google.golang.org/grpc/codes"
2524
"google.golang.org/grpc/connectivity"
2625
"google.golang.org/grpc/internal/wrr"
2726
"google.golang.org/grpc/status"
2827
"google.golang.org/grpc/xds/internal/xdsclient"
2928
"google.golang.org/grpc/xds/internal/xdsclient/load"
29+
30+
v3orcapb "github.com/cncf/xds/go/xds/data/orca/v3"
3031
)
3132

3233
// NewRandomWRR is used when calculating drops. It's exported so that tests can
@@ -158,7 +159,7 @@ func (d *picker) Pick(info balancer.PickInfo) (balancer.PickResult, error) {
158159
}
159160
d.loadStore.CallFinished(lIDStr, info.Err)
160161

161-
load, ok := info.ServerLoad.(*orcapb.OrcaLoadReport)
162+
load, ok := info.ServerLoad.(*v3orcapb.OrcaLoadReport)
162163
if !ok {
163164
return
164165
}

xds/internal/balancer/orca/orca.go

Lines changed: 0 additions & 84 deletions
This file was deleted.

xds/internal/balancer/orca/orca_test.go

Lines changed: 0 additions & 96 deletions
This file was deleted.

0 commit comments

Comments
 (0)