mirror of
https://github.com/minio/minio.git
synced 2025-11-20 09:56:07 -05:00
Xl layer selfheal quorum2
* xl/selfheal: selfheal based on read quorum on GET * xl: getReadableDisks() also returns whether self-heal is needed so that this info can be used by ReadFile/SelfHeal/StatFile. * xl: trigger selfheal from StatFile.
This commit is contained in:
committed by
Harshavardhana
parent
9bd9441107
commit
becc814531
@@ -18,9 +18,15 @@ package main
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"io"
|
||||
"strconv"
|
||||
"time"
|
||||
)
|
||||
|
||||
// error type when key is not found.
|
||||
var errMetadataKeyNotExist = errors.New("Key not found in fileMetadata.")
|
||||
|
||||
// This code is built on similar ideas of http.Header.
|
||||
// Ref - https://golang.org/pkg/net/http/#Header
|
||||
|
||||
@@ -66,6 +72,30 @@ func (f fileMetadata) Write(writer io.Writer) error {
|
||||
return err
|
||||
}
|
||||
|
||||
// Get file size.
|
||||
func (f fileMetadata) GetSize() (int64, error) {
|
||||
sizes := f.Get("file.size")
|
||||
if sizes == nil {
|
||||
return 0, errMetadataKeyNotExist
|
||||
}
|
||||
sizeStr := sizes[0]
|
||||
return strconv.ParseInt(sizeStr, 10, 64)
|
||||
}
|
||||
|
||||
// Set file size.
|
||||
func (f fileMetadata) SetSize(size int64) {
|
||||
f.Set("file.size", strconv.FormatInt(size, 10))
|
||||
}
|
||||
|
||||
// Get file Modification time.
|
||||
func (f fileMetadata) GetModTime() (time.Time, error) {
|
||||
timeStrs := f.Get("file.modTime")
|
||||
if timeStrs == nil {
|
||||
return time.Time{}, errMetadataKeyNotExist
|
||||
}
|
||||
return time.Parse(timeFormatAMZ, timeStrs[0])
|
||||
}
|
||||
|
||||
// fileMetadataDecode - file metadata decode.
|
||||
func fileMetadataDecode(reader io.Reader) (fileMetadata, error) {
|
||||
metadata := make(fileMetadata)
|
||||
|
||||
Reference in New Issue
Block a user