update StorageMinerAPI
This commit is contained in:
parent
cb603c62d9
commit
76bb424de0
2
extern/sector-storage/stores/index.go
vendored
2
extern/sector-storage/stores/index.go
vendored
@ -65,6 +65,8 @@ type SectorIndex interface { // part of storage-miner api
|
|||||||
// atomically acquire locks on all sector file types. close ctx to unlock
|
// atomically acquire locks on all sector file types. close ctx to unlock
|
||||||
StorageLock(ctx context.Context, sector abi.SectorID, read storiface.SectorFileType, write storiface.SectorFileType) error
|
StorageLock(ctx context.Context, sector abi.SectorID, read storiface.SectorFileType, write storiface.SectorFileType) error
|
||||||
StorageTryLock(ctx context.Context, sector abi.SectorID, read storiface.SectorFileType, write storiface.SectorFileType) (bool, error)
|
StorageTryLock(ctx context.Context, sector abi.SectorID, read storiface.SectorFileType, write storiface.SectorFileType) (bool, error)
|
||||||
|
|
||||||
|
StorageList(ctx context.Context) (map[ID][]Decl, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
type Decl struct {
|
type Decl struct {
|
||||||
|
@ -25,7 +25,6 @@ import (
|
|||||||
storagemarket "github.com/filecoin-project/go-fil-markets/storagemarket"
|
storagemarket "github.com/filecoin-project/go-fil-markets/storagemarket"
|
||||||
"github.com/filecoin-project/go-jsonrpc/auth"
|
"github.com/filecoin-project/go-jsonrpc/auth"
|
||||||
"github.com/filecoin-project/go-state-types/abi"
|
"github.com/filecoin-project/go-state-types/abi"
|
||||||
"github.com/filecoin-project/go-state-types/big"
|
|
||||||
|
|
||||||
sectorstorage "github.com/filecoin-project/lotus/extern/sector-storage"
|
sectorstorage "github.com/filecoin-project/lotus/extern/sector-storage"
|
||||||
"github.com/filecoin-project/lotus/extern/sector-storage/fsutil"
|
"github.com/filecoin-project/lotus/extern/sector-storage/fsutil"
|
||||||
@ -48,44 +47,49 @@ import (
|
|||||||
type StorageMinerAPI struct {
|
type StorageMinerAPI struct {
|
||||||
common.CommonAPI
|
common.CommonAPI
|
||||||
|
|
||||||
SectorBlocks *sectorblocks.SectorBlocks
|
Full api.FullNode
|
||||||
|
LocalStore *stores.Local
|
||||||
|
ReboteStore *stores.Remote
|
||||||
|
|
||||||
PieceStore dtypes.ProviderPieceStore
|
// Markets
|
||||||
StorageProvider storagemarket.StorageProvider
|
PieceStore dtypes.ProviderPieceStore `optional:"true"`
|
||||||
RetrievalProvider retrievalmarket.RetrievalProvider
|
StorageProvider storagemarket.StorageProvider `optional:"true"`
|
||||||
Miner *storage.Miner
|
RetrievalProvider retrievalmarket.RetrievalProvider `optional:"true"`
|
||||||
BlockMiner *miner.Miner
|
DataTransfer dtypes.ProviderDataTransfer `optional:"true"`
|
||||||
Full api.FullNode
|
DealPublisher *storageadapter.DealPublisher `optional:"true"`
|
||||||
StorageMgr *sectorstorage.Manager `optional:"true"`
|
SectorBlocks *sectorblocks.SectorBlocks `optional:"true"`
|
||||||
IStorageMgr sectorstorage.SectorManager
|
|
||||||
*stores.Index
|
|
||||||
storiface.WorkerReturn
|
|
||||||
DataTransfer dtypes.ProviderDataTransfer
|
|
||||||
Host host.Host
|
|
||||||
AddrSel *storage.AddressSelector
|
|
||||||
DealPublisher *storageadapter.DealPublisher
|
|
||||||
|
|
||||||
Epp gen.WinningPoStProver
|
// Miner / storage
|
||||||
|
Miner *storage.Miner `optional:"true"`
|
||||||
|
BlockMiner *miner.Miner `optional:"true"`
|
||||||
|
StorageMgr *sectorstorage.Manager `optional:"true"`
|
||||||
|
IStorageMgr sectorstorage.SectorManager `optional:"true"`
|
||||||
|
stores.SectorIndex
|
||||||
|
storiface.WorkerReturn `optional:"true"`
|
||||||
|
Host host.Host
|
||||||
|
AddrSel *storage.AddressSelector
|
||||||
|
|
||||||
|
Epp gen.WinningPoStProver `optional:"true"`
|
||||||
DS dtypes.MetadataDS
|
DS dtypes.MetadataDS
|
||||||
|
|
||||||
ConsiderOnlineStorageDealsConfigFunc dtypes.ConsiderOnlineStorageDealsConfigFunc
|
ConsiderOnlineStorageDealsConfigFunc dtypes.ConsiderOnlineStorageDealsConfigFunc `optional:"true"`
|
||||||
SetConsiderOnlineStorageDealsConfigFunc dtypes.SetConsiderOnlineStorageDealsConfigFunc
|
SetConsiderOnlineStorageDealsConfigFunc dtypes.SetConsiderOnlineStorageDealsConfigFunc `optional:"true"`
|
||||||
ConsiderOnlineRetrievalDealsConfigFunc dtypes.ConsiderOnlineRetrievalDealsConfigFunc
|
ConsiderOnlineRetrievalDealsConfigFunc dtypes.ConsiderOnlineRetrievalDealsConfigFunc `optional:"true"`
|
||||||
SetConsiderOnlineRetrievalDealsConfigFunc dtypes.SetConsiderOnlineRetrievalDealsConfigFunc
|
SetConsiderOnlineRetrievalDealsConfigFunc dtypes.SetConsiderOnlineRetrievalDealsConfigFunc `optional:"true"`
|
||||||
StorageDealPieceCidBlocklistConfigFunc dtypes.StorageDealPieceCidBlocklistConfigFunc
|
StorageDealPieceCidBlocklistConfigFunc dtypes.StorageDealPieceCidBlocklistConfigFunc `optional:"true"`
|
||||||
SetStorageDealPieceCidBlocklistConfigFunc dtypes.SetStorageDealPieceCidBlocklistConfigFunc
|
SetStorageDealPieceCidBlocklistConfigFunc dtypes.SetStorageDealPieceCidBlocklistConfigFunc `optional:"true"`
|
||||||
ConsiderOfflineStorageDealsConfigFunc dtypes.ConsiderOfflineStorageDealsConfigFunc
|
ConsiderOfflineStorageDealsConfigFunc dtypes.ConsiderOfflineStorageDealsConfigFunc `optional:"true"`
|
||||||
SetConsiderOfflineStorageDealsConfigFunc dtypes.SetConsiderOfflineStorageDealsConfigFunc
|
SetConsiderOfflineStorageDealsConfigFunc dtypes.SetConsiderOfflineStorageDealsConfigFunc `optional:"true"`
|
||||||
ConsiderOfflineRetrievalDealsConfigFunc dtypes.ConsiderOfflineRetrievalDealsConfigFunc
|
ConsiderOfflineRetrievalDealsConfigFunc dtypes.ConsiderOfflineRetrievalDealsConfigFunc `optional:"true"`
|
||||||
SetConsiderOfflineRetrievalDealsConfigFunc dtypes.SetConsiderOfflineRetrievalDealsConfigFunc
|
SetConsiderOfflineRetrievalDealsConfigFunc dtypes.SetConsiderOfflineRetrievalDealsConfigFunc `optional:"true"`
|
||||||
ConsiderVerifiedStorageDealsConfigFunc dtypes.ConsiderVerifiedStorageDealsConfigFunc
|
ConsiderVerifiedStorageDealsConfigFunc dtypes.ConsiderVerifiedStorageDealsConfigFunc `optional:"true"`
|
||||||
SetConsiderVerifiedStorageDealsConfigFunc dtypes.SetConsiderVerifiedStorageDealsConfigFunc
|
SetConsiderVerifiedStorageDealsConfigFunc dtypes.SetConsiderVerifiedStorageDealsConfigFunc `optional:"true"`
|
||||||
ConsiderUnverifiedStorageDealsConfigFunc dtypes.ConsiderUnverifiedStorageDealsConfigFunc
|
ConsiderUnverifiedStorageDealsConfigFunc dtypes.ConsiderUnverifiedStorageDealsConfigFunc `optional:"true"`
|
||||||
SetConsiderUnverifiedStorageDealsConfigFunc dtypes.SetConsiderUnverifiedStorageDealsConfigFunc
|
SetConsiderUnverifiedStorageDealsConfigFunc dtypes.SetConsiderUnverifiedStorageDealsConfigFunc `optional:"true"`
|
||||||
SetSealingConfigFunc dtypes.SetSealingConfigFunc
|
SetSealingConfigFunc dtypes.SetSealingConfigFunc `optional:"true"`
|
||||||
GetSealingConfigFunc dtypes.GetSealingConfigFunc
|
GetSealingConfigFunc dtypes.GetSealingConfigFunc `optional:"true"`
|
||||||
GetExpectedSealDurationFunc dtypes.GetExpectedSealDurationFunc
|
GetExpectedSealDurationFunc dtypes.GetExpectedSealDurationFunc `optional:"true"`
|
||||||
SetExpectedSealDurationFunc dtypes.SetExpectedSealDurationFunc
|
SetExpectedSealDurationFunc dtypes.SetExpectedSealDurationFunc `optional:"true"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (sm *StorageMinerAPI) ServeRemote(w http.ResponseWriter, r *http.Request) {
|
func (sm *StorageMinerAPI) ServeRemote(w http.ResponseWriter, r *http.Request) {
|
||||||
@ -135,12 +139,12 @@ func (sm *StorageMinerAPI) PledgeSector(ctx context.Context) (abi.SectorID, erro
|
|||||||
// wait for the sector to enter the Packing state
|
// wait for the sector to enter the Packing state
|
||||||
// TODO: instead of polling implement some pubsub-type thing in storagefsm
|
// TODO: instead of polling implement some pubsub-type thing in storagefsm
|
||||||
for {
|
for {
|
||||||
info, err := sm.Miner.GetSectorInfo(sr.ID.Number)
|
info, err := sm.Miner.SectorsStatus(ctx, sr.ID.Number, false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return abi.SectorID{}, xerrors.Errorf("getting pledged sector info: %w", err)
|
return abi.SectorID{}, xerrors.Errorf("getting pledged sector info: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if info.State != sealing.UndefinedSectorState {
|
if info.State != api.SectorState(sealing.UndefinedSectorState) {
|
||||||
return sr.ID, nil
|
return sr.ID, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -153,62 +157,11 @@ func (sm *StorageMinerAPI) PledgeSector(ctx context.Context) (abi.SectorID, erro
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (sm *StorageMinerAPI) SectorsStatus(ctx context.Context, sid abi.SectorNumber, showOnChainInfo bool) (api.SectorInfo, error) {
|
func (sm *StorageMinerAPI) SectorsStatus(ctx context.Context, sid abi.SectorNumber, showOnChainInfo bool) (api.SectorInfo, error) {
|
||||||
info, err := sm.Miner.GetSectorInfo(sid)
|
sInfo, err := sm.Miner.SectorsStatus(ctx, sid, false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return api.SectorInfo{}, err
|
return api.SectorInfo{}, err
|
||||||
}
|
}
|
||||||
|
|
||||||
deals := make([]abi.DealID, len(info.Pieces))
|
|
||||||
for i, piece := range info.Pieces {
|
|
||||||
if piece.DealInfo == nil {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
deals[i] = piece.DealInfo.DealID
|
|
||||||
}
|
|
||||||
|
|
||||||
log := make([]api.SectorLog, len(info.Log))
|
|
||||||
for i, l := range info.Log {
|
|
||||||
log[i] = api.SectorLog{
|
|
||||||
Kind: l.Kind,
|
|
||||||
Timestamp: l.Timestamp,
|
|
||||||
Trace: l.Trace,
|
|
||||||
Message: l.Message,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
sInfo := api.SectorInfo{
|
|
||||||
SectorID: sid,
|
|
||||||
State: api.SectorState(info.State),
|
|
||||||
CommD: info.CommD,
|
|
||||||
CommR: info.CommR,
|
|
||||||
Proof: info.Proof,
|
|
||||||
Deals: deals,
|
|
||||||
Ticket: api.SealTicket{
|
|
||||||
Value: info.TicketValue,
|
|
||||||
Epoch: info.TicketEpoch,
|
|
||||||
},
|
|
||||||
Seed: api.SealSeed{
|
|
||||||
Value: info.SeedValue,
|
|
||||||
Epoch: info.SeedEpoch,
|
|
||||||
},
|
|
||||||
PreCommitMsg: info.PreCommitMessage,
|
|
||||||
CommitMsg: info.CommitMessage,
|
|
||||||
Retries: info.InvalidProofs,
|
|
||||||
ToUpgrade: sm.Miner.IsMarkedForUpgrade(sid),
|
|
||||||
|
|
||||||
LastErr: info.LastErr,
|
|
||||||
Log: log,
|
|
||||||
// on chain info
|
|
||||||
SealProof: 0,
|
|
||||||
Activation: 0,
|
|
||||||
Expiration: 0,
|
|
||||||
DealWeight: big.Zero(),
|
|
||||||
VerifiedDealWeight: big.Zero(),
|
|
||||||
InitialPledge: big.Zero(),
|
|
||||||
OnTime: 0,
|
|
||||||
Early: 0,
|
|
||||||
}
|
|
||||||
|
|
||||||
if !showOnChainInfo {
|
if !showOnChainInfo {
|
||||||
return sInfo, nil
|
return sInfo, nil
|
||||||
}
|
}
|
||||||
@ -307,7 +260,17 @@ func (sm *StorageMinerAPI) SectorsSummary(ctx context.Context) (map[api.SectorSt
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (sm *StorageMinerAPI) StorageLocal(ctx context.Context) (map[stores.ID]string, error) {
|
func (sm *StorageMinerAPI) StorageLocal(ctx context.Context) (map[stores.ID]string, error) {
|
||||||
return sm.StorageMgr.StorageLocal(ctx)
|
l, err := sm.LocalStore.Local(ctx)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
out := map[stores.ID]string{}
|
||||||
|
for _, st := range l {
|
||||||
|
out[st.ID] = st.LocalPath
|
||||||
|
}
|
||||||
|
|
||||||
|
return out, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (sm *StorageMinerAPI) SectorsRefs(context.Context) (map[string][]api.SealedRef, error) {
|
func (sm *StorageMinerAPI) SectorsRefs(context.Context) (map[string][]api.SealedRef, error) {
|
||||||
@ -327,7 +290,7 @@ func (sm *StorageMinerAPI) SectorsRefs(context.Context) (map[string][]api.Sealed
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (sm *StorageMinerAPI) StorageStat(ctx context.Context, id stores.ID) (fsutil.FsStat, error) {
|
func (sm *StorageMinerAPI) StorageStat(ctx context.Context, id stores.ID) (fsutil.FsStat, error) {
|
||||||
return sm.StorageMgr.FsStat(ctx, id)
|
return sm.ReboteStore.FsStat(ctx, id)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (sm *StorageMinerAPI) SectorStartSealing(ctx context.Context, number abi.SectorNumber) error {
|
func (sm *StorageMinerAPI) SectorStartSealing(ctx context.Context, number abi.SectorNumber) error {
|
||||||
@ -674,7 +637,7 @@ func (sm *StorageMinerAPI) CheckProvable(ctx context.Context, pp abi.RegisteredP
|
|||||||
var rg storiface.RGetter
|
var rg storiface.RGetter
|
||||||
if expensive {
|
if expensive {
|
||||||
rg = func(ctx context.Context, id abi.SectorID) (cid.Cid, error) {
|
rg = func(ctx context.Context, id abi.SectorID) (cid.Cid, error) {
|
||||||
si, err := sm.Miner.GetSectorInfo(id.Number)
|
si, err := sm.Miner.SectorsStatus(ctx, id.Number, false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return cid.Undef, err
|
return cid.Undef, err
|
||||||
}
|
}
|
||||||
|
@ -30,10 +30,6 @@ func (m *Miner) ListSectors() ([]sealing.SectorInfo, error) {
|
|||||||
return m.sealing.ListSectors()
|
return m.sealing.ListSectors()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Miner) GetSectorInfo(sid abi.SectorNumber) (sealing.SectorInfo, error) {
|
|
||||||
return m.sealing.GetSectorInfo(sid)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *Miner) PledgeSector(ctx context.Context) (storage.SectorRef, error) {
|
func (m *Miner) PledgeSector(ctx context.Context) (storage.SectorRef, error) {
|
||||||
return m.sealing.PledgeSector(ctx)
|
return m.sealing.PledgeSector(ctx)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user