diff --git a/.gitignore b/.gitignore index 763f3c39..b7c3c335 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,6 @@ +dev-bin/ go.sum +golangci-lint migration_verifier internal/verifier/mongodb_exec/ verifier_expansion.yml diff --git a/internal/verifier/change_stream.go b/internal/verifier/change_stream.go index e9471dd7..5917a956 100644 --- a/internal/verifier/change_stream.go +++ b/internal/verifier/change_stream.go @@ -50,7 +50,7 @@ func (verifier *Verifier) HandleChangeStreamEvent(ctx context.Context, changeEve case "update": return verifier.InsertChangeEventRecheckDoc(ctx, changeEvent) default: - return fmt.Errorf(`Not supporting: "` + changeEvent.OpType + `" events`) + return errors.New(`Not supporting: "` + changeEvent.OpType + `" events`) } } diff --git a/internal/verifier/list_namespaces.go b/internal/verifier/list_namespaces.go index 2ab0603a..7ea1abbd 100644 --- a/internal/verifier/list_namespaces.go +++ b/internal/verifier/list_namespaces.go @@ -10,8 +10,8 @@ import ( "go.mongodb.org/mongo-driver/mongo/options" ) -const ( - MongosyncMetaDB = "mongosync_reserved_for_internal_use" +var ( + MongosyncMetaDBsPattern = `^mongosync_(internal|reserved)_` ) var ( @@ -29,9 +29,14 @@ func ListAllUserCollections(ctx context.Context, logger *logger.Logger, client * excludedDBs := []string{} excludedDBs = append(excludedDBs, additionalExcludedDBs...) excludedDBs = append(excludedDBs, ExcludedSystemDBs...) - excludedDBs = append(excludedDBs, MongosyncMetaDB) - dbNames, err := client.ListDatabaseNames(ctx, bson.D{{"name", bson.D{{"$nin", excludedDBs}}}}) + var excluded []any + for _, e := range excludedDBs { + excluded = append(excluded, e) + } + excluded = append(excluded, primitive.Regex{Pattern: MongosyncMetaDBsPattern}) + + dbNames, err := client.ListDatabaseNames(ctx, bson.D{{"name", bson.D{{"$nin", excluded}}}}) if err != nil { return nil, err } diff --git a/internal/verifier/migration_verifier_test.go b/internal/verifier/migration_verifier_test.go index fa9b2c18..0e43beed 100644 --- a/internal/verifier/migration_verifier_test.go +++ b/internal/verifier/migration_verifier_test.go @@ -1265,8 +1265,14 @@ func (suite *MultiDataVersionTestSuite) TestVerifierNamespaceList() { suite.Require().NoError(err) err = suite.dstMongoClient.Database("testDb4").CreateCollection(ctx, "testColl6") suite.Require().NoError(err) + err = suite.dstMongoClient.Database("local").CreateCollection(ctx, "testColl7") + suite.Require().NoError(err) err = suite.dstMongoClient.Database("mongosync_reserved_for_internal_use").CreateCollection(ctx, "globalState") suite.Require().NoError(err) + err = suite.dstMongoClient.Database("mongosync_reserved_for_verification_src_metadata").CreateCollection(ctx, "auditor") + suite.Require().NoError(err) + err = suite.dstMongoClient.Database("mongosync_reserved_for_verification_dst_metadata").CreateCollection(ctx, "auditor") + suite.Require().NoError(err) err = verifier.setupAllNamespaceList(ctx) suite.Require().NoError(err) suite.ElementsMatch([]string{"testDb1.testColl1", "testDb1.testColl2", "testDb2.testColl3", "testDb2.testColl4", diff --git a/internal/verifier/verification_task.go b/internal/verifier/verification_task.go index f157a00f..b02dbe8a 100644 --- a/internal/verifier/verification_task.go +++ b/internal/verifier/verification_task.go @@ -71,7 +71,7 @@ type VerificationTask struct { // both clusters but don’t match. FailedDocs []VerificationResult `bson:"failed_docs,omitempty"` - QueryFilter QueryFilter `bson:"query_filter" json:"query_filter"` + QueryFilter QueryFilter `bson:"query_filter" json:"query_filter"` // DocumentCount is set when the verifier is done with the task // (whether we found mismatches or not). diff --git a/precious.toml b/precious.toml new file mode 100644 index 00000000..4000d8f1 --- /dev/null +++ b/precious.toml @@ -0,0 +1,15 @@ +# When adding new tidiers, consider what labels it should have. If it's fast, set labels like this: +# +# labels = [ "default", "fast-tidy" ] +# +# "Fast" here means anything less than 0.1s. These tidiers are intended to be invoked frequently, +# for example from editors on save. Slower tidiers should only be invoked manually. + +exclude = "vendor/**" + +[commands.goimports] +type = "tidy" +include = "**/*.go" +cmd = [ "$PRECIOUS_ROOT/dev-bin/goimports", "-w" ] +ok-exit-codes = [0] +labels = [ "default", "fast-tidy" ]