configurable mossStoreOptions and DeferredSort defaults to true
This commit is contained in:
parent
92cf2a8974
commit
4e531ae11b
@ -15,6 +15,7 @@
|
|||||||
package moss
|
package moss
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"sync"
|
"sync"
|
||||||
@ -26,12 +27,11 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func initLowerLevelStore(
|
func initLowerLevelStore(
|
||||||
mo store.MergeOperator,
|
|
||||||
config map[string]interface{},
|
config map[string]interface{},
|
||||||
lowerLevelStoreName string,
|
lowerLevelStoreName string,
|
||||||
lowerLevelStoreConfig map[string]interface{},
|
lowerLevelStoreConfig map[string]interface{},
|
||||||
lowerLevelMaxBatchSize uint64,
|
lowerLevelMaxBatchSize uint64,
|
||||||
logf func(format string, a ...interface{}),
|
options moss.CollectionOptions,
|
||||||
) (moss.Snapshot, moss.LowerLevelUpdate, store.KVStore, error) {
|
) (moss.Snapshot, moss.LowerLevelUpdate, store.KVStore, error) {
|
||||||
if lowerLevelStoreConfig == nil {
|
if lowerLevelStoreConfig == nil {
|
||||||
lowerLevelStoreConfig = map[string]interface{}{}
|
lowerLevelStoreConfig = map[string]interface{}{}
|
||||||
@ -45,7 +45,7 @@ func initLowerLevelStore(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if lowerLevelStoreName == "mossStore" {
|
if lowerLevelStoreName == "mossStore" {
|
||||||
return InitMossStore(mo, lowerLevelStoreConfig)
|
return InitMossStore(lowerLevelStoreConfig, options)
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor := registry.KVStoreConstructorByName(lowerLevelStoreName)
|
constructor := registry.KVStoreConstructorByName(lowerLevelStoreName)
|
||||||
@ -54,7 +54,7 @@ func initLowerLevelStore(
|
|||||||
" could not find lower level store: %s", lowerLevelStoreName)
|
" could not find lower level store: %s", lowerLevelStoreName)
|
||||||
}
|
}
|
||||||
|
|
||||||
kvStore, err := constructor(mo, lowerLevelStoreConfig)
|
kvStore, err := constructor(options.MergeOperator, lowerLevelStoreConfig)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, nil, err
|
return nil, nil, nil, err
|
||||||
}
|
}
|
||||||
@ -64,7 +64,7 @@ func initLowerLevelStore(
|
|||||||
config: config,
|
config: config,
|
||||||
llConfig: lowerLevelStoreConfig,
|
llConfig: lowerLevelStoreConfig,
|
||||||
kvStore: kvStore,
|
kvStore: kvStore,
|
||||||
logf: logf,
|
logf: options.Log,
|
||||||
}
|
}
|
||||||
|
|
||||||
llUpdate := func(ssHigher moss.Snapshot) (ssLower moss.Snapshot, err error) {
|
llUpdate := func(ssHigher moss.Snapshot) (ssLower moss.Snapshot, err error) {
|
||||||
@ -409,7 +409,7 @@ func (lli *llIterator) CurrentEx() (
|
|||||||
|
|
||||||
// ------------------------------------------------
|
// ------------------------------------------------
|
||||||
|
|
||||||
func InitMossStore(mo store.MergeOperator, config map[string]interface{}) (
|
func InitMossStore(config map[string]interface{}, options moss.CollectionOptions) (
|
||||||
moss.Snapshot, moss.LowerLevelUpdate, store.KVStore, error) {
|
moss.Snapshot, moss.LowerLevelUpdate, store.KVStore, error) {
|
||||||
path, ok := config["path"].(string)
|
path, ok := config["path"].(string)
|
||||||
if !ok {
|
if !ok {
|
||||||
@ -422,12 +422,23 @@ func InitMossStore(mo store.MergeOperator, config map[string]interface{}) (
|
|||||||
path, err)
|
path, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
s, err := moss.OpenStore(path, moss.StoreOptions{ // TODO: more options.
|
storeOptions := moss.StoreOptions{
|
||||||
CollectionOptions: moss.CollectionOptions{
|
CollectionOptions: options,
|
||||||
MergeOperator: mo,
|
}
|
||||||
},
|
v, ok := config["mossStoreOptions"]
|
||||||
CompactionPercentage: 0.0,
|
if ok {
|
||||||
})
|
b, err := json.Marshal(v) // Convert from map[string]interface{}.
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = json.Unmarshal(b, &storeOptions)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
s, err := moss.OpenStore(path, storeOptions)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, nil, fmt.Errorf("lower: moss.OpenStore, path: %s, err: %v",
|
return nil, nil, nil, fmt.Errorf("lower: moss.OpenStore, path: %s, err: %v",
|
||||||
path, err)
|
path, err)
|
||||||
|
@ -65,6 +65,9 @@ func New(mo store.MergeOperator, config map[string]interface{}) (
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
options.MergeOperator = mo
|
||||||
|
options.DeferredSort = true
|
||||||
|
|
||||||
v, ok = config["mossCollectionOptions"]
|
v, ok = config["mossCollectionOptions"]
|
||||||
if ok {
|
if ok {
|
||||||
b, err := json.Marshal(v) // Convert from map[string]interface{}.
|
b, err := json.Marshal(v) // Convert from map[string]interface{}.
|
||||||
@ -125,11 +128,11 @@ func New(mo store.MergeOperator, config map[string]interface{}) (
|
|||||||
}
|
}
|
||||||
|
|
||||||
lowerLevelInit, lowerLevelUpdate, lowerLevelStore, err :=
|
lowerLevelInit, lowerLevelUpdate, lowerLevelStore, err :=
|
||||||
initLowerLevelStore(mo, config,
|
initLowerLevelStore(config,
|
||||||
mossLowerLevelStoreName,
|
mossLowerLevelStoreName,
|
||||||
mossLowerLevelStoreConfig,
|
mossLowerLevelStoreConfig,
|
||||||
mossLowerLevelMaxBatchSize,
|
mossLowerLevelMaxBatchSize,
|
||||||
options.Log)
|
options)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -141,8 +144,6 @@ func New(mo store.MergeOperator, config map[string]interface{}) (
|
|||||||
|
|
||||||
// --------------------------------------------------
|
// --------------------------------------------------
|
||||||
|
|
||||||
options.MergeOperator = mo
|
|
||||||
|
|
||||||
ms, err := moss.NewCollection(options)
|
ms, err := moss.NewCollection(options)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
Loading…
Reference in New Issue
Block a user