Browse Source
Merge pull request #2174 from qwedsazzcc/master
fix s3 metadata error with multipart upload
pull/2178/head
Chris Lu
4 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with
23 additions and
4 deletions
-
weed/pb/filer_pb/filer_client.go
-
weed/s3api/filer_multipart.go
-
weed/s3api/filer_util.go
|
|
@ -236,7 +236,7 @@ func Mkdir(filerClient FilerClient, parentDirectoryPath string, dirName string, |
|
|
|
}) |
|
|
|
} |
|
|
|
|
|
|
|
func MkFile(filerClient FilerClient, parentDirectoryPath string, fileName string, chunks []*FileChunk) error { |
|
|
|
func MkFile(filerClient FilerClient, parentDirectoryPath string, fileName string, chunks []*FileChunk, fn func(entry *Entry)) error { |
|
|
|
return filerClient.WithFilerClient(func(client SeaweedFilerClient) error { |
|
|
|
|
|
|
|
entry := &Entry{ |
|
|
@ -252,6 +252,10 @@ func MkFile(filerClient FilerClient, parentDirectoryPath string, fileName string |
|
|
|
Chunks: chunks, |
|
|
|
} |
|
|
|
|
|
|
|
if fn != nil { |
|
|
|
fn(entry) |
|
|
|
} |
|
|
|
|
|
|
|
request := &CreateEntryRequest{ |
|
|
|
Directory: parentDirectoryPath, |
|
|
|
Entry: entry, |
|
|
|
|
|
@ -71,6 +71,12 @@ func (s3a *S3ApiServer) completeMultipartUpload(input *s3.CompleteMultipartUploa |
|
|
|
return nil, s3err.ErrNoSuchUpload |
|
|
|
} |
|
|
|
|
|
|
|
pentry, err := s3a.getEntry(s3a.genUploadsFolder(*input.Bucket),*input.UploadId) |
|
|
|
if err != nil { |
|
|
|
glog.Errorf("completeMultipartUpload %s %s error: %v", *input.Bucket, *input.UploadId, err) |
|
|
|
return nil, s3err.ErrNoSuchUpload |
|
|
|
} |
|
|
|
|
|
|
|
var finalParts []*filer_pb.FileChunk |
|
|
|
var offset int64 |
|
|
|
|
|
|
@ -106,7 +112,16 @@ func (s3a *S3ApiServer) completeMultipartUpload(input *s3.CompleteMultipartUploa |
|
|
|
dirName = dirName[:len(dirName)-1] |
|
|
|
} |
|
|
|
|
|
|
|
err = s3a.mkFile(dirName, entryName, finalParts) |
|
|
|
err = s3a.mkFile(dirName, entryName, finalParts,func(entry *filer_pb.Entry) { |
|
|
|
if entry.Extended == nil { |
|
|
|
entry.Extended = make(map[string][]byte) |
|
|
|
} |
|
|
|
for k,v := range pentry.Extended{ |
|
|
|
if k != "key" { |
|
|
|
entry.Extended[k] = v |
|
|
|
} |
|
|
|
} |
|
|
|
}) |
|
|
|
|
|
|
|
if err != nil { |
|
|
|
glog.Errorf("completeMultipartUpload %s/%s error: %v", dirName, entryName, err) |
|
|
|
|
|
@ -15,9 +15,9 @@ func (s3a *S3ApiServer) mkdir(parentDirectoryPath string, dirName string, fn fun |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
func (s3a *S3ApiServer) mkFile(parentDirectoryPath string, fileName string, chunks []*filer_pb.FileChunk) error { |
|
|
|
func (s3a *S3ApiServer) mkFile(parentDirectoryPath string, fileName string, chunks []*filer_pb.FileChunk, fn func(entry *filer_pb.Entry)) error { |
|
|
|
|
|
|
|
return filer_pb.MkFile(s3a, parentDirectoryPath, fileName, chunks) |
|
|
|
return filer_pb.MkFile(s3a, parentDirectoryPath, fileName, chunks,fn) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|