fix: preserve wrapped request and descriptor errors (#579)

This commit is contained in:
ginavalent
2026-09-01 02:29:11 +08:00
committed by GitHub
parent 7884ecb9c6
commit 8568146e02
+7 -7
View File
@@ -106,7 +106,7 @@ func InvokeRPC(ctx context.Context, source DescriptorSource, ch grpcdynamic.Chan
case isNotFoundError(err): case isNotFoundError(err):
return fmt.Errorf("target server does not expose service %q", svc) return fmt.Errorf("target server does not expose service %q", svc)
} }
return fmt.Errorf("failed to query for service descriptor %q: %v", svc, err) return fmt.Errorf("failed to query for service descriptor %q: %w", svc, err)
} }
sd, ok := dsc.(*desc.ServiceDescriptor) sd, ok := dsc.(*desc.ServiceDescriptor)
if !ok { if !ok {
@@ -155,7 +155,7 @@ func invokeUnary(ctx context.Context, stub grpcdynamic.Stub, md *desc.MethodDesc
err := requestData(req) err := requestData(req)
if err != nil && err != io.EOF { if err != nil && err != io.EOF {
return fmt.Errorf("error getting request data: %v", err) return fmt.Errorf("error getting request data: %w", err)
} }
if err != io.EOF { if err != io.EOF {
// verify there is no second message, which is a usage error // verify there is no second message, which is a usage error
@@ -163,7 +163,7 @@ func invokeUnary(ctx context.Context, stub grpcdynamic.Stub, md *desc.MethodDesc
if err == nil { if err == nil {
return fmt.Errorf("method %q is a unary RPC, but request data contained more than 1 message", md.GetFullyQualifiedName()) return fmt.Errorf("method %q is a unary RPC, but request data contained more than 1 message", md.GetFullyQualifiedName())
} else if err != io.EOF { } else if err != io.EOF {
return fmt.Errorf("error getting request data: %v", err) return fmt.Errorf("error getting request data: %w", err)
} }
} }
@@ -205,7 +205,7 @@ func invokeClientStream(ctx context.Context, stub grpcdynamic.Stub, md *desc.Met
break break
} }
if err != nil { if err != nil {
return fmt.Errorf("error getting request data: %v", err) return fmt.Errorf("error getting request data: %w", err)
} }
err = str.SendMsg(req) err = str.SendMsg(req)
@@ -249,7 +249,7 @@ func invokeServerStream(ctx context.Context, stub grpcdynamic.Stub, md *desc.Met
err := requestData(req) err := requestData(req)
if err != nil && err != io.EOF { if err != nil && err != io.EOF {
return fmt.Errorf("error getting request data: %v", err) return fmt.Errorf("error getting request data: %w", err)
} }
if err != io.EOF { if err != io.EOF {
// verify there is no second message, which is a usage error // verify there is no second message, which is a usage error
@@ -257,7 +257,7 @@ func invokeServerStream(ctx context.Context, stub grpcdynamic.Stub, md *desc.Met
if err == nil { if err == nil {
return fmt.Errorf("method %q is a server-streaming RPC, but request data contained more than 1 message", md.GetFullyQualifiedName()) return fmt.Errorf("method %q is a server-streaming RPC, but request data contained more than 1 message", md.GetFullyQualifiedName())
} else if err != io.EOF { } else if err != io.EOF {
return fmt.Errorf("error getting request data: %v", err) return fmt.Errorf("error getting request data: %w", err)
} }
} }
@@ -326,7 +326,7 @@ func invokeBidi(ctx context.Context, stub grpcdynamic.Stub, md *desc.MethodDescr
break break
} }
if err != nil { if err != nil {
err = fmt.Errorf("error getting request data: %v", err) err = fmt.Errorf("error getting request data: %w", err)
cancel() cancel()
break break
} }