feat: more meaningful error messages, close body on httpc requests (#2238)

* feat: more meaningful error messages, close body on httpc requests

* fix: test failure
This commit is contained in:
Kevin Wan
2022-08-07 16:09:54 +08:00
committed by GitHub
parent c1c7584de1
commit a987512c7b
5 changed files with 26 additions and 5 deletions

View File

@@ -59,6 +59,10 @@ func (s *Server) Stop() {
}
func (s *Server) build() error {
if err := s.ensureUpstreamNames(); err != nil {
return err
}
return mr.MapReduceVoid(func(source chan<- interface{}) {
for _, up := range s.upstreams {
source <- up
@@ -68,13 +72,13 @@ func (s *Server) build() error {
cli := zrpc.MustNewClient(up.Grpc)
source, err := s.createDescriptorSource(cli, up)
if err != nil {
cancel(err)
cancel(fmt.Errorf("%s: %w", up.Name, err))
return
}
methods, err := internal.GetMethods(source)
if err != nil {
cancel(err)
cancel(fmt.Errorf("%s: %w", up.Name, err))
return
}
@@ -95,7 +99,7 @@ func (s *Server) build() error {
}
for _, m := range up.Mappings {
if _, ok := methodSet[m.RpcPath]; !ok {
cancel(fmt.Errorf("rpc method %s not found", m.RpcPath))
cancel(fmt.Errorf("%s: rpc method %s not found", up.Name, m.RpcPath))
return
}
@@ -162,6 +166,19 @@ func (s *Server) createDescriptorSource(cli zrpc.Client, up Upstream) (grpcurl.D
return source, nil
}
func (s *Server) ensureUpstreamNames() error {
for _, up := range s.upstreams {
target, err := up.Grpc.BuildTarget()
if err != nil {
return err
}
up.Name = target
}
return nil
}
func (s *Server) prepareMetadata(header http.Header) []string {
vals := internal.ProcessHeaders(header)
if s.processHeader != nil {