diff --git a/flatfs.go b/flatfs.go index 6441911..e32832b 100644 --- a/flatfs.go +++ b/flatfs.go @@ -652,24 +652,6 @@ func (fs *Datastore) putMany(data map[datastore.Key][]byte) error { } func (fs *Datastore) Get(key datastore.Key) (value []byte, err error) { - value, err = fs.get(key) - - // Fallback retry for temporary error. - if err != nil && isTooManyFDError(err) { - for i := 0; i < 6; i++ { - time.Sleep(time.Duration(i+1) * RetryDelay) - - value, err = fs.get(key) - if err == nil || !isTooManyFDError(err) { - break - } - } - } - - return -} - -func (fs *Datastore) get(key datastore.Key) (value []byte, err error) { // Can't exist in datastore. if !keyIsValid(key) { return nil, datastore.ErrNotFound diff --git a/go.mod b/go.mod index 86e5ab4..99bdcab 100644 --- a/go.mod +++ b/go.mod @@ -1,7 +1,7 @@ module github.com/ipfs/go-ds-flatfs require ( - github.com/alexbrainman/goissue34681 v0.0.0-20191006012335-3fc7a47baff5 // indirect + github.com/alexbrainman/goissue34681 v0.0.0-20191006012335-3fc7a47baff5 github.com/ipfs/go-datastore v0.4.4 github.com/ipfs/go-log v1.0.3 github.com/jbenet/goprocess v0.1.4 diff --git a/util.go b/util.go index 31ebde0..8f2a8db 100644 --- a/util.go +++ b/util.go @@ -3,6 +3,7 @@ package flatfs import ( "io" "os" + "time" ) // From: http://stackoverflow.com/questions/30697324/how-to-check-if-directory-on-path-is-empty @@ -19,3 +20,15 @@ func DirIsEmpty(name string) (bool, error) { } return false, err // Either not empty or error, suits both cases } + +func readFile(filename string) (data []byte, err error) { + // Fallback retry for temporary error. + for i := 0; i < 6; i++ { + data, err = readFileOnce(filename) + if err == nil || !isTooManyFDError(err) { + break + } + time.Sleep(time.Duration(i+1) * RetryDelay) + } + return data, err +} diff --git a/util_unix.go b/util_unix.go index aea0777..2404fce 100644 --- a/util_unix.go +++ b/util_unix.go @@ -11,6 +11,6 @@ func tempFile(dir, pattern string) (*os.File, error) { return ioutil.TempFile(dir, pattern) } -func readFile(filename string) ([]byte, error) { +func readFileOnce(filename string) ([]byte, error) { return ioutil.ReadFile(filename) } diff --git a/util_windows.go b/util_windows.go index 5f55b86..34dc81e 100644 --- a/util_windows.go +++ b/util_windows.go @@ -75,7 +75,7 @@ func tempFile(dir, pattern string) (f *os.File, err error) { return } -func readFile(filename string) ([]byte, error) { +func readFileOnce(filename string) ([]byte, error) { f, err := goissue34681.Open(filename) if err != nil { return nil, err