Commit ced2b094 authored by Akshay Bharambe's avatar Akshay Bharambe
Browse files

Add: Lazy writer for append bucket

1. Add: Lazy writer for append bucket
parent fb8a9b48
2 merge requests!159Mep release 060220,!157Add: Lazywriter support for Normal and append bucket
Showing with 29 additions and 5 deletions
...@@ -568,8 +568,8 @@ var lazyCallBackFn lazywriter.SaveDataFn = func(bucketId string, data *lazywrite ...@@ -568,8 +568,8 @@ var lazyCallBackFn lazywriter.SaveDataFn = func(bucketId string, data *lazywrite
dataByte := []byte(dataObj.Get("data").String()) dataByte := []byte(dataObj.Get("data").String())
var err error var err error
switch bucketType { switch bucketType {
case BucketTypeSimple: // case BucketTypeSimple:
err = filemdl.WriteFile(data.FileName, dataByte, true, true) // err = filemdl.WriteFile(data.FileName, dataByte, true, true)
case BucketTypeAppend: case BucketTypeAppend:
_, _, err = filemdl.AppendDataToFile(data.FileName, dataByte, true) _, _, err = filemdl.AppendDataToFile(data.FileName, dataByte, true)
if err != nil { if err != nil {
...@@ -588,7 +588,7 @@ var lazyCallBackFn lazywriter.SaveDataFn = func(bucketId string, data *lazywrite ...@@ -588,7 +588,7 @@ var lazyCallBackFn lazywriter.SaveDataFn = func(bucketId string, data *lazywrite
} }
func saveDatInLazyBucket(bucket *Bucket, fp *os.File, data *gjson.Result, secParams securitymdl.FDBSecParams) error { func saveDatInLazyBucket(bucket *Bucket, fp *os.File, data *gjson.Result, secParams securitymdl.FDBSecParams) error {
if bucket.BucketType != BucketTypeSimple { if !(bucket.BucketType == BucketTypeSimple || bucket.BucketType == BucketTypeAppend) {
return errormdl.Wrap("save to lazy cache operation not allowed on this bucket type: " + bucket.BucketType) return errormdl.Wrap("save to lazy cache operation not allowed on this bucket type: " + bucket.BucketType)
} }
...@@ -612,7 +612,13 @@ func saveDatInLazyBucket(bucket *Bucket, fp *os.File, data *gjson.Result, secPar ...@@ -612,7 +612,13 @@ func saveDatInLazyBucket(bucket *Bucket, fp *os.File, data *gjson.Result, secPar
FileName: fp.Name(), FileName: fp.Name(),
Identifier: fp.Name(), Identifier: fp.Name(),
InterfaceData: "", InterfaceData: "",
SaveFn: (lazySec{secParams}).SaveFnForNormalBucket, SaveFn: func() lazywriter.SaveDataFn {
if bucket.BucketType == BucketTypeSimple {
return lazyCallBackFn
}
return (lazySec{secParams}).SaveFnForNormalBucket
}(),
} }
} }
...@@ -625,7 +631,25 @@ func saveDatInLazyBucket(bucket *Bucket, fp *os.File, data *gjson.Result, secPar ...@@ -625,7 +631,25 @@ func saveDatInLazyBucket(bucket *Bucket, fp *os.File, data *gjson.Result, secPar
case BucketTypeAppend: case BucketTypeAppend:
prevDataObj := gjson.Parse(prevDataStr) prevDataObj := gjson.Parse(prevDataStr)
prevData := prevDataObj.Get("data").String() prevData := prevDataObj.Get("data").String()
updatedData = prevData + data.String() + string(lineBreak) dataToSave := data.String()
rs := gjson.Parse(dataToSave)
if secParams.EnableSecurity {
// _, fileName := filepath.Split(f.Name())
key, err := securitymdl.GenSecKeyBytes(fp.Name(), &rs)
if err != nil {
loggermdl.LogError("failed to generate security key for append bucket: ", err)
return err
}
dataBytes, err := encryptWithCompression([]byte(dataToSave), secParams.EnableCompression, key)
if err != nil {
loggermdl.LogError("failed to encrypt data for append bucket: ", err)
return err
}
dataToSave = string(dataBytes)
}
updatedData = prevData + dataToSave + string(lineBreak)
default: default:
return errormdl.Wrap("operation not allowed on this bucket type: " + bucket.BucketType) return errormdl.Wrap("operation not allowed on this bucket type: " + bucket.BucketType)
} }
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment