0
0
Fork 0

adopting json parsing on options,

fixed the inadvertant option modification
This commit is contained in:
Sreekanth Sivasankaran 2018-02-26 15:56:30 +05:30
parent a1db057656
commit e4cc79a9ad
1 changed files with 21 additions and 25 deletions

View File

@ -15,6 +15,7 @@
package scorch
import (
"encoding/json"
"fmt"
"os"
"sync/atomic"
@ -28,7 +29,13 @@ import (
func (s *Scorch) mergerLoop() {
var lastEpochMergePlanned uint64
mergePlannerOptions := s.parseMergePlannerOptions()
mergePlannerOptions, err := s.parseMergePlannerOptions()
if err != nil {
s.fireAsyncError(fmt.Errorf("mergePlannerOption json parsing err: %v", err))
s.asyncTasks.Done()
return
}
OUTER:
for {
select {
@ -83,32 +90,21 @@ OUTER:
s.asyncTasks.Done()
}
func (s *Scorch) parseMergePlannerOptions() *mergeplan.MergePlanOptions {
mergePlannerOptions := &mergeplan.DefaultMergePlanOptions
scorchOptions := map[string]interface{}{}
if v, ok := s.config["scorchOptions"]; ok {
if scorchOptions, ok = v.(map[string]interface{}); ok {
if v, ok := scorchOptions["maxSegmentsPerTier"].(float64); ok {
mergePlannerOptions.MaxSegmentsPerTier = int(v)
}
if v, ok := scorchOptions["maxSegmentSize"].(float64); ok {
mergePlannerOptions.MaxSegmentSize = int64(v)
}
if v, ok := scorchOptions["tierGrowth"].(float64); ok {
mergePlannerOptions.TierGrowth = v
}
if v, ok := scorchOptions["segmentsPerMergeTask"].(float64); ok {
mergePlannerOptions.SegmentsPerMergeTask = int(v)
}
if v, ok := scorchOptions["floorSegmentSize"].(float64); ok {
mergePlannerOptions.FloorSegmentSize = int64(v)
}
if v, ok := scorchOptions["reclaimDeletesWeight"].(float64); ok {
mergePlannerOptions.ReclaimDeletesWeight = v
}
func (s *Scorch) parseMergePlannerOptions() (*mergeplan.MergePlanOptions,
error) {
mergePlannerOptions := mergeplan.DefaultMergePlanOptions
if v, ok := s.config["scorchMergePlanOptions"]; ok {
b, err := json.Marshal(v)
if err != nil {
return &mergePlannerOptions, err
}
err = json.Unmarshal(b, &mergePlannerOptions)
if err != nil {
return &mergePlannerOptions, err
}
}
return mergePlannerOptions
return &mergePlannerOptions, nil
}
func (s *Scorch) planMergeAtSnapshot(ourSnapshot *IndexSnapshot,