From b92ce6b3646a112a1a6ada9de1d351373e516ed4 Mon Sep 17 00:00:00 2001 From: jt-dd Date: Tue, 14 Jan 2025 17:10:58 +0100 Subject: [PATCH] forcing flushing in case of error --- pkg/kubehound/graph/adapter/mongo.go | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/pkg/kubehound/graph/adapter/mongo.go b/pkg/kubehound/graph/adapter/mongo.go index 1fbfbfd59..1b5656501 100644 --- a/pkg/kubehound/graph/adapter/mongo.go +++ b/pkg/kubehound/graph/adapter/mongo.go @@ -2,6 +2,7 @@ package adapter import ( "context" + "errors" "github.com/DataDog/KubeHound/pkg/kubehound/graph/types" "github.com/DataDog/KubeHound/pkg/kubehound/storage/storedb" @@ -24,18 +25,21 @@ func MongoDB(ctx context.Context, store storedb.Provider) *mongo.Database { func MongoCursorHandler[T any](ctx context.Context, cur *mongo.Cursor, callback types.ProcessEntryCallback, complete types.CompleteQueryCallback) error { + var lastErr error for cur.Next(ctx) { var entry T - err := cur.Decode(&entry) - if err != nil { - return err + lastErr = cur.Decode(&entry) + if lastErr != nil { + break } - err = callback(ctx, &entry) - if err != nil { - return err + lastErr = callback(ctx, &entry) + if lastErr != nil { + break } } + err := complete(ctx) + err = errors.Join(err, lastErr) - return complete(ctx) + return err }