Skip to content

Commit 3f3a015

Browse files
committed
Ignore the “background” field in index specifications.
This fixes breakage found in mongosync’s testing after REP-5274.
1 parent 365482d commit 3f3a015

File tree

1 file changed

+16
-6
lines changed

1 file changed

+16
-6
lines changed

internal/verifier/migration_verifier.go

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import (
2727
"github.com/10gen/migration-verifier/option"
2828
"github.com/olekukonko/tablewriter"
2929
"github.com/pkg/errors"
30+
"github.com/samber/lo"
3031
"go.mongodb.org/mongo-driver/bson"
3132
"go.mongodb.org/mongo-driver/bson/primitive"
3233
"go.mongodb.org/mongo-driver/mongo"
@@ -888,6 +889,14 @@ func (verifier *Verifier) doIndexSpecsMatch(ctx context.Context, srcSpec bson.Ra
888889
return true, nil
889890
}
890891

892+
var fieldsToRemove = []string{
893+
// v4.4 stopped adding “ns” to index fields.
894+
"ns",
895+
896+
// v4.2+ ignores this field.
897+
"background",
898+
}
899+
891900
// Next check to see if the only differences are type differences.
892901
// (We can safely use $documents here since this is against the metadata
893902
// cluster, which we can require to be v5+.)
@@ -904,12 +913,13 @@ func (verifier *Verifier) doIndexSpecsMatch(ctx context.Context, srcSpec bson.Ra
904913
{"dstSpec", dstSpec},
905914
}}},
906915

907-
// Remove the “ns” field from both. (NB: 4.4+ don’t create these,
908-
// though in-place upgrades may cause them still to exist.)
909-
{{"$addFields", bson.D{
910-
{"spec.ns", "$$REMOVE"},
911-
{"dstSpec.ns", "$$REMOVE"},
912-
}}},
916+
{{"$unset", lo.Reduce(
917+
fieldsToRemove,
918+
func(cur []string, field string, _ int) []string {
919+
return append(cur, "spec."+field, "dstSpec."+field)
920+
},
921+
[]string{},
922+
)}},
913923

914924
// Now check to be sure that those specs match.
915925
{{"$match", bson.D{

0 commit comments

Comments
 (0)