From 0f618920c90c67fc6993b0a6fe498c748640c3ff Mon Sep 17 00:00:00 2001 From: Carlos Salguero Date: Thu, 15 Aug 2019 17:43:49 -0300 Subject: [PATCH] Fixed fingerprinter --- .../mongolib/fingerprinter/fingerprinter.go | 22 +++++++++++++++++-- src/go/pt-mongodb-summary/main.go | 2 +- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/src/go/mongolib/fingerprinter/fingerprinter.go b/src/go/mongolib/fingerprinter/fingerprinter.go index b42fd8be..d589717d 100644 --- a/src/go/mongolib/fingerprinter/fingerprinter.go +++ b/src/go/mongolib/fingerprinter/fingerprinter.go @@ -8,6 +8,7 @@ import ( "strings" "go.mongodb.org/mongo-driver/bson" + "go.mongodb.org/mongo-driver/bson/primitive" "github.com/percona/percona-toolkit/src/go/mongolib/proto" "github.com/percona/percona-toolkit/src/go/mongolib/util" @@ -207,10 +208,27 @@ func getKeys(query interface{}, keyFilters []string, level int) []string { ks := []string{} var q []bson.M switch v := query.(type) { - case bson.M: + case primitive.M: q = append(q, v) case []bson.M: q = v + case primitive.A: + for _, intval := range v { + ks = append(ks, getKeys(intval, keyFilters, level+1)...) + } + return ks + case proto.BsonD: + for _, intval := range v { + ks = append(ks, getKeys(intval, keyFilters, level+1)...) + } + return ks + case primitive.E: + if matched, _ := regexp.MatchString("^\\$", v.Key); !matched { + ks = append(ks, v.Key) + } + + ks = append(ks, getKeys(v.Value, keyFilters, level+1)...) + return ks default: return ks } @@ -225,7 +243,7 @@ func getKeys(query interface{}, keyFilters []string, level int) []string { ks = append(ks, key) } - ks = append(ks, getKeys(value, keyFilters, level)...) + ks = append(ks, getKeys(value, keyFilters, level+1)...) } } } diff --git a/src/go/pt-mongodb-summary/main.go b/src/go/pt-mongodb-summary/main.go index 4662512f..a59a7fc1 100644 --- a/src/go/pt-mongodb-summary/main.go +++ b/src/go/pt-mongodb-summary/main.go @@ -32,7 +32,7 @@ const ( TOOLNAME = "pt-mongodb-summary" DefaultAuthDB = "admin" - DefaultHost = "localhost:27017" + DefaultHost = "mongodb://localhost:27017" DefaultLogLevel = "warn" DefaultRunningOpsInterval = 1000 // milliseconds DefaultRunningOpsSamples = 5