Skip to content

Commit

Permalink
Improve download performance (#1315)
Browse files Browse the repository at this point in the history
* improve download file

* write data

* rmv content length

* fix unit test
  • Loading branch information
Hitenjain14 committed Nov 9, 2023
1 parent d8c650d commit 577752c
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 8 deletions.
13 changes: 6 additions & 7 deletions code/go/0chain.net/blobbercore/handler/handler_download_test.go
Expand Up @@ -301,6 +301,7 @@ func TestHandlers_Download(t *testing.T) {
r.Header.Set("X-Num-Blocks", fmt.Sprintf("%d", 1))
r.Header.Set("X-Connection-ID", connectionID)
r.Header.Set("X-Mode", DownloadContentFull)
r.Header.Set("X-Verify-Download", fmt.Sprint(true))
r.Header.Set(common.ClientSignatureHeader, sign)
r.Header.Set(common.ClientHeader, alloc.OwnerID)
r.Header.Set(common.ClientKeyHeader, alloc.OwnerPublicKey)
Expand Down Expand Up @@ -478,7 +479,7 @@ func TestHandlers_Download(t *testing.T) {
r.Header.Set("X-Path-Hash", pathHash)
r.Header.Set("X-Block-Num", fmt.Sprintf("%d", 1))
r.Header.Set("X-Num-Blocks", fmt.Sprintf("%d", 1))
r.Header.Set("X-Verify-Download", fmt.Sprint(false))
r.Header.Set("X-Verify-Download", fmt.Sprint(true))
r.Header.Set("X-Connection-ID", connectionID)
r.Header.Set("X-Mode", DownloadContentFull)
r.Header.Set("X-Auth-Token", authTicket)
Expand Down Expand Up @@ -559,7 +560,7 @@ func TestHandlers_Download(t *testing.T) {
r.Header.Set("X-Path-Hash", pathHash)
r.Header.Set("X-Block-Num", fmt.Sprintf("%d", 1))
r.Header.Set("X-Num-Blocks", fmt.Sprintf("%d", 1))
r.Header.Set("X-Verify-Download", fmt.Sprint(false))
r.Header.Set("X-Verify-Download", fmt.Sprint(true))
r.Header.Set("X-Connection-ID", connectionID)
r.Header.Set("X-Mode", DownloadContentFull)
r.Header.Set("X-Auth-Token", authTicket)
Expand Down Expand Up @@ -673,7 +674,7 @@ func TestHandlers_Download(t *testing.T) {
r.Header.Set("X-Path-Hash", filePathHash)
r.Header.Set("X-Block-Num", fmt.Sprintf("%d", 1))
r.Header.Set("X-Num-Blocks", fmt.Sprintf("%d", 1))
r.Header.Set("X-Verify-Download", fmt.Sprint(false))
r.Header.Set("X-Verify-Download", fmt.Sprint(true))
r.Header.Set("X-Connection-ID", connectionID)
r.Header.Set("X-Mode", DownloadContentFull)
r.Header.Set("X-Auth-Token", authTicket)
Expand Down Expand Up @@ -793,7 +794,7 @@ func TestHandlers_Download(t *testing.T) {
r.Header.Set("X-Path-Hash", filePathHash)
r.Header.Set("X-Block-Num", fmt.Sprintf("%d", 1))
r.Header.Set("X-Num-Blocks", fmt.Sprintf("%d", 1))
r.Header.Set("X-Verify-Download", fmt.Sprint(false))
r.Header.Set("X-Verify-Download", fmt.Sprint(true))
r.Header.Set("X-Connection-ID", connectionID)
r.Header.Set("X-Mode", DownloadContentFull)
r.Header.Set("X-Auth-Token", authTicket)
Expand Down Expand Up @@ -912,7 +913,7 @@ func TestHandlers_Download(t *testing.T) {
r.Header.Set("X-Path-Hash", filePathHash)
r.Header.Set("X-Block-Num", fmt.Sprintf("%d", 1))
r.Header.Set("X-Num-Blocks", fmt.Sprintf("%d", 1))
r.Header.Set("X-Verify-Download", fmt.Sprint(false))
r.Header.Set("X-Verify-Download", fmt.Sprint(true))
r.Header.Set("X-Connection-ID", connectionID)
r.Header.Set("X-Mode", DownloadContentFull)
r.Header.Set("X-Auth-Token", authTicket)
Expand Down Expand Up @@ -1005,9 +1006,7 @@ func TestHandlers_Download(t *testing.T) {
m := make(map[string]interface{})
err = json.Unmarshal(data, &m)
require.NoError(t, err)

if test.wantCode != http.StatusOK || test.wantBody != "" {
fmt.Println("fprint", test.args.w.Body.String())
var body string
if m["Data"] != nil {
body = m["Data"].(string)
Expand Down
Expand Up @@ -436,6 +436,9 @@ func (fsh *StorageHandler) DownloadFile(ctx context.Context, r *http.Request) (i
addDailyBlocks(clientID, dr.NumBlocks)
AddDownloadedData(clientID, dr.NumBlocks)
}()
if !dr.VerifyDownload {
return fileDownloadResponse.Data, nil
}
return fileDownloadResponse, nil
}

Expand Down
7 changes: 6 additions & 1 deletion code/go/0chain.net/core/common/handler.go
Expand Up @@ -82,7 +82,12 @@ func ToByteStream(handler JSONResponderF) ReqRespHandlerf {
w.Write(rawdata) //nolint:errcheck
} else {
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(data) //nolint:errcheck
byteData, err := json.Marshal(data)
if err != nil {
http.Error(w, err.Error(), 400)
return
}
w.Write(byteData) //nolint:errcheck
}
}
}
Expand Down

0 comments on commit 577752c

Please sign in to comment.