From 924bee53e85207e2618d1c2ae218e1edffd7b92d Mon Sep 17 00:00:00 2001 From: Neeraj Gupta <254676+ua741@users.noreply.github.com> Date: Mon, 26 Aug 2024 17:17:53 +0530 Subject: [PATCH] [server] Upload fileData in async manner --- server/pkg/controller/filedata/controller.go | 39 +++++++++++--------- 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/server/pkg/controller/filedata/controller.go b/server/pkg/controller/filedata/controller.go index 2be4ebb04c..1c8465d870 100644 --- a/server/pkg/controller/filedata/controller.go +++ b/server/pkg/controller/filedata/controller.go @@ -106,25 +106,28 @@ func (c *Controller) InsertOrUpdate(ctx *gin.Context, req *fileData.PutFileDataR DecryptionHeader: *req.DecryptionHeader, 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 + } - size, uploadErr := c.uploadObject(obj, objectKey, bucketID) - if uploadErr != nil { - log.Error(uploadErr) - return stacktrace.Propagate(uploadErr, "") - } - - row := fileData.Row{ - FileID: req.FileID, - Type: req.Type, - UserID: fileOwnerID, - Size: size, - LatestBucket: bucketID, - } - err = c.Repo.InsertOrUpdate(ctx, row) - if err != nil { - return stacktrace.Propagate(err, "") - } - + 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 + } + }() return nil }