lotus/extern/sector-storage/storiface/worker.go

106 lines
3.5 KiB
Go
Raw Normal View History

package storiface
2020-07-21 18:01:25 +00:00
import (
2020-09-06 16:47:16 +00:00
"context"
2020-09-14 07:44:55 +00:00
"fmt"
2020-09-06 16:47:16 +00:00
"io"
2020-07-21 18:01:25 +00:00
"time"
2020-09-06 16:47:16 +00:00
"github.com/google/uuid"
"github.com/ipfs/go-cid"
2020-09-07 03:49:10 +00:00
"github.com/filecoin-project/go-state-types/abi"
2020-09-06 16:47:16 +00:00
"github.com/filecoin-project/specs-storage/storage"
"github.com/filecoin-project/lotus/extern/sector-storage/sealtasks"
2020-07-21 18:01:25 +00:00
)
type WorkerInfo struct {
Hostname string
Resources WorkerResources
}
type WorkerResources struct {
MemPhysical uint64
MemSwap uint64
MemReserved uint64 // Used by system / other processes
CPUs uint64 // Logical cores
GPUs []string
}
type WorkerStats struct {
Info WorkerInfo
Enabled bool
MemUsedMin uint64
MemUsedMax uint64
2020-08-16 10:40:35 +00:00
GpuUsed bool // nolint
CpuUse uint64 // nolint
}
2020-07-21 18:01:25 +00:00
const (
RWRetWait = -1
RWReturned = -2
RWRetDone = -3
)
2020-07-21 18:01:25 +00:00
type WorkerJob struct {
2020-09-07 14:12:46 +00:00
ID CallID
2020-07-21 18:01:25 +00:00
Sector abi.SectorID
Task sealtasks.TaskType
// 1+ - assigned
// 0 - running
// -1 - ret-wait
// -2 - returned
// -3 - ret-done
RunWait int
Start time.Time
Hostname string `json:",omitempty"` // optional, set for ret-wait jobs
2020-07-21 18:01:25 +00:00
}
2020-09-06 16:47:16 +00:00
type CallID struct {
Sector abi.SectorID
ID uuid.UUID
}
2020-09-14 07:44:55 +00:00
func (c CallID) String() string {
return fmt.Sprintf("%d-%d-%s", c.Sector.Miner, c.Sector.Number, c.ID)
}
var _ fmt.Stringer = &CallID{}
2020-09-06 16:47:16 +00:00
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)
2020-09-06 16:54:00 +00:00
MoveStorage(ctx context.Context, sector abi.SectorID, types SectorFileType) (CallID, error)
2020-09-06 16:47:16 +00:00
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)
2020-09-06 16:54:00 +00:00
Fetch(context.Context, abi.SectorID, SectorFileType, PathType, AcquireMode) (CallID, error)
2020-09-06 16:47:16 +00:00
}
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
}