From 65f89ff128cb316b9e09735ed6536537c6f91849 Mon Sep 17 00:00:00 2001 From: Aayush Rajasekaran Date: Mon, 24 Oct 2022 13:47:47 -0400 Subject: [PATCH] Invariant checks: Only include not-activated deals --- cmd/lotus-shed/migrations.go | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/cmd/lotus-shed/migrations.go b/cmd/lotus-shed/migrations.go index c6e9f9241..fd62da589 100644 --- a/cmd/lotus-shed/migrations.go +++ b/cmd/lotus-shed/migrations.go @@ -343,6 +343,12 @@ func checkPendingVerifiedDeals(stateTreeV8 *state.StateTree, stateTreeV9 *state. return xerrors.Errorf("failed to get proposals: %w", err) } + // We only want those pending deals that haven't been activated -- an activated deal has an entry in dealStates8 + dealStates8, err := adt9.AsArray(actorStore, marketStateV8.States, market8.StatesAmtBitwidth) + if err != nil { + return xerrors.Errorf("failed to load v8 states array: %w", err) + } + var numPendingVerifiedDeals = 0 var proposal market8.DealProposal err = dealProposalsV8.ForEach(&proposal, func(dealID int64) error { @@ -366,6 +372,17 @@ func checkPendingVerifiedDeals(stateTreeV8 *state.StateTree, stateTreeV9 *state. return nil } + var _dealState8 market8.DealState + found, err := dealStates8.Get(uint64(dealID), &_dealState8) + if err != nil { + return xerrors.Errorf("failed to lookup deal state: %w", err) + } + + // the deal has an entry in deal states, which means it's already been allocated, nothing to do + if found { + return nil + } + numPendingVerifiedDeals++ // Checks if allocation ID is in market map allocationId, err := marketActorV9.GetAllocationIdForPendingDeal(abi.DealID(dealID))