mirror of
https://github.com/pgsty/minio.git
synced 2026-10-23 01:04:21 +03:00
fix(pools): do not let data movement overwrite a newer copy
Signed-off-by: Denis Babchuk <babchukdenis@icloud.com>
This commit is contained in:
@@ -834,6 +834,9 @@ func (de DataMovementOverwriteErr) Error() string {
|
||||
if de.VersionID != "" {
|
||||
objInfoStr = fmt.Sprintf("%s version-id=%s", objInfoStr, de.VersionID)
|
||||
}
|
||||
if de.Err == errDataMovementSuperseded {
|
||||
return fmt.Sprintf("data movement skipped, another pool holds a newer copy of %s", objInfoStr)
|
||||
}
|
||||
return fmt.Sprintf("invalid data movement operation, source and destination pool are the same for %s", objInfoStr)
|
||||
}
|
||||
|
||||
@@ -841,3 +844,11 @@ func isDataMovementOverWriteErr(err error) bool {
|
||||
var de DataMovementOverwriteErr
|
||||
return errors.As(err, &de)
|
||||
}
|
||||
|
||||
// isDataMovementSuperseded reports a version that was not moved because
|
||||
// another pool already holds a newer copy, which reads return. The source copy
|
||||
// is a stale duplicate: the move is complete, and the source may be removed.
|
||||
func isDataMovementSuperseded(err error) bool {
|
||||
var de DataMovementOverwriteErr
|
||||
return errors.As(err, &de) && de.Err == errDataMovementSuperseded
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user