From 72bcd8e45089125dac17cba671db84fc7ef6edae Mon Sep 17 00:00:00 2001 From: Neeraj Date: Tue, 25 Feb 2025 21:41:45 +0530 Subject: [PATCH] [server] Wait for fileData put & fail fetch if more than 5 object fails (#5174) ## Description ## Tests --- server/pkg/controller/filedata/controller.go | 44 +++++++++++--------- 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/server/pkg/controller/filedata/controller.go b/server/pkg/controller/filedata/controller.go index cf779f814e..3717f39244 100644 --- a/server/pkg/controller/filedata/controller.go +++ b/server/pkg/controller/filedata/controller.go @@ -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,