diff options
| author | bukton <buk_ton2@hotmail.com> | 2020-04-19 17:51:32 +0700 |
|---|---|---|
| committer | bukton <buk_ton2@hotmail.com> | 2020-04-19 17:51:32 +0700 |
| commit | d6d245dc895edeb16001d9efb0bd57764f4eeefb (patch) | |
| tree | e9a0e87a8b3d8041544d9a162cf5c70f88d008aa | |
| parent | 082f079ead5632742ce470548726b040f5cd5e24 (diff) | |
| download | seaweedfs-d6d245dc895edeb16001d9efb0bd57764f4eeefb.tar.xz seaweedfs-d6d245dc895edeb16001d9efb0bd57764f4eeefb.zip | |
filer mongodb add option poll size and fixed order by list meta
| -rw-r--r-- | weed/filer2/mongodb/mongodb_store.go | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/weed/filer2/mongodb/mongodb_store.go b/weed/filer2/mongodb/mongodb_store.go index 965634947..4e78c54a4 100644 --- a/weed/filer2/mongodb/mongodb_store.go +++ b/weed/filer2/mongodb/mongodb_store.go @@ -36,12 +36,19 @@ func (store *MongodbStore) GetName() string { func (store *MongodbStore) Initialize(configuration util.Configuration, prefix string) (err error) { store.database = configuration.GetString(prefix + "database") store.collectionName = "filemeta" - return store.connection(configuration.GetString(prefix + "uri")) + poolSize := configuration.GetInt(prefix + "option_pool_size") + return store.connection(configuration.GetString(prefix + "uri"), uint64(poolSize)) } -func (store *MongodbStore) connection(uri string) (err error) { +func (store *MongodbStore) connection(uri string, poolSize uint64) (err error) { ctx, _ := context.WithTimeout(context.Background(), 10*time.Second) - client, err := mongo.Connect(ctx, options.Client().ApplyURI(uri)) + opts := options.Client().ApplyURI(uri) + + if poolSize > 0 { + opts.SetMaxPoolSize(poolSize) + } + + client, err := mongo.Connect(ctx, opts) store.connect = client return err } @@ -141,7 +148,8 @@ func (store *MongodbStore) ListDirectoryEntries(ctx context.Context, fullpath ut } } optLimit := int64(limit) - cur, err := store.connect.Database(store.database).Collection(store.collectionName).Find(ctx, where, &options.FindOptions{Limit: &optLimit}) + opts := &options.FindOptions{Limit: &optLimit, Sort: bson.M{ "name": 1 }} + cur, err := store.connect.Database(store.database).Collection(store.collectionName).Find(ctx, where, opts) for cur.Next(ctx) { var data Model err := cur.Decode(&data) |
