diff --git a/pkg/kubehound/graph/adapter/mongo.go b/pkg/kubehound/graph/adapter/mongo.go index 1fbfbfd5..1b565650 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 }