mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2024-01-19 02:48:24 +00:00
fix s3 metadata error with multipart upload
This commit is contained in:
parent
c6d4c16079
commit
1a4db87e19
|
@ -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 {
|
return filerClient.WithFilerClient(func(client SeaweedFilerClient) error {
|
||||||
|
|
||||||
entry := &Entry{
|
entry := &Entry{
|
||||||
|
@ -252,6 +252,10 @@ func MkFile(filerClient FilerClient, parentDirectoryPath string, fileName string
|
||||||
Chunks: chunks,
|
Chunks: chunks,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if fn != nil {
|
||||||
|
fn(entry)
|
||||||
|
}
|
||||||
|
|
||||||
request := &CreateEntryRequest{
|
request := &CreateEntryRequest{
|
||||||
Directory: parentDirectoryPath,
|
Directory: parentDirectoryPath,
|
||||||
Entry: entry,
|
Entry: entry,
|
||||||
|
|
|
@ -71,6 +71,12 @@ func (s3a *S3ApiServer) completeMultipartUpload(input *s3.CompleteMultipartUploa
|
||||||
return nil, s3err.ErrNoSuchUpload
|
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 finalParts []*filer_pb.FileChunk
|
||||||
var offset int64
|
var offset int64
|
||||||
|
|
||||||
|
@ -106,7 +112,16 @@ func (s3a *S3ApiServer) completeMultipartUpload(input *s3.CompleteMultipartUploa
|
||||||
dirName = dirName[:len(dirName)-1]
|
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 {
|
if err != nil {
|
||||||
glog.Errorf("completeMultipartUpload %s/%s error: %v", dirName, entryName, err)
|
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)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue