Async worker API
This commit is contained in:
parent
6bdd433570
commit
159ce13f5e
@ -64,6 +64,7 @@ type StorageMiner interface {
|
|||||||
WorkerConnect(context.Context, string) error
|
WorkerConnect(context.Context, string) error
|
||||||
WorkerStats(context.Context) (map[uint64]storiface.WorkerStats, error)
|
WorkerStats(context.Context) (map[uint64]storiface.WorkerStats, error)
|
||||||
WorkerJobs(context.Context) (map[uint64][]storiface.WorkerJob, error)
|
WorkerJobs(context.Context) (map[uint64][]storiface.WorkerJob, error)
|
||||||
|
storiface.WorkerReturn
|
||||||
|
|
||||||
// SealingSchedDiag dumps internal sealing scheduler state
|
// SealingSchedDiag dumps internal sealing scheduler state
|
||||||
SealingSchedDiag(context.Context) (interface{}, error)
|
SealingSchedDiag(context.Context) (interface{}, error)
|
||||||
|
@ -2,15 +2,12 @@ package api
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"io"
|
|
||||||
|
|
||||||
"github.com/ipfs/go-cid"
|
"github.com/filecoin-project/specs-actors/actors/abi"
|
||||||
|
|
||||||
"github.com/filecoin-project/lotus/extern/sector-storage/sealtasks"
|
"github.com/filecoin-project/lotus/extern/sector-storage/sealtasks"
|
||||||
"github.com/filecoin-project/lotus/extern/sector-storage/stores"
|
"github.com/filecoin-project/lotus/extern/sector-storage/stores"
|
||||||
"github.com/filecoin-project/lotus/extern/sector-storage/storiface"
|
"github.com/filecoin-project/lotus/extern/sector-storage/storiface"
|
||||||
"github.com/filecoin-project/specs-actors/actors/abi"
|
|
||||||
"github.com/filecoin-project/specs-storage/storage"
|
|
||||||
|
|
||||||
"github.com/filecoin-project/lotus/build"
|
"github.com/filecoin-project/lotus/build"
|
||||||
)
|
)
|
||||||
@ -23,18 +20,12 @@ type WorkerAPI interface {
|
|||||||
Paths(context.Context) ([]stores.StoragePath, error)
|
Paths(context.Context) ([]stores.StoragePath, error)
|
||||||
Info(context.Context) (storiface.WorkerInfo, error)
|
Info(context.Context) (storiface.WorkerInfo, error)
|
||||||
|
|
||||||
AddPiece(ctx context.Context, sector abi.SectorID, pieceSizes []abi.UnpaddedPieceSize, newPieceSize abi.UnpaddedPieceSize, pieceData storage.Data) (abi.PieceInfo, error)
|
storiface.WorkerCalls
|
||||||
|
|
||||||
storage.Sealer
|
// Storage / Other
|
||||||
|
Remove(ctx context.Context, sector abi.SectorID) error
|
||||||
MoveStorage(ctx context.Context, sector abi.SectorID, types stores.SectorFileType) error
|
|
||||||
|
|
||||||
UnsealPiece(context.Context, abi.SectorID, storiface.UnpaddedByteIndex, abi.UnpaddedPieceSize, abi.SealRandomness, cid.Cid) error
|
|
||||||
ReadPiece(context.Context, io.Writer, abi.SectorID, storiface.UnpaddedByteIndex, abi.UnpaddedPieceSize) (bool, error)
|
|
||||||
|
|
||||||
StorageAddLocal(ctx context.Context, path string) error
|
StorageAddLocal(ctx context.Context, path string) error
|
||||||
|
|
||||||
Fetch(context.Context, abi.SectorID, stores.SectorFileType, stores.PathType, stores.AcquireMode) error
|
|
||||||
|
|
||||||
Closing(context.Context) (<-chan struct{}, error)
|
Closing(context.Context) (<-chan struct{}, error)
|
||||||
}
|
}
|
||||||
|
@ -270,6 +270,18 @@ type StorageMinerStruct struct {
|
|||||||
WorkerStats func(context.Context) (map[uint64]storiface.WorkerStats, error) `perm:"admin"`
|
WorkerStats func(context.Context) (map[uint64]storiface.WorkerStats, error) `perm:"admin"`
|
||||||
WorkerJobs func(context.Context) (map[uint64][]storiface.WorkerJob, error) `perm:"admin"`
|
WorkerJobs func(context.Context) (map[uint64][]storiface.WorkerJob, error) `perm:"admin"`
|
||||||
|
|
||||||
|
ReturnAddPiece func(ctx context.Context, callID storiface.CallID, pi abi.PieceInfo, err string) error `perm:"admin"`
|
||||||
|
ReturnSealPreCommit1 func(ctx context.Context, callID storiface.CallID, p1o storage.PreCommit1Out, err string) error `perm:"admin"`
|
||||||
|
ReturnSealPreCommit2 func(ctx context.Context, callID storiface.CallID, sealed storage.SectorCids, err string) error `perm:"admin"`
|
||||||
|
ReturnSealCommit1 func(ctx context.Context, callID storiface.CallID, out storage.Commit1Out, err string) error `perm:"admin"`
|
||||||
|
ReturnSealCommit2 func(ctx context.Context, callID storiface.CallID, proof storage.Proof, err string) error `perm:"admin"`
|
||||||
|
ReturnFinalizeSector func(ctx context.Context, callID storiface.CallID, err string) error `perm:"admin"`
|
||||||
|
ReturnReleaseUnsealed func(ctx context.Context, callID storiface.CallID, err string) error `perm:"admin"`
|
||||||
|
ReturnMoveStorage func(ctx context.Context, callID storiface.CallID, err string) error `perm:"admin"`
|
||||||
|
ReturnUnsealPiece func(ctx context.Context, callID storiface.CallID, err string) error `perm:"admin"`
|
||||||
|
ReturnReadPiece func(ctx context.Context, callID storiface.CallID, ok bool, err string) error `perm:"admin"`
|
||||||
|
ReturnFetch func(ctx context.Context, callID storiface.CallID, err string) error `perm:"admin"`
|
||||||
|
|
||||||
SealingSchedDiag func(context.Context) (interface{}, error) `perm:"admin"`
|
SealingSchedDiag func(context.Context) (interface{}, error) `perm:"admin"`
|
||||||
|
|
||||||
StorageList func(context.Context) (map[stores.ID][]stores.Decl, error) `perm:"admin"`
|
StorageList func(context.Context) (map[stores.ID][]stores.Decl, error) `perm:"admin"`
|
||||||
@ -317,21 +329,21 @@ type WorkerStruct struct {
|
|||||||
Paths func(context.Context) ([]stores.StoragePath, error) `perm:"admin"`
|
Paths func(context.Context) ([]stores.StoragePath, error) `perm:"admin"`
|
||||||
Info func(context.Context) (storiface.WorkerInfo, error) `perm:"admin"`
|
Info func(context.Context) (storiface.WorkerInfo, error) `perm:"admin"`
|
||||||
|
|
||||||
AddPiece func(ctx context.Context, sector abi.SectorID, pieceSizes []abi.UnpaddedPieceSize, newPieceSize abi.UnpaddedPieceSize, pieceData storage.Data) (abi.PieceInfo, error) `perm:"admin"`
|
AddPiece func(ctx context.Context, sector abi.SectorID, pieceSizes []abi.UnpaddedPieceSize, newPieceSize abi.UnpaddedPieceSize, pieceData storage.Data) (storiface.CallID, error) `perm:"admin"`
|
||||||
SealPreCommit1 func(ctx context.Context, sector abi.SectorID, ticket abi.SealRandomness, pieces []abi.PieceInfo) (storage.PreCommit1Out, error) `perm:"admin"`
|
SealPreCommit1 func(ctx context.Context, sector abi.SectorID, ticket abi.SealRandomness, pieces []abi.PieceInfo) (storiface.CallID, error) `perm:"admin"`
|
||||||
SealPreCommit2 func(context.Context, abi.SectorID, storage.PreCommit1Out) (cids storage.SectorCids, err error) `perm:"admin"`
|
SealPreCommit2 func(ctx context.Context, sector abi.SectorID, pc1o storage.PreCommit1Out) (storiface.CallID, error) `perm:"admin"`
|
||||||
SealCommit1 func(ctx context.Context, sector abi.SectorID, ticket abi.SealRandomness, seed abi.InteractiveSealRandomness, pieces []abi.PieceInfo, cids storage.SectorCids) (storage.Commit1Out, error) `perm:"admin"`
|
SealCommit1 func(ctx context.Context, sector abi.SectorID, ticket abi.SealRandomness, seed abi.InteractiveSealRandomness, pieces []abi.PieceInfo, cids storage.SectorCids) (storiface.CallID, error) `perm:"admin"`
|
||||||
SealCommit2 func(context.Context, abi.SectorID, storage.Commit1Out) (storage.Proof, error) `perm:"admin"`
|
SealCommit2 func(ctx context.Context, sector abi.SectorID, c1o storage.Commit1Out) (storiface.CallID, error) `perm:"admin"`
|
||||||
FinalizeSector func(context.Context, abi.SectorID, []storage.Range) error `perm:"admin"`
|
FinalizeSector func(ctx context.Context, sector abi.SectorID, keepUnsealed []storage.Range) (storiface.CallID, error) `perm:"admin"`
|
||||||
ReleaseUnsealed func(ctx context.Context, sector abi.SectorID, safeToFree []storage.Range) error `perm:"admin"`
|
ReleaseUnsealed func(ctx context.Context, sector abi.SectorID, safeToFree []storage.Range) (storiface.CallID, error) `perm:"admin"`
|
||||||
Remove func(ctx context.Context, sector abi.SectorID) error `perm:"admin"`
|
MoveStorage func(ctx context.Context, sector abi.SectorID, types stores.SectorFileType) (storiface.CallID, error) `perm:"admin"`
|
||||||
MoveStorage func(ctx context.Context, sector abi.SectorID, types stores.SectorFileType) error `perm:"admin"`
|
UnsealPiece func(context.Context, abi.SectorID, storiface.UnpaddedByteIndex, abi.UnpaddedPieceSize, abi.SealRandomness, cid.Cid) (storiface.CallID, error) `perm:"admin"`
|
||||||
StorageAddLocal func(ctx context.Context, path string) error `perm:"admin"`
|
ReadPiece func(context.Context, io.Writer, abi.SectorID, storiface.UnpaddedByteIndex, abi.UnpaddedPieceSize) (storiface.CallID, error) `perm:"admin"`
|
||||||
|
Fetch func(context.Context, abi.SectorID, stores.SectorFileType, stores.PathType, stores.AcquireMode) (storiface.CallID, error) `perm:"admin"`
|
||||||
|
|
||||||
UnsealPiece func(context.Context, abi.SectorID, storiface.UnpaddedByteIndex, abi.UnpaddedPieceSize, abi.SealRandomness, cid.Cid) error `perm:"admin"`
|
Remove func(ctx context.Context, sector abi.SectorID) error `perm:"admin"`
|
||||||
ReadPiece func(context.Context, io.Writer, abi.SectorID, storiface.UnpaddedByteIndex, abi.UnpaddedPieceSize) (bool, error) `perm:"admin"`
|
StorageAddLocal func(ctx context.Context, path string) error `perm:"admin"`
|
||||||
|
|
||||||
Fetch func(context.Context, abi.SectorID, stores.SectorFileType, stores.PathType, stores.AcquireMode) error `perm:"admin"`
|
|
||||||
|
|
||||||
Closing func(context.Context) (<-chan struct{}, error) `perm:"admin"`
|
Closing func(context.Context) (<-chan struct{}, error) `perm:"admin"`
|
||||||
}
|
}
|
||||||
@ -1038,6 +1050,50 @@ func (c *StorageMinerStruct) WorkerJobs(ctx context.Context) (map[uint64][]stori
|
|||||||
return c.Internal.WorkerJobs(ctx)
|
return c.Internal.WorkerJobs(ctx)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *StorageMinerStruct) ReturnAddPiece(ctx context.Context, callID storiface.CallID, pi abi.PieceInfo, err string) error {
|
||||||
|
return c.Internal.ReturnAddPiece(ctx, callID, pi, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *StorageMinerStruct) ReturnSealPreCommit1(ctx context.Context, callID storiface.CallID, p1o storage.PreCommit1Out, err string) error {
|
||||||
|
return c.Internal.ReturnSealPreCommit1(ctx, callID, p1o, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *StorageMinerStruct) ReturnSealPreCommit2(ctx context.Context, callID storiface.CallID, sealed storage.SectorCids, err string) error {
|
||||||
|
return c.Internal.ReturnSealPreCommit2(ctx, callID, sealed, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *StorageMinerStruct) ReturnSealCommit1(ctx context.Context, callID storiface.CallID, out storage.Commit1Out, err string) error {
|
||||||
|
return c.Internal.ReturnSealCommit1(ctx, callID, out, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *StorageMinerStruct) ReturnSealCommit2(ctx context.Context, callID storiface.CallID, proof storage.Proof, err string) error {
|
||||||
|
return c.Internal.ReturnSealCommit2(ctx, callID, proof, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *StorageMinerStruct) ReturnFinalizeSector(ctx context.Context, callID storiface.CallID, err string) error {
|
||||||
|
return c.Internal.ReturnFinalizeSector(ctx, callID, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *StorageMinerStruct) ReturnReleaseUnsealed(ctx context.Context, callID storiface.CallID, err string) error {
|
||||||
|
return c.Internal.ReturnReleaseUnsealed(ctx, callID, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *StorageMinerStruct) ReturnMoveStorage(ctx context.Context, callID storiface.CallID, err string) error {
|
||||||
|
return c.Internal.ReturnMoveStorage(ctx, callID, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *StorageMinerStruct) ReturnUnsealPiece(ctx context.Context, callID storiface.CallID, err string) error {
|
||||||
|
return c.Internal.ReturnUnsealPiece(ctx, callID, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *StorageMinerStruct) ReturnReadPiece(ctx context.Context, callID storiface.CallID, ok bool, err string) error {
|
||||||
|
return c.Internal.ReturnReadPiece(ctx, callID, ok, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *StorageMinerStruct) ReturnFetch(ctx context.Context, callID storiface.CallID, err string) error {
|
||||||
|
return c.Internal.ReturnFetch(ctx, callID, err)
|
||||||
|
}
|
||||||
|
|
||||||
func (c *StorageMinerStruct) SealingSchedDiag(ctx context.Context) (interface{}, error) {
|
func (c *StorageMinerStruct) SealingSchedDiag(ctx context.Context) (interface{}, error) {
|
||||||
return c.Internal.SealingSchedDiag(ctx)
|
return c.Internal.SealingSchedDiag(ctx)
|
||||||
}
|
}
|
||||||
@ -1220,58 +1276,58 @@ func (w *WorkerStruct) Info(ctx context.Context) (storiface.WorkerInfo, error) {
|
|||||||
return w.Internal.Info(ctx)
|
return w.Internal.Info(ctx)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (w *WorkerStruct) AddPiece(ctx context.Context, sector abi.SectorID, pieceSizes []abi.UnpaddedPieceSize, newPieceSize abi.UnpaddedPieceSize, pieceData storage.Data) (abi.PieceInfo, error) {
|
func (w *WorkerStruct) AddPiece(ctx context.Context, sector abi.SectorID, pieceSizes []abi.UnpaddedPieceSize, newPieceSize abi.UnpaddedPieceSize, pieceData storage.Data) (storiface.CallID, error) {
|
||||||
return w.Internal.AddPiece(ctx, sector, pieceSizes, newPieceSize, pieceData)
|
return w.Internal.AddPiece(ctx, sector, pieceSizes, newPieceSize, pieceData)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (w *WorkerStruct) SealPreCommit1(ctx context.Context, sector abi.SectorID, ticket abi.SealRandomness, pieces []abi.PieceInfo) (storage.PreCommit1Out, error) {
|
func (w *WorkerStruct) SealPreCommit1(ctx context.Context, sector abi.SectorID, ticket abi.SealRandomness, pieces []abi.PieceInfo) (storiface.CallID, error) {
|
||||||
return w.Internal.SealPreCommit1(ctx, sector, ticket, pieces)
|
return w.Internal.SealPreCommit1(ctx, sector, ticket, pieces)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (w *WorkerStruct) SealPreCommit2(ctx context.Context, sector abi.SectorID, p1o storage.PreCommit1Out) (storage.SectorCids, error) {
|
func (w *WorkerStruct) SealPreCommit2(ctx context.Context, sector abi.SectorID, pc1o storage.PreCommit1Out) (storiface.CallID, error) {
|
||||||
return w.Internal.SealPreCommit2(ctx, sector, p1o)
|
return w.Internal.SealPreCommit2(ctx, sector, pc1o)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (w *WorkerStruct) SealCommit1(ctx context.Context, sector abi.SectorID, ticket abi.SealRandomness, seed abi.InteractiveSealRandomness, pieces []abi.PieceInfo, cids storage.SectorCids) (storage.Commit1Out, error) {
|
func (w *WorkerStruct) SealCommit1(ctx context.Context, sector abi.SectorID, ticket abi.SealRandomness, seed abi.InteractiveSealRandomness, pieces []abi.PieceInfo, cids storage.SectorCids) (storiface.CallID, error) {
|
||||||
return w.Internal.SealCommit1(ctx, sector, ticket, seed, pieces, cids)
|
return w.Internal.SealCommit1(ctx, sector, ticket, seed, pieces, cids)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (w *WorkerStruct) SealCommit2(ctx context.Context, sector abi.SectorID, c1o storage.Commit1Out) (storage.Proof, error) {
|
func (w *WorkerStruct) SealCommit2(ctx context.Context, sector abi.SectorID, c1o storage.Commit1Out) (storiface.CallID, error) {
|
||||||
return w.Internal.SealCommit2(ctx, sector, c1o)
|
return w.Internal.SealCommit2(ctx, sector, c1o)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (w *WorkerStruct) FinalizeSector(ctx context.Context, sector abi.SectorID, keepUnsealed []storage.Range) error {
|
func (w *WorkerStruct) FinalizeSector(ctx context.Context, sector abi.SectorID, keepUnsealed []storage.Range) (storiface.CallID, error) {
|
||||||
return w.Internal.FinalizeSector(ctx, sector, keepUnsealed)
|
return w.Internal.FinalizeSector(ctx, sector, keepUnsealed)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (w *WorkerStruct) ReleaseUnsealed(ctx context.Context, sector abi.SectorID, safeToFree []storage.Range) error {
|
func (w *WorkerStruct) ReleaseUnsealed(ctx context.Context, sector abi.SectorID, safeToFree []storage.Range) (storiface.CallID, error) {
|
||||||
return w.Internal.ReleaseUnsealed(ctx, sector, safeToFree)
|
return w.Internal.ReleaseUnsealed(ctx, sector, safeToFree)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (w *WorkerStruct) MoveStorage(ctx context.Context, sector abi.SectorID, types stores.SectorFileType) (storiface.CallID, error) {
|
||||||
|
return w.Internal.MoveStorage(ctx, sector, types)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (w *WorkerStruct) UnsealPiece(ctx context.Context, sector abi.SectorID, offset storiface.UnpaddedByteIndex, size abi.UnpaddedPieceSize, ticket abi.SealRandomness, c cid.Cid) (storiface.CallID, error) {
|
||||||
|
return w.Internal.UnsealPiece(ctx, sector, offset, size, ticket, c)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (w *WorkerStruct) ReadPiece(ctx context.Context, sink io.Writer, sector abi.SectorID, offset storiface.UnpaddedByteIndex, size abi.UnpaddedPieceSize) (storiface.CallID, error) {
|
||||||
|
return w.Internal.ReadPiece(ctx, sink, sector, offset, size)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (w *WorkerStruct) Fetch(ctx context.Context, id abi.SectorID, fileType stores.SectorFileType, ptype stores.PathType, am stores.AcquireMode) (storiface.CallID, error) {
|
||||||
|
return w.Internal.Fetch(ctx, id, fileType, ptype, am)
|
||||||
|
}
|
||||||
|
|
||||||
func (w *WorkerStruct) Remove(ctx context.Context, sector abi.SectorID) error {
|
func (w *WorkerStruct) Remove(ctx context.Context, sector abi.SectorID) error {
|
||||||
return w.Internal.Remove(ctx, sector)
|
return w.Internal.Remove(ctx, sector)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (w *WorkerStruct) MoveStorage(ctx context.Context, sector abi.SectorID, types stores.SectorFileType) error {
|
|
||||||
return w.Internal.MoveStorage(ctx, sector, types)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (w *WorkerStruct) StorageAddLocal(ctx context.Context, path string) error {
|
func (w *WorkerStruct) StorageAddLocal(ctx context.Context, path string) error {
|
||||||
return w.Internal.StorageAddLocal(ctx, path)
|
return w.Internal.StorageAddLocal(ctx, path)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (w *WorkerStruct) UnsealPiece(ctx context.Context, id abi.SectorID, index storiface.UnpaddedByteIndex, size abi.UnpaddedPieceSize, randomness abi.SealRandomness, c cid.Cid) error {
|
|
||||||
return w.Internal.UnsealPiece(ctx, id, index, size, randomness, c)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (w *WorkerStruct) ReadPiece(ctx context.Context, writer io.Writer, id abi.SectorID, index storiface.UnpaddedByteIndex, size abi.UnpaddedPieceSize) (bool, error) {
|
|
||||||
return w.Internal.ReadPiece(ctx, writer, id, index, size)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (w *WorkerStruct) Fetch(ctx context.Context, id abi.SectorID, fileType stores.SectorFileType, ptype stores.PathType, am stores.AcquireMode) error {
|
|
||||||
return w.Internal.Fetch(ctx, id, fileType, ptype, am)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (w *WorkerStruct) Closing(ctx context.Context) (<-chan struct{}, error) {
|
func (w *WorkerStruct) Closing(ctx context.Context) (<-chan struct{}, error) {
|
||||||
return w.Internal.Closing(ctx)
|
return w.Internal.Closing(ctx)
|
||||||
}
|
}
|
||||||
|
@ -53,7 +53,7 @@ func (ve Version) EqMajorMinor(v2 Version) bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// APIVersion is a semver version of the rpc api exposed
|
// APIVersion is a semver version of the rpc api exposed
|
||||||
var APIVersion Version = newVer(0, 14, 0)
|
var APIVersion Version = newVer(0, 15, 0)
|
||||||
|
|
||||||
//nolint:varcheck,deadcode
|
//nolint:varcheck,deadcode
|
||||||
const (
|
const (
|
||||||
|
265
extern/sector-storage/localworker.go
vendored
265
extern/sector-storage/localworker.go
vendored
@ -7,6 +7,7 @@ import (
|
|||||||
"runtime"
|
"runtime"
|
||||||
|
|
||||||
"github.com/elastic/go-sysinfo"
|
"github.com/elastic/go-sysinfo"
|
||||||
|
"github.com/google/uuid"
|
||||||
"github.com/hashicorp/go-multierror"
|
"github.com/hashicorp/go-multierror"
|
||||||
"github.com/ipfs/go-cid"
|
"github.com/ipfs/go-cid"
|
||||||
"golang.org/x/xerrors"
|
"golang.org/x/xerrors"
|
||||||
@ -33,6 +34,7 @@ type LocalWorker struct {
|
|||||||
storage stores.Store
|
storage stores.Store
|
||||||
localStore *stores.Local
|
localStore *stores.Local
|
||||||
sindex stores.SectorIndex
|
sindex stores.SectorIndex
|
||||||
|
ret storiface.WorkerReturn
|
||||||
|
|
||||||
acceptTasks map[sealtasks.TaskType]struct{}
|
acceptTasks map[sealtasks.TaskType]struct{}
|
||||||
}
|
}
|
||||||
@ -95,6 +97,25 @@ func (l *LocalWorker) sb() (ffiwrapper.Storage, error) {
|
|||||||
return ffiwrapper.New(&localWorkerPathProvider{w: l}, l.scfg)
|
return ffiwrapper.New(&localWorkerPathProvider{w: l}, l.scfg)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (l *LocalWorker) asyncCall(sector abi.SectorID, work func(ci storiface.CallID)) (storiface.CallID, error) {
|
||||||
|
ci := storiface.CallID{
|
||||||
|
Sector: sector,
|
||||||
|
ID: uuid.New(),
|
||||||
|
}
|
||||||
|
|
||||||
|
go work(ci)
|
||||||
|
|
||||||
|
return ci, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func errstr(err error) string {
|
||||||
|
if err != nil {
|
||||||
|
return err.Error()
|
||||||
|
}
|
||||||
|
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
func (l *LocalWorker) NewSector(ctx context.Context, sector abi.SectorID) error {
|
func (l *LocalWorker) NewSector(ctx context.Context, sector abi.SectorID) error {
|
||||||
sb, err := l.sb()
|
sb, err := l.sb()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -104,92 +125,140 @@ func (l *LocalWorker) NewSector(ctx context.Context, sector abi.SectorID) error
|
|||||||
return sb.NewSector(ctx, sector)
|
return sb.NewSector(ctx, sector)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *LocalWorker) AddPiece(ctx context.Context, sector abi.SectorID, epcs []abi.UnpaddedPieceSize, sz abi.UnpaddedPieceSize, r io.Reader) (abi.PieceInfo, error) {
|
func (l *LocalWorker) AddPiece(ctx context.Context, sector abi.SectorID, epcs []abi.UnpaddedPieceSize, sz abi.UnpaddedPieceSize, r io.Reader) (storiface.CallID, error) {
|
||||||
sb, err := l.sb()
|
sb, err := l.sb()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return abi.PieceInfo{}, err
|
return storiface.UndefCall, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return sb.AddPiece(ctx, sector, epcs, sz, r)
|
return l.asyncCall(sector, func(ci storiface.CallID) {
|
||||||
|
pi, err := sb.AddPiece(ctx, sector, epcs, sz, r)
|
||||||
|
|
||||||
|
if err := l.ret.ReturnAddPiece(ctx, ci, pi, errstr(err)); err != nil {
|
||||||
|
log.Errorf("ReturnAddPiece: %+v", err)
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *LocalWorker) Fetch(ctx context.Context, sector abi.SectorID, fileType stores.SectorFileType, ptype stores.PathType, am stores.AcquireMode) error {
|
func (l *LocalWorker) Fetch(ctx context.Context, sector abi.SectorID, fileType stores.SectorFileType, ptype stores.PathType, am stores.AcquireMode) (storiface.CallID, error) {
|
||||||
_, done, err := (&localWorkerPathProvider{w: l, op: am}).AcquireSector(ctx, sector, fileType, stores.FTNone, ptype)
|
return l.asyncCall(sector, func(ci storiface.CallID) {
|
||||||
if err != nil {
|
_, done, err := (&localWorkerPathProvider{w: l, op: am}).AcquireSector(ctx, sector, fileType, stores.FTNone, ptype)
|
||||||
return err
|
if err == nil {
|
||||||
}
|
done()
|
||||||
done()
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (l *LocalWorker) SealPreCommit1(ctx context.Context, sector abi.SectorID, ticket abi.SealRandomness, pieces []abi.PieceInfo) (out storage2.PreCommit1Out, err error) {
|
|
||||||
{
|
|
||||||
// cleanup previous failed attempts if they exist
|
|
||||||
if err := l.storage.Remove(ctx, sector, stores.FTSealed, true); err != nil {
|
|
||||||
return nil, xerrors.Errorf("cleaning up sealed data: %w", err)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := l.storage.Remove(ctx, sector, stores.FTCache, true); err != nil {
|
if err := l.ret.ReturnFetch(ctx, ci, errstr(err)); err != nil {
|
||||||
return nil, xerrors.Errorf("cleaning up cache data: %w", err)
|
log.Errorf("ReturnFetch: %+v", err)
|
||||||
}
|
}
|
||||||
}
|
})
|
||||||
|
|
||||||
sb, err := l.sb()
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return sb.SealPreCommit1(ctx, sector, ticket, pieces)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *LocalWorker) SealPreCommit2(ctx context.Context, sector abi.SectorID, phase1Out storage2.PreCommit1Out) (cids storage2.SectorCids, err error) {
|
func (l *LocalWorker) SealPreCommit1(ctx context.Context, sector abi.SectorID, ticket abi.SealRandomness, pieces []abi.PieceInfo) (storiface.CallID, error) {
|
||||||
sb, err := l.sb()
|
return l.asyncCall(sector, func(ci storiface.CallID) {
|
||||||
if err != nil {
|
var err error
|
||||||
return storage2.SectorCids{}, err
|
var p1o storage2.PreCommit1Out
|
||||||
}
|
defer func() {
|
||||||
|
if err := l.ret.ReturnSealPreCommit1(ctx, ci, p1o, errstr(err)); err != nil {
|
||||||
|
log.Errorf("ReturnSealPreCommit1: %+v", err)
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
return sb.SealPreCommit2(ctx, sector, phase1Out)
|
{
|
||||||
}
|
// cleanup previous failed attempts if they exist
|
||||||
|
if err = l.storage.Remove(ctx, sector, stores.FTSealed, true); err != nil {
|
||||||
|
err = xerrors.Errorf("cleaning up sealed data: %w", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func (l *LocalWorker) SealCommit1(ctx context.Context, sector abi.SectorID, ticket abi.SealRandomness, seed abi.InteractiveSealRandomness, pieces []abi.PieceInfo, cids storage2.SectorCids) (output storage2.Commit1Out, err error) {
|
if err = l.storage.Remove(ctx, sector, stores.FTCache, true); err != nil {
|
||||||
sb, err := l.sb()
|
err = xerrors.Errorf("cleaning up cache data: %w", err)
|
||||||
if err != nil {
|
return
|
||||||
return nil, err
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return sb.SealCommit1(ctx, sector, ticket, seed, pieces, cids)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (l *LocalWorker) SealCommit2(ctx context.Context, sector abi.SectorID, phase1Out storage2.Commit1Out) (proof storage2.Proof, err error) {
|
|
||||||
sb, err := l.sb()
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return sb.SealCommit2(ctx, sector, phase1Out)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (l *LocalWorker) FinalizeSector(ctx context.Context, sector abi.SectorID, keepUnsealed []storage2.Range) error {
|
|
||||||
sb, err := l.sb()
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := sb.FinalizeSector(ctx, sector, keepUnsealed); err != nil {
|
|
||||||
return xerrors.Errorf("finalizing sector: %w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(keepUnsealed) == 0 {
|
|
||||||
if err := l.storage.Remove(ctx, sector, stores.FTUnsealed, true); err != nil {
|
|
||||||
return xerrors.Errorf("removing unsealed data: %w", err)
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
var sb ffiwrapper.Storage
|
||||||
|
sb, err = l.sb()
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
p1o, err = sb.SealPreCommit1(ctx, sector, ticket, pieces)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *LocalWorker) ReleaseUnsealed(ctx context.Context, sector abi.SectorID, safeToFree []storage2.Range) error {
|
func (l *LocalWorker) SealPreCommit2(ctx context.Context, sector abi.SectorID, phase1Out storage2.PreCommit1Out) (storiface.CallID, error) {
|
||||||
return xerrors.Errorf("implement me")
|
sb, err := l.sb()
|
||||||
|
if err != nil {
|
||||||
|
return storiface.UndefCall, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return l.asyncCall(sector, func(ci storiface.CallID) {
|
||||||
|
cs, err := sb.SealPreCommit2(ctx, sector, phase1Out)
|
||||||
|
|
||||||
|
if err := l.ret.ReturnSealPreCommit2(ctx, ci, cs, errstr(err)); err != nil {
|
||||||
|
log.Errorf("ReturnSealPreCommit2: %+v", err)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func (l *LocalWorker) SealCommit1(ctx context.Context, sector abi.SectorID, ticket abi.SealRandomness, seed abi.InteractiveSealRandomness, pieces []abi.PieceInfo, cids storage2.SectorCids) (storiface.CallID, error) {
|
||||||
|
sb, err := l.sb()
|
||||||
|
if err != nil {
|
||||||
|
return storiface.UndefCall, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return l.asyncCall(sector, func(ci storiface.CallID) {
|
||||||
|
c1o, err := sb.SealCommit1(ctx, sector, ticket, seed, pieces, cids)
|
||||||
|
|
||||||
|
if err := l.ret.ReturnSealCommit1(ctx, ci, c1o, errstr(err)); err != nil {
|
||||||
|
log.Errorf("ReturnSealCommit1: %+v", err)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func (l *LocalWorker) SealCommit2(ctx context.Context, sector abi.SectorID, phase1Out storage2.Commit1Out) (storiface.CallID, error) {
|
||||||
|
sb, err := l.sb()
|
||||||
|
if err != nil {
|
||||||
|
return storiface.UndefCall, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return l.asyncCall(sector, func(ci storiface.CallID) {
|
||||||
|
proof, err := sb.SealCommit2(ctx, sector, phase1Out)
|
||||||
|
|
||||||
|
if err := l.ret.ReturnSealCommit2(ctx, ci, proof, errstr(err)); err != nil {
|
||||||
|
log.Errorf("ReturnSealCommit2: %+v", err)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func (l *LocalWorker) FinalizeSector(ctx context.Context, sector abi.SectorID, keepUnsealed []storage2.Range) (storiface.CallID, error) {
|
||||||
|
sb, err := l.sb()
|
||||||
|
if err != nil {
|
||||||
|
return storiface.UndefCall, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return l.asyncCall(sector, func(ci storiface.CallID) {
|
||||||
|
if err := sb.FinalizeSector(ctx, sector, keepUnsealed); err != nil {
|
||||||
|
if err := l.ret.ReturnFinalizeSector(ctx, ci, errstr(xerrors.Errorf("finalizing sector: %w", err))); err != nil {
|
||||||
|
log.Errorf("ReturnFinalizeSector: %+v", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(keepUnsealed) == 0 {
|
||||||
|
err = xerrors.Errorf("removing unsealed data: %w", err)
|
||||||
|
if err := l.ret.ReturnFinalizeSector(ctx, ci, errstr(err)); err != nil {
|
||||||
|
log.Errorf("ReturnFinalizeSector: %+v", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := l.ret.ReturnFinalizeSector(ctx, ci, errstr(err)); err != nil {
|
||||||
|
log.Errorf("ReturnFinalizeSector: %+v", err)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func (l *LocalWorker) ReleaseUnsealed(ctx context.Context, sector abi.SectorID, safeToFree []storage2.Range) (storiface.CallID, error) {
|
||||||
|
return storiface.UndefCall, xerrors.Errorf("implement me")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *LocalWorker) Remove(ctx context.Context, sector abi.SectorID) error {
|
func (l *LocalWorker) Remove(ctx context.Context, sector abi.SectorID) error {
|
||||||
@ -208,42 +277,60 @@ func (l *LocalWorker) Remove(ctx context.Context, sector abi.SectorID) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *LocalWorker) MoveStorage(ctx context.Context, sector abi.SectorID, types stores.SectorFileType) error {
|
func (l *LocalWorker) MoveStorage(ctx context.Context, sector abi.SectorID, types stores.SectorFileType) (storiface.CallID, error) {
|
||||||
if err := l.storage.MoveStorage(ctx, sector, l.scfg.SealProofType, types); err != nil {
|
return l.asyncCall(sector, func(ci storiface.CallID) {
|
||||||
return xerrors.Errorf("moving sealed data to storage: %w", err)
|
err := l.storage.MoveStorage(ctx, sector, l.scfg.SealProofType, types)
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
if err := l.ret.ReturnMoveStorage(ctx, ci, errstr(err)); err != nil {
|
||||||
|
log.Errorf("ReturnMoveStorage: %+v", err)
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *LocalWorker) UnsealPiece(ctx context.Context, sector abi.SectorID, index storiface.UnpaddedByteIndex, size abi.UnpaddedPieceSize, randomness abi.SealRandomness, cid cid.Cid) error {
|
func (l *LocalWorker) UnsealPiece(ctx context.Context, sector abi.SectorID, index storiface.UnpaddedByteIndex, size abi.UnpaddedPieceSize, randomness abi.SealRandomness, cid cid.Cid) (storiface.CallID, error) {
|
||||||
sb, err := l.sb()
|
sb, err := l.sb()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return storiface.UndefCall, err
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := sb.UnsealPiece(ctx, sector, index, size, randomness, cid); err != nil {
|
return l.asyncCall(sector, func(ci storiface.CallID) {
|
||||||
return xerrors.Errorf("unsealing sector: %w", err)
|
var err error
|
||||||
}
|
defer func() {
|
||||||
|
if err := l.ret.ReturnUnsealPiece(ctx, ci, errstr(err)); err != nil {
|
||||||
|
log.Errorf("ReturnUnsealPiece: %+v", err)
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
if err := l.storage.RemoveCopies(ctx, sector, stores.FTSealed); err != nil {
|
if err = sb.UnsealPiece(ctx, sector, index, size, randomness, cid); err != nil {
|
||||||
return xerrors.Errorf("removing source data: %w", err)
|
err = xerrors.Errorf("unsealing sector: %w", err)
|
||||||
}
|
return
|
||||||
|
}
|
||||||
|
|
||||||
if err := l.storage.RemoveCopies(ctx, sector, stores.FTCache); err != nil {
|
if err = l.storage.RemoveCopies(ctx, sector, stores.FTSealed); err != nil {
|
||||||
return xerrors.Errorf("removing source data: %w", err)
|
err = xerrors.Errorf("removing source data: %w", err)
|
||||||
}
|
return
|
||||||
|
}
|
||||||
|
|
||||||
return nil
|
if err = l.storage.RemoveCopies(ctx, sector, stores.FTCache); err != nil {
|
||||||
|
err = xerrors.Errorf("removing source data: %w", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *LocalWorker) ReadPiece(ctx context.Context, writer io.Writer, sector abi.SectorID, index storiface.UnpaddedByteIndex, size abi.UnpaddedPieceSize) (bool, error) {
|
func (l *LocalWorker) ReadPiece(ctx context.Context, writer io.Writer, sector abi.SectorID, index storiface.UnpaddedByteIndex, size abi.UnpaddedPieceSize) (storiface.CallID, error) {
|
||||||
sb, err := l.sb()
|
sb, err := l.sb()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, err
|
return storiface.UndefCall, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return sb.ReadPiece(ctx, writer, sector, index, size)
|
return l.asyncCall(sector, func(ci storiface.CallID) {
|
||||||
|
ok, err := sb.ReadPiece(ctx, writer, sector, index, size)
|
||||||
|
|
||||||
|
if err := l.ret.ReturnReadPiece(ctx, ci, ok, errstr(err)); err != nil {
|
||||||
|
log.Errorf("ReturnReadPiece: %+v", err)
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *LocalWorker) TaskTypes(context.Context) (map[sealtasks.TaskType]struct{}, error) {
|
func (l *LocalWorker) TaskTypes(context.Context) (map[sealtasks.TaskType]struct{}, error) {
|
||||||
|
8
extern/sector-storage/manager.go
vendored
8
extern/sector-storage/manager.go
vendored
@ -29,13 +29,7 @@ var ErrNoWorkers = errors.New("no suitable workers found")
|
|||||||
type URLs []string
|
type URLs []string
|
||||||
|
|
||||||
type Worker interface {
|
type Worker interface {
|
||||||
ffiwrapper.StorageSealer
|
storiface.WorkerCalls
|
||||||
|
|
||||||
MoveStorage(ctx context.Context, sector abi.SectorID, types stores.SectorFileType) error
|
|
||||||
|
|
||||||
Fetch(ctx context.Context, s abi.SectorID, ft stores.SectorFileType, ptype stores.PathType, am stores.AcquireMode) error
|
|
||||||
UnsealPiece(context.Context, abi.SectorID, storiface.UnpaddedByteIndex, abi.UnpaddedPieceSize, abi.SealRandomness, cid.Cid) error
|
|
||||||
ReadPiece(context.Context, io.Writer, abi.SectorID, storiface.UnpaddedByteIndex, abi.UnpaddedPieceSize) (bool, error)
|
|
||||||
|
|
||||||
TaskTypes(context.Context) (map[sealtasks.TaskType]struct{}, error)
|
TaskTypes(context.Context) (map[sealtasks.TaskType]struct{}, error)
|
||||||
|
|
||||||
|
1
extern/sector-storage/storiface/storage.go
vendored
Normal file
1
extern/sector-storage/storiface/storage.go
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
package storiface
|
45
extern/sector-storage/storiface/worker.go
vendored
45
extern/sector-storage/storiface/worker.go
vendored
@ -1,10 +1,18 @@
|
|||||||
package storiface
|
package storiface
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"context"
|
||||||
|
"io"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/filecoin-project/lotus/extern/sector-storage/sealtasks"
|
"github.com/google/uuid"
|
||||||
|
"github.com/ipfs/go-cid"
|
||||||
|
|
||||||
"github.com/filecoin-project/specs-actors/actors/abi"
|
"github.com/filecoin-project/specs-actors/actors/abi"
|
||||||
|
"github.com/filecoin-project/specs-storage/storage"
|
||||||
|
|
||||||
|
"github.com/filecoin-project/lotus/extern/sector-storage/sealtasks"
|
||||||
|
"github.com/filecoin-project/lotus/extern/sector-storage/stores"
|
||||||
)
|
)
|
||||||
|
|
||||||
type WorkerInfo struct {
|
type WorkerInfo struct {
|
||||||
@ -40,3 +48,38 @@ type WorkerJob struct {
|
|||||||
RunWait int // 0 - running, 1+ - assigned
|
RunWait int // 0 - running, 1+ - assigned
|
||||||
Start time.Time
|
Start time.Time
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type CallID struct {
|
||||||
|
Sector abi.SectorID
|
||||||
|
ID uuid.UUID
|
||||||
|
}
|
||||||
|
|
||||||
|
var UndefCall CallID
|
||||||
|
|
||||||
|
type WorkerCalls interface {
|
||||||
|
AddPiece(ctx context.Context, sector abi.SectorID, pieceSizes []abi.UnpaddedPieceSize, newPieceSize abi.UnpaddedPieceSize, pieceData storage.Data) (CallID, error)
|
||||||
|
SealPreCommit1(ctx context.Context, sector abi.SectorID, ticket abi.SealRandomness, pieces []abi.PieceInfo) (CallID, error)
|
||||||
|
SealPreCommit2(ctx context.Context, sector abi.SectorID, pc1o storage.PreCommit1Out) (CallID, error)
|
||||||
|
SealCommit1(ctx context.Context, sector abi.SectorID, ticket abi.SealRandomness, seed abi.InteractiveSealRandomness, pieces []abi.PieceInfo, cids storage.SectorCids) (CallID, error)
|
||||||
|
SealCommit2(ctx context.Context, sector abi.SectorID, c1o storage.Commit1Out) (CallID, error)
|
||||||
|
FinalizeSector(ctx context.Context, sector abi.SectorID, keepUnsealed []storage.Range) (CallID, error)
|
||||||
|
ReleaseUnsealed(ctx context.Context, sector abi.SectorID, safeToFree []storage.Range) (CallID, error)
|
||||||
|
MoveStorage(ctx context.Context, sector abi.SectorID, types stores.SectorFileType) (CallID, error)
|
||||||
|
UnsealPiece(context.Context, abi.SectorID, UnpaddedByteIndex, abi.UnpaddedPieceSize, abi.SealRandomness, cid.Cid) (CallID, error)
|
||||||
|
ReadPiece(context.Context, io.Writer, abi.SectorID, UnpaddedByteIndex, abi.UnpaddedPieceSize) (CallID, error)
|
||||||
|
Fetch(context.Context, abi.SectorID, stores.SectorFileType, stores.PathType, stores.AcquireMode) (CallID, error)
|
||||||
|
}
|
||||||
|
|
||||||
|
type WorkerReturn interface {
|
||||||
|
ReturnAddPiece(ctx context.Context, callID CallID, pi abi.PieceInfo, err string) error
|
||||||
|
ReturnSealPreCommit1(ctx context.Context, callID CallID, p1o storage.PreCommit1Out, err string) error
|
||||||
|
ReturnSealPreCommit2(ctx context.Context, callID CallID, sealed storage.SectorCids, err string) error
|
||||||
|
ReturnSealCommit1(ctx context.Context, callID CallID, out storage.Commit1Out, err string) error
|
||||||
|
ReturnSealCommit2(ctx context.Context, callID CallID, proof storage.Proof, err string) error
|
||||||
|
ReturnFinalizeSector(ctx context.Context, callID CallID, err string) error
|
||||||
|
ReturnReleaseUnsealed(ctx context.Context, callID CallID, err string) error
|
||||||
|
ReturnMoveStorage(ctx context.Context, callID CallID, err string) error
|
||||||
|
ReturnUnsealPiece(ctx context.Context, callID CallID, err string) error
|
||||||
|
ReturnReadPiece(ctx context.Context, callID CallID, ok bool, err string) error
|
||||||
|
ReturnFetch(ctx context.Context, callID CallID, err string) error
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user