Skip to content

Commit 442f85d

Browse files
committed
fix: unable to register scanner after bumping the latest nv
Signed-off-by: pohanhuang <pohan.huang@suse.com>
1 parent 82b0e47 commit 442f85d

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed

server.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ const (
2828
retryMax = 3 // Number of retry
2929
)
3030

31+
const scannerRegisterStreamCloseCompatErr = "cardinality violation: received no response message from non-server-streaming RPC"
32+
3133
func createEnforcerScanServiceWrapper(conn *grpc.ClientConn) cluster.Service {
3234
return share.NewEnforcerScanServiceClient(conn)
3335
}
@@ -347,13 +349,26 @@ func scannerRegisterStream(ctx context.Context, client share.ControllerScanServi
347349

348350
log.Info("Stream send done")
349351
if _, err = stream.CloseAndRecv(); err != nil && err != io.EOF {
352+
if isIgnorableScannerRegisterStreamCloseError(err) {
353+
log.WithFields(log.Fields{"error": err}).Debug("Ignore stream close compatibility error")
354+
return nil
355+
}
350356
log.WithFields(log.Fields{"error": err}).Error("Failed to close")
351357
return err
352358
}
353359

354360
return nil
355361
}
356362

363+
func isIgnorableScannerRegisterStreamCloseError(err error) bool {
364+
s, ok := status.FromError(err)
365+
if !ok || s.Code() != codes.Internal {
366+
return false
367+
}
368+
369+
return strings.Contains(s.Message(), scannerRegisterStreamCloseCompatErr)
370+
}
371+
357372
func downgradeCriticalSeverityInResult(sr *share.ScanResult) {
358373
for _, v := range sr.Vuls {
359374
if v.Severity == string(common.Critical) {

0 commit comments

Comments
 (0)