Commit 31a18b12 authored by Akshay Bharambe's avatar Akshay Bharambe
Browse files

Fix: Data updated but error thrown because of deleted records.

1. Fix: Data updated but error thrown because of deleted records.
parent 2ac7aa70
Branches
Tags
2 merge requests!11331 Aug MEP Merge Dev to Stg,!107Add: Pack bucket and lazy writing indexes
Showing with 17 additions and 7 deletions
package corefdb
import (
"errors"
"fmt"
"os"
"path/filepath"
......@@ -55,6 +56,9 @@ const (
FileType = "fileType"
)
// ErrNoDataFound - This error describes that the required data might be deleted and not found. Kidly ignore this error in caller.
var ErrNoDataFound = errors.New("No data found")
// Bucket - Bucket
type Bucket struct {
BucketID string `json:"bucketId"`
......@@ -849,6 +853,9 @@ func updateDataInFileIndexBucket(fdb *FDB, bucket *Bucket, filePaths []string, r
for _, path := range filePaths {
filePath := filepath.Join(fdb.DBPath, path)
resultArray, err := updateDataWithInFileIndex(filePath, bucket, rs, infileIndexQuery)
if err == ErrNoDataFound {
continue
}
if err != nil {
loggermdl.LogError(err)
return nil, err
......@@ -899,9 +906,11 @@ func updateDataWithInFileIndex(filePath string, bucket *Bucket, rs *gjson.Result
for _, query := range infileIndexQueries {
indexRecordsToUpdate = indexRecordsToUpdate.Get(query + "#")
}
loggermdl.LogError("indexRecordsToUpdate - ", indexRecordsToUpdate)
indexRecordsToUpdateObjs := indexRecordsToUpdate.Array()
loggermdl.LogError("Len indexRecordsToUpdateObjs - ", len(indexRecordsToUpdateObjs))
if len(indexRecordsToUpdateObjs) == 0 {
return nil, errormdl.Wrap("no data found to update")
return nil, ErrNoDataFound
}
loggermdl.LogError("indexRowObjs", indexRecordsToUpdateObjs)
// updating first record
......@@ -963,11 +972,11 @@ func updateDataInFileIndex(f *os.File, bucket *Bucket, recordToUpdateIndexRow gj
updatedFooterOffset = footerStartOffset + newDataSize
fileStartOffset = footerStartOffset
}
indexRows, err := getInFileIndexData(f)
if err != nil {
return nil, err
}
loggermdl.LogError("indexRows - ", indexRows)
// indexRows, err := getInFileIndexData(f)
// if err != nil {
// return nil, err
// }
loggermdl.LogError("existingIndexRows - ", existingIndexRows)
// update startofffset and datasize in infile index
// updateIndexRow
updatedIndexRowStr := recordToUpdateIndexRow.String()
......@@ -1022,7 +1031,8 @@ func updateDataInFileIndex(f *os.File, bucket *Bucket, recordToUpdateIndexRow gj
}
func updateIndexRow(indexRows gjson.Result, previousIndexRow gjson.Result, updatedRow gjson.Result) (gjson.Result, error) {
loggermdl.LogError("Index rows to update - ", indexRows.String())
loggermdl.LogError("Ilength - ", len(indexRows.Array()))
indexRowObjs := indexRows.Array()
if len(indexRowObjs) == 0 {
return indexRows, errormdl.Wrap("no data found to update")
......
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