Skip to content

Commit b90f8dd

Browse files
committed
ignore mongosync dbs in change stream
1 parent 551fd3b commit b90f8dd

File tree

2 files changed

+51
-1
lines changed

2 files changed

+51
-1
lines changed

internal/verifier/change_stream.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,10 @@ func (csr *ChangeStreamReader) GetChangeStreamFilter() (pipeline mongo.Pipeline)
213213
if len(csr.namespaces) == 0 {
214214
pipeline = mongo.Pipeline{
215215
{{"$match", bson.D{
216-
{"ns.db", bson.D{{"$ne", csr.metaDB.Name()}}},
216+
{"ns.db", bson.D{{"$nin", bson.A{
217+
primitive.Regex{Pattern: MongosyncMetaDBsPattern},
218+
csr.metaDB.Name(),
219+
}}}},
217220
}}},
218221
}
219222
} else {

internal/verifier/change_stream_test.go

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"github.com/10gen/migration-verifier/internal/util"
1010
"github.com/10gen/migration-verifier/mslices"
1111
"github.com/pkg/errors"
12+
"github.com/rs/zerolog"
1213
"github.com/samber/lo"
1314
"github.com/stretchr/testify/require"
1415
"go.mongodb.org/mongo-driver/bson"
@@ -580,3 +581,49 @@ func (suite *IntegrationTestSuite) TestLargeEvents() {
580581
suite.Require().NoError(verifier.WritesOff(ctx))
581582
suite.Require().NoError(verifierRunner.Await())
582583
}
584+
585+
// TestDropMongosyncDB verifies that writes to Mongosync's
586+
// metadata don’t affect migration-verifier.
587+
func (suite *IntegrationTestSuite) TestDropMongosyncDB() {
588+
ctx := suite.Context()
589+
590+
zerolog.SetGlobalLevel(zerolog.TraceLevel)
591+
592+
verifier := suite.BuildVerifier()
593+
594+
dbs := []string{
595+
"mongosync_reserved_for_internal_use",
596+
"mongosync_internal_foo",
597+
}
598+
599+
for _, dbname := range dbs {
600+
suite.Require().NoError(
601+
suite.dstMongoClient.
602+
Database(dbname).
603+
CreateCollection(ctx, "foo"),
604+
)
605+
}
606+
607+
verifier.SetVerifyAll(true)
608+
609+
runner := RunVerifierCheck(ctx, suite.T(), verifier)
610+
suite.Require().NoError(runner.AwaitGenerationEnd())
611+
612+
for _, dbname := range dbs {
613+
_, err := suite.dstMongoClient.
614+
Database(dbname).
615+
Collection("foo").
616+
InsertOne(ctx, bson.D{})
617+
suite.Require().NoError(err)
618+
619+
suite.Require().NoError(
620+
suite.dstMongoClient.
621+
Database(dbname).
622+
Drop(ctx),
623+
)
624+
}
625+
626+
suite.Require().NoError(verifier.WritesOff(ctx))
627+
628+
suite.Require().NoError(runner.Await())
629+
}

0 commit comments

Comments
 (0)