Skip to content

Commit

Permalink
fix: itest: fix wdpost proving epoch calculation
Browse files Browse the repository at this point in the history
Fixes: #12091
  • Loading branch information
rvagg committed Jun 19, 2024
1 parent 6f821c3 commit 8b432d3
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 10 deletions.
5 changes: 4 additions & 1 deletion itests/kit/blockminer.go
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,7 @@ func newPartitionTracker(ctx context.Context, t *testing.T, client v1api.FullNod

parts, err := client.StateMinerPartitions(ctx, minerAddr, dlIdx, types.EmptyTSK)
require.NoError(t, err)

return &partitionTracker{
minerAddr: minerAddr,
partitions: parts,
Expand Down Expand Up @@ -245,7 +246,9 @@ func (bm *BlockMiner) MineBlocksMustPost(ctx context.Context, blocktime time.Dur
dlinfo, err := bm.miner.FullNode.StateMinerProvingDeadline(ctx, minerAddr, ts.Key())
require.NoError(bm.t, err)
require.NotNil(bm.t, dlinfo, "no deadline info for miner %s", minerAddr)
impendingDeadlines = append(impendingDeadlines, minerDeadline{addr: minerAddr, deadline: *dlinfo})
if dlinfo.Open < dlinfo.CurrentEpoch {
impendingDeadlines = append(impendingDeadlines, minerDeadline{addr: minerAddr, deadline: *dlinfo})
} // else this is probably a new miner, not starting in this proving period
}
bm.postWatchMinersLk.Unlock()
impendingDeadlines = impendingDeadlines.FilterByLast(ts.Height() + 5 + abi.ChainEpoch(nulls))
Expand Down
27 changes: 18 additions & 9 deletions itests/kit/node_unmanaged.go
Original file line number Diff line number Diff line change
Expand Up @@ -296,6 +296,9 @@ func (tm *TestUnmanagedMiner) OnboardSectorWithPieces(ctx context.Context, proof

tm.proofType[sectorNumber] = proofType

// wait one challenge window for cron to do its thing with deadlines, just to be sure
_ = tm.FullNode.WaitTillChain(ctx, HeightAtLeast(r.Height+miner14.WPoStChallengeWindow+5))

respCh := make(chan WindowPostResp, 1)

wdCtx, cancelF := context.WithCancel(ctx)
Expand Down Expand Up @@ -500,6 +503,9 @@ func (tm *TestUnmanagedMiner) OnboardCCSector(ctx context.Context, proofType abi

tm.proofType[sectorNumber] = proofType

// wait one challenge window for cron to do its thing with deadlines, just to be sure
_ = tm.FullNode.WaitTillChain(ctx, HeightAtLeast(r.Height+miner14.WPoStChallengeWindow+5))

respCh := make(chan WindowPostResp, 1)

wdCtx, cancelF := context.WithCancel(ctx)
Expand Down Expand Up @@ -551,6 +557,9 @@ func (tm *TestUnmanagedMiner) wdPostLoop(ctx context.Context, sectorNumber abi.S

err = tm.submitWindowPost(ctx, sectorNumber, sealedCid, sealedPath, cacheDir)
writeRespF(err) // send an error, or first post, or nothing if no error and this isn't the first post
if err != nil {
return
}
postCount++
tm.t.Logf("Sector %d: WindowPoSt #%d submitted", sectorNumber, postCount)
}
Expand Down Expand Up @@ -772,14 +781,6 @@ func (tm *TestUnmanagedMiner) calculateNextPostEpoch(
return 0, 0, fmt.Errorf("failed to get chain head: %w", err)
}

// Fetch the sector partition for the given sector number
sp, err := tm.FullNode.StateSectorPartition(ctx, tm.ActorAddr, sectorNumber, head.Key())
if err != nil {
return 0, 0, fmt.Errorf("failed to get sector partition: %w", err)
}

tm.t.Logf("Miner %s: WindowPoST(%d): SectorPartition: %+v", tm.ActorAddr, sectorNumber, sp)

// Obtain the proving deadline information for the miner
di, err := tm.FullNode.StateMinerProvingDeadline(ctx, tm.ActorAddr, head.Key())
if err != nil {
Expand All @@ -788,6 +789,14 @@ func (tm *TestUnmanagedMiner) calculateNextPostEpoch(

tm.t.Logf("Miner %s: WindowPoST(%d): ProvingDeadline: %+v", tm.ActorAddr, sectorNumber, di)

// Fetch the sector partition for the given sector number
sp, err := tm.FullNode.StateSectorPartition(ctx, tm.ActorAddr, sectorNumber, head.Key())
if err != nil {
return 0, 0, fmt.Errorf("failed to get sector partition: %w", err)
}

tm.t.Logf("Miner %s: WindowPoST(%d): SectorPartition: %+v", tm.ActorAddr, sectorNumber, sp)

// Calculate the start of the period, adjusting if the current deadline has passed
periodStart := di.PeriodStart
if di.PeriodStart < di.CurrentEpoch && sp.Deadline <= di.Index {
Expand All @@ -796,7 +805,7 @@ func (tm *TestUnmanagedMiner) calculateNextPostEpoch(
}

// Calculate the exact epoch when proving should occur
provingEpoch := periodStart + (di.WPoStProvingPeriod/abi.ChainEpoch(di.WPoStPeriodDeadlines))*abi.ChainEpoch(sp.Deadline)
provingEpoch := periodStart + di.WPoStChallengeWindow*abi.ChainEpoch(sp.Deadline)

tm.t.Logf("Miner %s: WindowPoST(%d): next ProvingEpoch: %d", tm.ActorAddr, sectorNumber, provingEpoch)

Expand Down

0 comments on commit 8b432d3

Please sign in to comment.