add option to set syncWrites to badger
License: MIT Signed-off-by: Jeromy <jeromyj@gmail.com>
Jeromy committed
Sep 5, 2017 at 22:46 UTC
a9b8b90da1d6cc533b069735416158fc879efba6
2 files changed
+21
-4
repo/config/profile.go
+3
-2
@@ -46,8 +46,9 @@ var ConfigProfiles = map[string]func(*Config) error{
46
"type": "measure",
47
"prefix": "badger.datastore",
48
"child": map[string]interface{}{
49
- "type": "badgerds",
50
- "path": "badgerds",
49
+ "type": "badgerds",
50
+ "path": "badgerds",
51
+ "syncWrites": true,
52
},
53
}
54
return nil
repo/fsrepo/datastores.go
+18
-2
@@ -18,6 +18,7 @@ import (
18
19
badgerds "gx/ipfs/QmNWbaGdPCA3anCcvh4jm3VAahAbmmAsU58sp8Ti4KTJkL/go-ds-badger"
20
levelds "gx/ipfs/QmPdvXuXWAR6gtxxqZw42RtSADMwz4ijVmYHGS542b6cMz/go-ds-leveldb"
21
+ badger "gx/ipfs/QmQL7yJ4iWQdeAH9WvgJ4XYHS6m5DqL853Cck5SaUb8MAw/badger"
22
ldbopts "gx/ipfs/QmbBhyDKsY4mbY6xsKt3qu9Y7FPvMJ6qbD8AMjYYvPRw1g/goleveldb/leveldb/opt"
23
)
24
@@ -340,7 +341,8 @@ func (c measureDatastoreConfig) Create(path string) (repo.Datastore, error) {
341
}
342
343
type badgerdsDatastoreConfig struct {
343
- path string
344
+ path string
345
+ syncWrites bool
346
}
347
348
// BadgerdsDatastoreConfig returns a configuration stub for a badger datastore
@@ -354,6 +356,17 @@ func BadgerdsDatastoreConfig(params map[string]interface{}) (DatastoreConfig, er
356
return nil, fmt.Errorf("'path' field is missing or not string")
357
}
358
359
+ sw, ok := params["syncWrites"]
360
+ if !ok {
361
+ c.syncWrites = true
362
+ } else {
363
+ if swb, ok := sw.(bool); ok {
364
+ c.syncWrites = swb
365
+ } else {
366
+ return nil, fmt.Errorf("'syncWrites' field was not a boolean")
367
+ }
368
+ }
369
+
370
return &c, nil
371
}
372
@@ -375,5 +388,8 @@ func (c *badgerdsDatastoreConfig) Create(path string) (repo.Datastore, error) {
388
return nil, err
389
}
390
378
- return badgerds.NewDatastore(p, nil)
391
+ defopts := badger.DefaultOptions
392
+ defopts.SyncWrites = c.syncWrites
393
+
394
+ return badgerds.NewDatastore(p, &defopts)
395
}