diff --git a/extern/sector-storage/piece_provider.go b/extern/sector-storage/piece_provider.go index 7d46ed92a..553dcb952 100644 --- a/extern/sector-storage/piece_provider.go +++ b/extern/sector-storage/piece_provider.go @@ -71,6 +71,9 @@ func (p *pieceProvider) tryReadUnsealedPiece(ctx context.Context, sector storage // ReadPiece is used to read an Unsealed piece at the given offset and of the given size from a Sector // If an Unsealed sector file exists with the Piece Unsealed in it, we'll use that for the read. // Otherwise, we will Unseal a Sealed sector file for the given sector and read the Unsealed piece from it. +// If we do NOT have an existing unsealed file containing the given piece thus causing us to schedule an Unseal, +// the returned boolean parameter will be set to true. +// If we have an existing unsealed file containing the given piece, the returned boolean will be set to false. func (p *pieceProvider) ReadPiece(ctx context.Context, sector storage.SectorRef, offset storiface.UnpaddedByteIndex, size abi.UnpaddedPieceSize, ticket abi.SealRandomness, unsealed cid.Cid) (io.ReadCloser, bool, error) { if err := offset.Valid(); err != nil { return nil, false, xerrors.Errorf("offset is not valid: %w", err) diff --git a/extern/sector-storage/stores/http_handler.go b/extern/sector-storage/stores/http_handler.go index e195cd7a9..dc7797157 100644 --- a/extern/sector-storage/stores/http_handler.go +++ b/extern/sector-storage/stores/http_handler.go @@ -155,7 +155,6 @@ func (handler *FetchHandler) remoteGetSector(w http.ResponseWriter, r *http.Requ } } else { w.Header().Set("Content-Type", "application/octet-stream") - w.WriteHeader(200) // will do a ranged read over the file at the given path if the caller has asked for a ranged read in the request headers. http.ServeFile(w, r, path) } diff --git a/extern/sector-storage/stores/remote.go b/extern/sector-storage/stores/remote.go index 2906756de..18e20ee37 100644 --- a/extern/sector-storage/stores/remote.go +++ b/extern/sector-storage/stores/remote.go @@ -560,6 +560,7 @@ func (r *Remote) Reader(ctx context.Context, s storage.SectorRef, offset, size a return si[i].Weight > si[j].Weight }) + var lastErr error for _, info := range si { for _, url := range info.URLs { // checkAllocated makes a JSON RPC query to a remote worker to determine if it has @@ -567,6 +568,7 @@ func (r *Remote) Reader(ctx context.Context, s storage.SectorRef, offset, size a ok, err := r.checkAllocated(ctx, url, s.ProofType, offset, size) if err != nil { log.Warnw("check if remote has piece", "url", url, "error", err) + lastErr = err continue } if !ok { @@ -578,6 +580,7 @@ func (r *Remote) Reader(ctx context.Context, s storage.SectorRef, offset, size a rd, err := r.readRemote(ctx, url, offset, size) if err != nil { log.Warnw("reading from remote", "url", url, "error", err) + lastErr = err continue } log.Infof("Read remote %s (+%d,%d)", url, offset, size) @@ -586,12 +589,15 @@ func (r *Remote) Reader(ctx context.Context, s storage.SectorRef, offset, size a } // we couldn't find a unsealed file with the unsealed piece, will return a nil reader. - log.Debugf("returning nil reader, did not find unsealed piece for %+v (+%d,%d)", s, offset, size) + log.Debugf("returning nil reader, did not find unsealed piece for %+v (+%d,%d), last error=%s", s, offset, size, lastErr) return nil, nil } func (r *Remote) Reserve(ctx context.Context, sid storage.SectorRef, ft storiface.SectorFileType, storageIDs storiface.SectorPaths, overheadTab map[storiface.SectorFileType]int) (func(), error) { - panic("not implemented") + log.Warnf("reserve called on remote store, sectorID: %v", sid.ID) + return func() { + + }, nil } var _ Store = &Remote{} diff --git a/extern/sector-storage/stores/util_unix.go b/extern/sector-storage/stores/util_unix.go index 9da38c05a..943681b49 100644 --- a/extern/sector-storage/stores/util_unix.go +++ b/extern/sector-storage/stores/util_unix.go @@ -2,6 +2,7 @@ package stores import ( "bytes" + "os" "os/exec" "path/filepath" "runtime" @@ -37,6 +38,10 @@ func move(from, to string) error { var cmd *exec.Cmd if runtime.GOOS == "darwin" { + if err := os.MkdirAll(toDir, 0777); err != nil { + return xerrors.Errorf("failed exec MkdirAll: %s", err) + } + cmd = exec.Command("/usr/bin/env", "mv", from, toDir) // nolint } else { cmd = exec.Command("/usr/bin/env", "mv", "-t", toDir, from) // nolint