Retry /task/upload

This commit is contained in:
Richard Patel 2018-11-18 18:33:26 +01:00
parent 8ed2cf3b93
commit ac8221b109
No known key found for this signature in database
GPG Key ID: C268B2BBDA2ABECB

View File

@ -11,6 +11,7 @@ import (
"net/url" "net/url"
"os" "os"
"strconv" "strconv"
"time"
) )
var serverClient = http.Client { var serverClient = http.Client {
@ -101,25 +102,38 @@ func uploadChunks(websiteId uint64, f *os.File) error {
multi.Close() multi.Close()
for retried := false; true; retried = true {
err = nil
if retried {
// Error occurred, retry upload
time.Sleep(5 * time.Second)
}
req, err := http.NewRequest( req, err := http.NewRequest(
http.MethodPost, http.MethodPost,
config.ServerUrl + "/task/upload", config.ServerUrl + "/task/upload",
&b) &b)
req.Header.Set("content-type", multi.FormDataContentType()) req.Header.Set("content-type", multi.FormDataContentType())
if err != nil { return err } if err != nil { continue }
res, err := serverClient.Do(req) res, err := serverClient.Do(req)
if err != nil { return err } if err != nil { continue }
res.Body.Close() res.Body.Close()
if res.StatusCode != http.StatusOK { if res.StatusCode != http.StatusOK {
return fmt.Errorf("failed to upload list part %d: %s", logrus.WithField("status", res.Status).
iter, res.Status) WithField("part", iter).
Errorf("Upload failed")
continue
}
// Upload successful
break
} }
logrus.WithField("id", websiteId). logrus.WithField("id", websiteId).
WithField("part", iter). WithField("part", iter).
Infof("Uploading files chunk") Infof("Uploaded files chunk")
} }
return nil return nil
} }