mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2024-01-19 02:48:24 +00:00
filer: add retries during volume moving
fix https://github.com/chrislusf/seaweedfs/issues/1704
This commit is contained in:
parent
1b1d182469
commit
0a067944cc
|
@ -209,17 +209,36 @@ func (fs *FilerServer) uploadReaderToChunks(w http.ResponseWriter, r *http.Reque
|
||||||
for {
|
for {
|
||||||
limitedReader := io.LimitReader(partReader, int64(chunkSize))
|
limitedReader := io.LimitReader(partReader, int64(chunkSize))
|
||||||
|
|
||||||
// assign one file id for one chunk
|
data, err := ioutil.ReadAll(limitedReader)
|
||||||
fileId, urlLocation, auth, assignErr := fs.assignNewFileInfo(so)
|
if err != nil {
|
||||||
if assignErr != nil {
|
return nil, nil, 0, err, nil
|
||||||
return nil, nil, 0, assignErr, nil
|
|
||||||
}
|
}
|
||||||
|
dataReader := util.NewBytesReader(data)
|
||||||
|
|
||||||
// upload the chunk to the volume server
|
// retry to assign a different file id
|
||||||
uploadResult, uploadErr, data := fs.doUpload(urlLocation, w, r, limitedReader, fileName, contentType, nil, auth)
|
var fileId, urlLocation string
|
||||||
|
var auth security.EncodedJwt
|
||||||
|
var assignErr, uploadErr error
|
||||||
|
var uploadResult *operation.UploadResult
|
||||||
|
for i := 0; i < 3; i++ {
|
||||||
|
// assign one file id for one chunk
|
||||||
|
fileId, urlLocation, auth, assignErr = fs.assignNewFileInfo(so)
|
||||||
|
if assignErr != nil {
|
||||||
|
return nil, nil, 0, assignErr, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// upload the chunk to the volume server
|
||||||
|
uploadResult, uploadErr, _ = fs.doUpload(urlLocation, w, r, dataReader, fileName, contentType, nil, auth)
|
||||||
|
if uploadErr != nil {
|
||||||
|
time.Sleep(251 * time.Millisecond)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
break
|
||||||
|
}
|
||||||
if uploadErr != nil {
|
if uploadErr != nil {
|
||||||
return nil, nil, 0, uploadErr, nil
|
return nil, nil, 0, uploadErr, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
content = data
|
content = data
|
||||||
|
|
||||||
// if last chunk exhausted the reader exactly at the border
|
// if last chunk exhausted the reader exactly at the border
|
||||||
|
|
Loading…
Reference in a new issue