Skip to content

Commit

Permalink
v13: Don't reuse variables in migration wrongly
Browse files Browse the repository at this point in the history
  • Loading branch information
magik6k committed Feb 7, 2024
1 parent 791c685 commit 54df042
Showing 1 changed file with 9 additions and 5 deletions.
14 changes: 9 additions & 5 deletions builtin/v13/migration/market.go
Original file line number Diff line number Diff line change
Expand Up @@ -205,17 +205,17 @@ func (m *marketMigrator) migrateProviderSectorsAndStatesWithDiff(ctx context.Con
//fmt.Printf("dealToSector: %d\n", len(m.providerSectors.dealToSector))
//fmt.Printf("removedDealToSector: %d\n", len(m.providerSectors.removedDealToSector))

var oldState, prevOldState market12.DealState
var newState market13.DealState
for _, change := range diffs {
deal := abi.DealID(change.Key)

switch change.Type {
case amt.Add:
var oldState market12.DealState
if err := oldState.UnmarshalCBOR(bytes.NewReader(change.After.Raw)); err != nil {
return cid.Cid{}, cid.Cid{}, xerrors.Errorf("failed to unmarshal old state: %w", err)
}

var newState market13.DealState
newState.SlashEpoch = oldState.SlashEpoch
newState.LastUpdatedEpoch = oldState.LastUpdatedEpoch
newState.SectorStartEpoch = oldState.SectorStartEpoch
Expand All @@ -238,16 +238,19 @@ func (m *marketMigrator) migrateProviderSectorsAndStatesWithDiff(ctx context.Con
case amt.Remove:
fmt.Printf("remove deal %d\n", deal)

ok, err := prevOutStates.Get(uint64(deal), &newState)
var prevOutState market13.DealState // note: this says "prevOut", not "prevOld"
ok, err := prevOutStates.Get(uint64(deal), &prevOutState)
if err != nil {
return cid.Undef, cid.Undef, xerrors.Errorf("failed to get previous newstate: %w", err)
}
if !ok {
return cid.Undef, cid.Undef, xerrors.Errorf("failed to get previous newstate: not found")
}

if newState.SlashEpoch != -1 && prevOldState.SlashEpoch == -1 {
if err := removeProviderSectorEntry(deal, &newState); err != nil {
if prevOutState.SlashEpoch != -1 {
// if the previous OUT state was not slashed then it has a provider sector entry that needs to be removed

if err := removeProviderSectorEntry(deal, &prevOutState); err != nil {
return cid.Undef, cid.Undef, xerrors.Errorf("failed to remove provider sector entry: %w", err)
}
}
Expand All @@ -258,6 +261,7 @@ func (m *marketMigrator) migrateProviderSectorsAndStatesWithDiff(ctx context.Con

case amt.Modify:

var oldState, prevOldState market12.DealState
if err := prevOldState.UnmarshalCBOR(bytes.NewReader(change.Before.Raw)); err != nil {
return cid.Undef, cid.Undef, xerrors.Errorf("failed to unmarshal old state: %w", err)
}
Expand Down

0 comments on commit 54df042

Please sign in to comment.