Skip to content
This repository has been archived by the owner on Aug 8, 2024. It is now read-only.

add defer function to close file buffer in WriteFileToDisk() #92

Closed
wants to merge 4 commits into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 11 additions & 8 deletions jprov/utils/network.go
Original file line number Diff line number Diff line change
Expand Up @@ -67,13 +67,13 @@ func DownloadFileFromURL(cmd *cobra.Command, url string, fid string, cid string,
return hashName, nil
}

func WriteFileToDisk(cmd *cobra.Command, reader io.Reader, file io.ReaderAt, closer io.Closer, size int64, db *leveldb.DB, logger log.Logger) (string, string, [][]byte, error) {
func WriteFileToDisk(cmd *cobra.Command, reader io.Reader, file io.ReaderAt, closer io.Closer, size int64, db *leveldb.DB, logger log.Logger) (fid string, r string, data [][]byte, err error) {
blockSize, err := cmd.Flags().GetInt64(types.FlagChunkSize)
if err != nil {
return "", "", nil, err
}

data := make([][]byte, size/blockSize+1)
data = make([][]byte, size/blockSize+1)
clientCtx := client.GetClientContextFromCmd(cmd)

h := sha256.New()
Expand All @@ -82,7 +82,7 @@ func WriteFileToDisk(cmd *cobra.Command, reader io.Reader, file io.ReaderAt, clo
return "", "", data, err
}
hashName := h.Sum(nil)
fid, err := MakeFid(hashName)
fid, err = MakeFid(hashName)
if err != nil {
return "", "", data, err
}
Expand Down Expand Up @@ -155,7 +155,7 @@ func WriteFileToDisk(cmd *cobra.Command, reader io.Reader, file io.ReaderAt, clo
return fid, "", data, err
}

r := hex.EncodeToString(tree.Root())
r = hex.EncodeToString(tree.Root())

exportedTree, err := tree.Export()
if err != nil {
Expand All @@ -165,17 +165,20 @@ func WriteFileToDisk(cmd *cobra.Command, reader io.Reader, file io.ReaderAt, clo
tree = nil // for GC

f, err := os.OpenFile(GetStoragePathForTree(clientCtx, fid), os.O_WRONLY|os.O_CREATE, 0o666)
defer func() {
if tmpErr := f.Close(); tmpErr != nil && err == nil {
err = tmpErr
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

where does this error get handled?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for catching that, I found a better solution for this.

}
}()

if err != nil {
return fid, r, data, err
}

_, err = f.Write(exportedTree)
if err != nil {
return fid, r, data, err
}
err = f.Close()
if err != nil {
return fid, r, data, err
}

// nolint
exportedTree = nil
Expand Down
Loading