From 17cae3761a33a5439fdcf9bd97e256354161c9c6 Mon Sep 17 00:00:00 2001 From: Daniel Ahn Date: Wed, 5 Jul 2023 17:41:52 -0700 Subject: [PATCH 1/4] add defer function to close file buffer in WriteFileToDisk() --- jprov/utils/network.go | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/jprov/utils/network.go b/jprov/utils/network.go index eb5fc62..4ade6d0 100644 --- a/jprov/utils/network.go +++ b/jprov/utils/network.go @@ -165,17 +165,16 @@ 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 f.Close() + 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 From 3fe97d611cd1302018e7d93f1e635e3dbcf58804 Mon Sep 17 00:00:00 2001 From: Daniel Ahn Date: Wed, 5 Jul 2023 18:09:40 -0700 Subject: [PATCH 2/4] handle error from deferred function --- jprov/utils/network.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/jprov/utils/network.go b/jprov/utils/network.go index 4ade6d0..a8602c7 100644 --- a/jprov/utils/network.go +++ b/jprov/utils/network.go @@ -165,7 +165,11 @@ 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 f.Close() + defer func() { + if tmpErr := f.Close(); tmpErr != nil && err == nil { + err = tmpErr + } + }() if err != nil { return fid, r, data, err From 831f2788e2ed75c24bcc2970fddd6c987e022e40 Mon Sep 17 00:00:00 2001 From: Daniel Ahn <64443137+dahn510@users.noreply.github.com> Date: Thu, 6 Jul 2023 20:08:45 +0000 Subject: [PATCH 3/4] Join errors --- jprov/utils/network.go | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/jprov/utils/network.go b/jprov/utils/network.go index a8602c7..f155ae8 100644 --- a/jprov/utils/network.go +++ b/jprov/utils/network.go @@ -12,6 +12,7 @@ import ( "runtime" "strconv" "strings" + "errors" "github.com/tendermint/tendermint/libs/log" "github.com/wealdtech/go-merkletree" @@ -67,13 +68,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() @@ -82,7 +83,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 } @@ -155,7 +156,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 { @@ -166,9 +167,7 @@ func WriteFileToDisk(cmd *cobra.Command, reader io.Reader, file io.ReaderAt, clo 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 - } + err = errors.Join(err, f.Close()) }() if err != nil { From 5d5169d8ba96dcda798bccb6324775fba7936512 Mon Sep 17 00:00:00 2001 From: Daniel Ahn <64443137+dahn510@users.noreply.github.com> Date: Thu, 6 Jul 2023 20:16:02 +0000 Subject: [PATCH 4/4] use go 1.19 --- jprov/utils/network.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/jprov/utils/network.go b/jprov/utils/network.go index f155ae8..e10e2cf 100644 --- a/jprov/utils/network.go +++ b/jprov/utils/network.go @@ -12,7 +12,6 @@ import ( "runtime" "strconv" "strings" - "errors" "github.com/tendermint/tendermint/libs/log" "github.com/wealdtech/go-merkletree" @@ -167,7 +166,9 @@ func WriteFileToDisk(cmd *cobra.Command, reader io.Reader, file io.ReaderAt, clo f, err := os.OpenFile(GetStoragePathForTree(clientCtx, fid), os.O_WRONLY|os.O_CREATE, 0o666) defer func() { - err = errors.Join(err, f.Close()) + if tmpErr := f.Close(); tmpErr != nil && err == nil { + err = tmpErr + } }() if err != nil {