[server] Wait for fileData put & fail fetch if more than 5 object fails (#5174)

## Description

## Tests
This commit is contained in:
Neeraj
2025-02-25 21:41:45 +05:30
committed by GitHub
parent 7b6fe4a9d7
commit 72bcd8e450

View File

@@ -104,27 +104,27 @@ func (c *Controller) InsertOrUpdateMetadata(ctx *gin.Context, req *fileData.PutF
Client: network.GetClientInfo(ctx),
}
// Start a goroutine to handle the upload and insert operations
go func() {
logger := log.WithField("objectKey", objectKey).WithField("fileID", req.FileID).WithField("type", req.Type)
size, uploadErr := c.uploadObject(obj, objectKey, bucketID)
if uploadErr != nil {
logger.WithError(uploadErr).Error("upload failed")
return
}
//go func() {
logger := log.WithField("objectKey", objectKey).WithField("fileID", req.FileID).WithField("type", req.Type)
size, uploadErr := c.uploadObject(obj, objectKey, bucketID)
if uploadErr != nil {
logger.WithError(uploadErr).Error("upload failed")
return uploadErr
}
row := fileData.Row{
FileID: req.FileID,
Type: req.Type,
UserID: fileOwnerID,
Size: size,
LatestBucket: bucketID,
}
dbInsertErr := c.Repo.InsertOrUpdate(context.Background(), row)
if dbInsertErr != nil {
logger.WithError(dbInsertErr).Error("insert or update failed")
return
}
}()
row := fileData.Row{
FileID: req.FileID,
Type: req.Type,
UserID: fileOwnerID,
Size: size,
LatestBucket: bucketID,
}
dbInsertErr := c.Repo.InsertOrUpdate(context.Background(), row)
if dbInsertErr != nil {
logger.WithError(dbInsertErr).Error("insert or update failed")
return uploadErr
}
//}()
return nil
}
@@ -199,6 +199,10 @@ func (c *Controller) GetFilesData(ctx *gin.Context, req fileData.GetFilesData) (
})
}
}
if len(errFileIds) > 5 {
log.WithField("errFileIds", errFileIds).Error("Failed to fetch metadata for some files")
return nil, stacktrace.Propagate(errors.New("failed to fetch metadata for some files"), "")
}
return &fileData.GetFilesDataResponse{
Data: fetchedEmbeddings,