Commit 92825222 authored by Sandeep S. Shewalkar's avatar Sandeep S. Shewalkar
Browse files

Lazywriter min data length changes

If data byte array size is less than 10, lazy writer will not accept the data
parent 62fcfb03
1 merge request!32Lazywriter min data length changes
Showing with 39 additions and 2 deletions
......@@ -17,6 +17,8 @@ import (
// var isDebugMode = false
var lazyMutex = &sync.Mutex{}
const MIN_DATA_LENGTH = 10
// LazyFDPHelper Helps to Save and Get cache object
// also saves information into hard disk
type LazyFDPHelper struct {
......@@ -146,18 +148,37 @@ func (lfd *LazyFDPHelper) saveObjectsToFdb() {
}
// SaveOrUpdateDataInCache this method will Save object in cache if unavailable
func (lfd *LazyFDPHelper) SaveOrUpdateDataInCache(newObject LazyCacheObject) {
func (lfd *LazyFDPHelper) SaveOrUpdateDataInCache(newObject LazyCacheObject) bool {
byteArray, marshalError := ffjson.Marshal(newObject.InterfaceData)
if marshalError != nil {
logginghelper.LogError("error occured while marshaling data ", marshalError)
return false
}
// check data length before saving. If less than assumed data length, return false
lengthOfData := len(byteArray)
if lengthOfData < MIN_DATA_LENGTH {
logginghelper.LogError("data size is less than minimun expected data length. Actual data length: ", lengthOfData)
logginghelper.LogError("data received: ", string(byteArray))
return false
}
retryCount := 0
retrylabel:
// Get prev object and then save new one
//TODO: catch errors
dataFromGC, getError := lfd.gc.Get(newObject.FileName)
if getError != nil || dataFromGC == nil {
newObject.ChangeCount = 1
lfd.gc.Set(newObject.FileName, newObject)
} else {
oldObject, _ := dataFromGC.(LazyCacheObject)
if oldObject.IsLocked && retryCount < lfd.MAX_NUMBER_OF_RETRY {
retryCount++
......@@ -176,20 +197,32 @@ retrylabel:
// lazyCacheObject.MEMORY_WRITE_COUNT++
// PerformanceAnalyser[newObject.FileName] = lazyCacheObject
// }
return true
}
//saveDataToFDB data to hard disk.
// This saves data by marshaling using json.Marshal
func saveDataToFDB(filePath string, objectData interface{}) {
func saveDataToFDB(filePath string, objectData interface{}) bool {
//TODO: catch errors
byteArray, marshalError := ffjson.Marshal(objectData)
if marshalError != nil {
logginghelper.LogError("error occured while marshaling data ", marshalError)
return false
}
// check data length before saving. If less than assumed data length, return false
lengthOfData := len(byteArray)
if lengthOfData < MIN_DATA_LENGTH {
logginghelper.LogError("data size is less than minimun expected data length. Actual data length: ", lengthOfData)
logginghelper.LogError("data received: ", string(byteArray))
return false
}
saveError := SaveDataToFDB(filePath, byteArray, true)
if saveError != nil {
logginghelper.LogError("error occured while saving data ", saveError)
return false
}
return true
}
// use it when req.
......@@ -403,3 +436,7 @@ func appendDataToFDB(filePath string, objectData interface{}) {
logginghelper.LogError("error occured while saving data ", saveError)
}
}
func Save(filePath string, data interface{}) {
saveDataToFDB(filePath, data)
}
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