mirror of
https://github.com/rclone/rclone.git
synced 2024-11-22 08:23:47 +01:00
swift, s3, dropbox: fix metadata read on Update()
This was causing changed files to be marked as corrupted on upload
This commit is contained in:
parent
2479ce2c8e
commit
282cba20a0
@ -668,6 +668,7 @@ func (o *FsObjectDropbox) setModTimeAndMd5sum(modTime time.Time, md5sum string)
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("Couldn't set md5sum record: %s", err)
|
return fmt.Errorf("Couldn't set md5sum record: %s", err)
|
||||||
}
|
}
|
||||||
|
o.md5sum = md5sum
|
||||||
}
|
}
|
||||||
|
|
||||||
if !modTime.IsZero() {
|
if !modTime.IsZero() {
|
||||||
@ -676,6 +677,7 @@ func (o *FsObjectDropbox) setModTimeAndMd5sum(modTime time.Time, md5sum string)
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("Couldn't set mtime record: %s", err)
|
return fmt.Errorf("Couldn't set mtime record: %s", err)
|
||||||
}
|
}
|
||||||
|
o.modTime = modTime
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
@ -260,6 +260,21 @@ func TestSync(flocal, fremote fs.Fs) {
|
|||||||
|
|
||||||
// ------------------------------------------------------------
|
// ------------------------------------------------------------
|
||||||
|
|
||||||
|
log.Printf("Sync after changing a file's contents, modtime but not length")
|
||||||
|
WriteFile("potato", "SMALLER BUT SAME DATE", t2)
|
||||||
|
err = fs.Sync(fremote, flocal, true)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalf("Sync failed: %v", err)
|
||||||
|
}
|
||||||
|
items = []Item{
|
||||||
|
{Path: "empty space", Size: 0, ModTime: t2, Md5sum: "d41d8cd98f00b204e9800998ecf8427e"},
|
||||||
|
{Path: "potato", Size: 21, ModTime: t2, Md5sum: "e4cb6955d9106df6263c45fcfc10f163"},
|
||||||
|
}
|
||||||
|
CheckListing(flocal, items)
|
||||||
|
CheckListing(fremote, items)
|
||||||
|
|
||||||
|
// ------------------------------------------------------------
|
||||||
|
|
||||||
log.Printf("Sync after removing a file and adding a file --dry-run")
|
log.Printf("Sync after removing a file and adding a file --dry-run")
|
||||||
WriteFile("potato2", "------------------------------------------------------------", t1)
|
WriteFile("potato2", "------------------------------------------------------------", t1)
|
||||||
err = os.Remove(localName + "/potato")
|
err = os.Remove(localName + "/potato")
|
||||||
@ -275,7 +290,7 @@ func TestSync(flocal, fremote fs.Fs) {
|
|||||||
|
|
||||||
before := []Item{
|
before := []Item{
|
||||||
{Path: "empty space", Size: 0, ModTime: t2, Md5sum: "d41d8cd98f00b204e9800998ecf8427e"},
|
{Path: "empty space", Size: 0, ModTime: t2, Md5sum: "d41d8cd98f00b204e9800998ecf8427e"},
|
||||||
{Path: "potato", Size: 21, ModTime: t3, Md5sum: "100defcf18c42a1e0dc42a789b107cd2"},
|
{Path: "potato", Size: 21, ModTime: t2, Md5sum: "e4cb6955d9106df6263c45fcfc10f163"},
|
||||||
}
|
}
|
||||||
items = []Item{
|
items = []Item{
|
||||||
{Path: "empty space", Size: 0, ModTime: t2, Md5sum: "d41d8cd98f00b204e9800998ecf8427e"},
|
{Path: "empty space", Size: 0, ModTime: t2, Md5sum: "d41d8cd98f00b204e9800998ecf8427e"},
|
||||||
|
1
s3/s3.go
1
s3/s3.go
@ -518,6 +518,7 @@ func (o *FsObjectS3) Update(in io.Reader, modTime time.Time, size int64) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
// Read the metadata from the newly created object
|
// Read the metadata from the newly created object
|
||||||
|
o.meta = nil // wipe old metadata
|
||||||
err = o.readMetaData()
|
err = o.readMetaData()
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -413,6 +413,7 @@ func (o *FsObjectSwift) Update(in io.Reader, modTime time.Time, size int64) erro
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
// Read the metadata from the newly created object
|
// Read the metadata from the newly created object
|
||||||
|
o.meta = nil // wipe old metadata
|
||||||
err = o.readMetaData()
|
err = o.readMetaData()
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user