Unverified 提交 fffa3ec9 作者: Steven Allen 提交者: GitHub

Merge pull request #5625 from schomatis/feat/badger/add-truncate-option

badger: add truncate flag
...@@ -38,11 +38,15 @@ Uses a leveldb database to store key value pairs. ...@@ -38,11 +38,15 @@ Uses a leveldb database to store key value pairs.
## badgerds ## badgerds
Uses [badger](https://github.com/dgraph-io/badger) as a key value store. Uses [badger](https://github.com/dgraph-io/badger) as a key value store.
* `syncWrites`: Synchronize every write to disk.
* `truncate`: Truncate the DB if a corrupted sector is found (otherwise Badger won't start). This option is always set to `true` in Windows if `syncWrites` is set.
```json ```json
{ {
"type": "badgerds", "type": "badgerds",
"path": "<location of badger inside repo", "path": "<location of badger inside repo",
"syncWrites": true|false "syncWrites": true|false,
"truncate": true|false,
} }
``` ```
......
...@@ -41,6 +41,7 @@ func (*badgerdsPlugin) DatastoreTypeName() string { ...@@ -41,6 +41,7 @@ func (*badgerdsPlugin) DatastoreTypeName() string {
type datastoreConfig struct { type datastoreConfig struct {
path string path string
syncWrites bool syncWrites bool
truncate bool
vlogFileSize int64 vlogFileSize int64
} }
...@@ -68,6 +69,17 @@ func (*badgerdsPlugin) DatastoreConfigParser() fsrepo.ConfigFromMap { ...@@ -68,6 +69,17 @@ func (*badgerdsPlugin) DatastoreConfigParser() fsrepo.ConfigFromMap {
} }
} }
truncate, ok := params["truncate"]
if !ok {
c.truncate = true
} else {
if truncate, ok := truncate.(bool); ok {
c.truncate = truncate
} else {
return nil, fmt.Errorf("'truncate' field was not a boolean")
}
}
vls, ok := params["vlogFileSize"] vls, ok := params["vlogFileSize"]
if !ok { if !ok {
// default to 1GiB // default to 1GiB
...@@ -108,6 +120,7 @@ func (c *datastoreConfig) Create(path string) (repo.Datastore, error) { ...@@ -108,6 +120,7 @@ func (c *datastoreConfig) Create(path string) (repo.Datastore, error) {
defopts := badgerds.DefaultOptions defopts := badgerds.DefaultOptions
defopts.SyncWrites = c.syncWrites defopts.SyncWrites = c.syncWrites
defopts.Truncate = c.truncate
defopts.ValueLogFileSize = c.vlogFileSize defopts.ValueLogFileSize = c.vlogFileSize
return badgerds.NewDatastore(p, &defopts) return badgerds.NewDatastore(p, &defopts)
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论