From abe04c33c1183c7e94ac222183acaaf31dfd5c16 Mon Sep 17 00:00:00 2001 From: zenground0 Date: Wed, 23 Feb 2022 09:56:47 -0700 Subject: [PATCH] Fix fault tracker to handle snap deals --- api/api_storage.go | 2 +- api/proxy_gen.go | 8 +- api/version.go | 2 +- build/openrpc/miner.json.gz | Bin 12906 -> 12929 bytes cmd/lotus-miner/proving.go | 4 +- documentation/en/api-v0-methods-miner.md | 3 + extern/sector-storage/faults.go | 96 ++++++++++++----------- extern/sector-storage/mock/mock.go | 2 +- node/impl/storminer.go | 4 +- storage/wdpost_run.go | 4 +- storage/wdpost_run_test.go | 2 +- 11 files changed, 69 insertions(+), 58 deletions(-) diff --git a/api/api_storage.go b/api/api_storage.go index a66f22d04..da66a9a03 100644 --- a/api/api_storage.go +++ b/api/api_storage.go @@ -256,7 +256,7 @@ type StorageMiner interface { // the path specified when calling CreateBackup is within the base path CreateBackup(ctx context.Context, fpath string) error //perm:admin - CheckProvable(ctx context.Context, pp abi.RegisteredPoStProof, sectors []storage.SectorRef, expensive bool) (map[abi.SectorNumber]string, error) //perm:admin + CheckProvable(ctx context.Context, pp abi.RegisteredPoStProof, sectors []storage.SectorRef, update []bool, expensive bool) (map[abi.SectorNumber]string, error) //perm:admin ComputeProof(ctx context.Context, ssi []builtin.ExtendedSectorInfo, rand abi.PoStRandomness, poStEpoch abi.ChainEpoch, nv abinetwork.Version) ([]builtin.PoStProof, error) //perm:read } diff --git a/api/proxy_gen.go b/api/proxy_gen.go index 73aa2c774..cd3e1ad35 100644 --- a/api/proxy_gen.go +++ b/api/proxy_gen.go @@ -627,7 +627,7 @@ type StorageMinerStruct struct { ActorSectorSize func(p0 context.Context, p1 address.Address) (abi.SectorSize, error) `perm:"read"` - CheckProvable func(p0 context.Context, p1 abi.RegisteredPoStProof, p2 []storage.SectorRef, p3 bool) (map[abi.SectorNumber]string, error) `perm:"admin"` + CheckProvable func(p0 context.Context, p1 abi.RegisteredPoStProof, p2 []storage.SectorRef, p3 []bool, p4 bool) (map[abi.SectorNumber]string, error) `perm:"admin"` ComputeProof func(p0 context.Context, p1 []builtin.ExtendedSectorInfo, p2 abi.PoStRandomness, p3 abi.ChainEpoch, p4 abinetwork.Version) ([]builtin.PoStProof, error) `perm:"read"` @@ -3760,14 +3760,14 @@ func (s *StorageMinerStub) ActorSectorSize(p0 context.Context, p1 address.Addres return *new(abi.SectorSize), ErrNotSupported } -func (s *StorageMinerStruct) CheckProvable(p0 context.Context, p1 abi.RegisteredPoStProof, p2 []storage.SectorRef, p3 bool) (map[abi.SectorNumber]string, error) { +func (s *StorageMinerStruct) CheckProvable(p0 context.Context, p1 abi.RegisteredPoStProof, p2 []storage.SectorRef, p3 []bool, p4 bool) (map[abi.SectorNumber]string, error) { if s.Internal.CheckProvable == nil { return *new(map[abi.SectorNumber]string), ErrNotSupported } - return s.Internal.CheckProvable(p0, p1, p2, p3) + return s.Internal.CheckProvable(p0, p1, p2, p3, p4) } -func (s *StorageMinerStub) CheckProvable(p0 context.Context, p1 abi.RegisteredPoStProof, p2 []storage.SectorRef, p3 bool) (map[abi.SectorNumber]string, error) { +func (s *StorageMinerStub) CheckProvable(p0 context.Context, p1 abi.RegisteredPoStProof, p2 []storage.SectorRef, p3 []bool, p4 bool) (map[abi.SectorNumber]string, error) { return *new(map[abi.SectorNumber]string), ErrNotSupported } diff --git a/api/version.go b/api/version.go index 228dcbd10..9f4f73513 100644 --- a/api/version.go +++ b/api/version.go @@ -57,7 +57,7 @@ var ( FullAPIVersion0 = newVer(1, 5, 0) FullAPIVersion1 = newVer(2, 2, 0) - MinerAPIVersion0 = newVer(1, 3, 0) + MinerAPIVersion0 = newVer(1, 4, 0) WorkerAPIVersion0 = newVer(1, 5, 0) ) diff --git a/build/openrpc/miner.json.gz b/build/openrpc/miner.json.gz index 4021b573d7df9e690f217a8548ac9c93933b2922..303444e99218463d0aa09b57899655163218db9a 100644 GIT binary patch delta 12156 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≀gT7 zurlaP29wcIZ!(Ip61}`FRtCxMG8}(TCjG&1(u;qZ$mMOZGJG!C96h^i9_^28j`v44 zC;K9sPn`fvy(vexSujmq+AWx>Hot8!RplcWOrMdJB$z%UE6ssvN!e@~Ov}sWcEGgK zS4e{CGqREd(`REP4W_*sV46bn-Fl`qnlBHgqpm*c_Kx}zlUsw2ur*zRru~0juiNVl z2S+_UgBe{{V&_24&nU%Dq!Ne(Qb&V9Z!pv+gMpru4!x^S2BYDqVSYyAqwZvIG&<^! zs^e;XF|CEGjfkl#uI@rilfe4iVwyzP=M~ck#Lf^EXCo)^wW|-t!=q6G{Jm=pBEK$y z*j=`r2G`xSopw!k*LK<$-Ccj%Ns!!S+ew_?kXR!E!1)e1t|z}&nsAx(Lr&nl!zfPGFOjUlXk zj~ukJumRWnNa=P>XU}+Q93+r15{XDW==?V1M|~Ynx)auPLT6=e0%DeUaK0QCmc95%q^e)HQLv z>i#X1KKI&dn-$Pz1rz{jn-#E6SpiQBN#7GVwZd)S-d@&E*lWc52_N~-kE^xVxvF=x z6aF_()ygljQ0BNmkEY7z`+#xj*)2Y!-_tMp8-W|E`H;L-@HHcs2^CWO95IcR2x3Ir6^k^+6u$gB y91)aWE7Mn%!X4GF#PO$u3~~6{W$E61t(DQ6XirbKPyasv0RR6yEy?v4c>(~l^V~52 delta 12122 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