Merge pull request #2107 from chunqizhi/zc
An incorrect sector was detected, but also run windowPoSt
This commit is contained in:
commit
f1e686f706
@ -26,6 +26,75 @@ var provingCmd = &cli.Command{
|
|||||||
Subcommands: []*cli.Command{
|
Subcommands: []*cli.Command{
|
||||||
provingInfoCmd,
|
provingInfoCmd,
|
||||||
provingDeadlinesCmd,
|
provingDeadlinesCmd,
|
||||||
|
provingFaultsCmd,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
var provingFaultsCmd = &cli.Command{
|
||||||
|
Name: "faults",
|
||||||
|
Usage: "View the currently known proving faulty sectors information",
|
||||||
|
Action: func(cctx *cli.Context) error {
|
||||||
|
nodeApi, closer, err := lcli.GetStorageMinerAPI(cctx)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer closer()
|
||||||
|
|
||||||
|
api, acloser, err := lcli.GetFullNodeAPI(cctx)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer acloser()
|
||||||
|
|
||||||
|
ctx := lcli.ReqContext(cctx)
|
||||||
|
|
||||||
|
maddr, err := nodeApi.ActorAddress(ctx)
|
||||||
|
if err != nil {
|
||||||
|
return xerrors.Errorf("getting actor address: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
var mas miner.State
|
||||||
|
{
|
||||||
|
mact, err := api.StateGetActor(ctx, maddr, types.EmptyTSK)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
rmas, err := api.ChainReadObj(ctx, mact.Head)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if err := mas.UnmarshalCBOR(bytes.NewReader(rmas)); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
faults, err := mas.Faults.All(100000000000)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if len(faults) == 0 {
|
||||||
|
fmt.Println("no faulty sectors")
|
||||||
|
}
|
||||||
|
head, err := api.ChainHead(ctx)
|
||||||
|
if err != nil {
|
||||||
|
return xerrors.Errorf("getting chain head: %w", err)
|
||||||
|
}
|
||||||
|
deadlines, err := api.StateMinerDeadlines(ctx, maddr, head.Key())
|
||||||
|
if err != nil {
|
||||||
|
return xerrors.Errorf("getting miner deadlines: %w", err)
|
||||||
|
}
|
||||||
|
tw := tabwriter.NewWriter(os.Stdout, 2, 4, 2, ' ', 0)
|
||||||
|
_, _ = fmt.Fprintln(tw, "deadline\tsectors")
|
||||||
|
for deadline, sectors := range deadlines.Due {
|
||||||
|
intersectSectors, _ := bitfield.IntersectBitField(sectors, mas.Faults)
|
||||||
|
if intersectSectors != nil {
|
||||||
|
allSectors, _ := intersectSectors.All(100000000000)
|
||||||
|
for _, num := range allSectors {
|
||||||
|
_, _ = fmt.Fprintf(tw, "%d\t%d\n", deadline, num)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
return tw.Flush()
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -383,17 +383,14 @@ func (s *WindowPoStScheduler) runPost(ctx context.Context, di miner.DeadlineInfo
|
|||||||
return nil, xerrors.Errorf("get need prove sectors: %w", err)
|
return nil, xerrors.Errorf("get need prove sectors: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
var skipped *abi.BitField
|
good, err := s.checkSectors(ctx, nps)
|
||||||
{
|
if err != nil {
|
||||||
good, err := s.checkSectors(ctx, nps)
|
return nil, xerrors.Errorf("checking sectors to skip: %w", err)
|
||||||
if err != nil {
|
}
|
||||||
return nil, xerrors.Errorf("checking sectors to skip: %w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
skipped, err = bitfield.SubtractBitField(nps, good)
|
skipped, err := bitfield.SubtractBitField(nps, good)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, xerrors.Errorf("nps - good: %w", err)
|
return nil, xerrors.Errorf("nps - good: %w", err)
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
skipCount, err := skipped.Count()
|
skipCount, err := skipped.Count()
|
||||||
@ -401,7 +398,7 @@ func (s *WindowPoStScheduler) runPost(ctx context.Context, di miner.DeadlineInfo
|
|||||||
return nil, xerrors.Errorf("getting skipped sector count: %w", err)
|
return nil, xerrors.Errorf("getting skipped sector count: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
ssi, err := s.sortedSectorInfo(ctx, nps, ts)
|
ssi, err := s.sortedSectorInfo(ctx, good, ts)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, xerrors.Errorf("getting sorted sector info: %w", err)
|
return nil, xerrors.Errorf("getting sorted sector info: %w", err)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user