Skip to content

Commit 244215b

Browse files
authored
fix: add Transform implementation for PreCommitInfoExtractorV8 (#1242)
* fix: add Transform implementation for PreCommitInfoExtractorV8 * fix: skip diff if same root * fix: check earlier * chore: skip when cids are also same in miner * check root of maps
1 parent 03c0d1f commit 244215b

File tree

13 files changed

+112
-34
lines changed

13 files changed

+112
-34
lines changed

chain/actors/adt/diff/generic.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ type ArrayDiffer interface {
3333
func CompareArray(preArr, curArr adt.Array, out ArrayDiffer) error {
3434
notNew := make(map[int64]struct{}, curArr.Length())
3535
prevVal := new(typegen.Deferred)
36+
3637
if err := preArr.ForEach(prevVal, func(i int64) error {
3738
curVal := new(typegen.Deferred)
3839
found, err := curArr.Get(uint64(i), curVal)

chain/actors/builtin/init/diff.go

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,21 @@ func DiffAddressMap(ctx context.Context, store adt.Store, pre, cur State) (*Addr
3636
}
3737

3838
mapDiffer := NewAddressMapDiffer(pre, cur)
39+
40+
premR, err := prem.Root()
41+
if err != nil {
42+
return nil, err
43+
}
44+
45+
curmR, err := curm.Root()
46+
if err != nil {
47+
return nil, err
48+
}
49+
50+
if premR.Equals(curmR) {
51+
return mapDiffer.Results, nil
52+
}
53+
3954
if requiresLegacyDiffing(pre, cur,
4055
&adt.MapOpts{
4156
Bitwidth: pre.AddressMapBitWidth(),
@@ -45,7 +60,7 @@ func DiffAddressMap(ctx context.Context, store adt.Store, pre, cur State) (*Addr
4560
Bitwidth: cur.AddressMapBitWidth(),
4661
HashFunc: cur.AddressMapHashFunction(),
4762
}) {
48-
log.Warnw("actor HAMT opts differ, running slower generic map diff", "preCID", pre.Code(), "curCID", cur.Code())
63+
log.Warnw("actor HAMT opts differ, running slower generic map diff ", "preCID ", pre.Code(), "curCID ", cur.Code())
4964
if err := diff.CompareMap(prem, curm, mapDiffer); err != nil {
5065
return nil, err
5166
}

chain/actors/builtin/market/diff.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ func DiffDealProposals(ctx context.Context, store adt.Store, pre, cur State) (*D
2323
preOpts := pre.DealProposalsAmtBitwidth()
2424
curOpts := cur.DealProposalsAmtBitwidth()
2525
preP, err := pre.Proposals()
26+
2627
if err != nil {
2728
return nil, err
2829
}
@@ -33,7 +34,7 @@ func DiffDealProposals(ctx context.Context, store adt.Store, pre, cur State) (*D
3334

3435
diffContainer := NewMarketProposalsDiffContainer(preP, curP)
3536
if requiresLegacyDiffing(pre, cur, preOpts, curOpts) {
36-
log.Warn("actor AMT opts differ, running slower generic array diff", "preCID", pre.Code(), "curCID", cur.Code())
37+
log.Warn("actor AMT opts differ, running slower generic array diff ", "preCID ", pre.Code(), "curCID ", cur.Code())
3738
if err := diff.CompareArray(preP.array(), curP.array(), diffContainer); err != nil {
3839
return nil, fmt.Errorf("diffing deal states: %w", err)
3940
}
@@ -115,7 +116,7 @@ func DiffDealStates(ctx context.Context, store adt.Store, pre, cur State) (*Deal
115116

116117
diffContainer := NewMarketStatesDiffContainer(preS, curS)
117118
if requiresLegacyDiffing(pre, cur, preOpts, curOpts) {
118-
log.Warn("actor AMT opts differ, running slower generic array diff", "preCID", pre.Code(), "curCID", cur.Code())
119+
log.Warn("actor AMT opts differ, running slower generic array diff ", "preCID ", pre.Code(), "curCID ", cur.Code())
119120
if err := diff.CompareArray(preS.array(), curS.array(), diffContainer); err != nil {
120121
return nil, fmt.Errorf("diffing deal states: %w", err)
121122
}

chain/actors/builtin/miner/diff.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,20 @@ func DiffSectors(ctx context.Context, store adt.Store, pre, cur State) (*SectorC
153153
preBw := pre.SectorsAmtBitwidth()
154154
curBw := cur.SectorsAmtBitwidth()
155155
diffContainer := NewSectorDiffContainer(pre, cur)
156+
157+
presR, err := pres.Root()
158+
if err != nil {
159+
return nil, err
160+
}
161+
cursR, err := curs.Root()
162+
if err != nil {
163+
return nil, err
164+
}
165+
166+
if presR.Equals(cursR) {
167+
return diffContainer.Results, nil
168+
}
169+
156170
if ArrayRequiresLegacyDiffing(pre, cur, preBw, curBw) {
157171
if span.IsRecording() {
158172
span.SetAttributes(attribute.String("diff", "slow"))

chain/actors/builtin/miner/diff_v8.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,21 @@ func DiffPreCommitsV8(ctx context.Context, store adt.Store, pre, cur State) (*Pr
2828
return nil, err
2929
}
3030

31+
prepR, err := prep.Root()
32+
if err != nil {
33+
return nil, err
34+
}
35+
36+
curpR, err := curp.Root()
37+
if err != nil {
38+
return nil, err
39+
}
40+
3141
diffContainer := NewPreCommitDiffContainerV8(pre, cur)
42+
if prepR.Equals(curpR) {
43+
return diffContainer.Results, nil
44+
}
45+
3246
if MapRequiresLegacyDiffing(pre, cur,
3347
&adt.MapOpts{
3448
Bitwidth: pre.SectorsAmtBitwidth(),

chain/indexer/integrated/processor/state.go

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -449,19 +449,28 @@ func MakeProcessors(api tasks.DataSource, indexerTasks []string) (*IndexerProces
449449
),
450450
minertask.LockedFundsExtractor{},
451451
)
452+
case tasktype.MinerPreCommitInfoV1_8:
453+
out.ActorProcessors[t] = actorstate.NewTaskWithTransformer(
454+
api,
455+
actorstate.NewCustomTypedActorExtractorMap(
456+
map[cid.Cid][]actorstate.ActorStateExtractor{
457+
mineractors.VersionCodes()[actorstypes.Version0]: {minertask.PreCommitInfoExtractorV8{}},
458+
mineractors.VersionCodes()[actorstypes.Version2]: {minertask.PreCommitInfoExtractorV8{}},
459+
mineractors.VersionCodes()[actorstypes.Version3]: {minertask.PreCommitInfoExtractorV8{}},
460+
mineractors.VersionCodes()[actorstypes.Version4]: {minertask.PreCommitInfoExtractorV8{}},
461+
mineractors.VersionCodes()[actorstypes.Version5]: {minertask.PreCommitInfoExtractorV8{}},
462+
mineractors.VersionCodes()[actorstypes.Version6]: {minertask.PreCommitInfoExtractorV8{}},
463+
mineractors.VersionCodes()[actorstypes.Version7]: {minertask.PreCommitInfoExtractorV8{}},
464+
mineractors.VersionCodes()[actorstypes.Version8]: {minertask.PreCommitInfoExtractorV8{}},
465+
},
466+
),
467+
minertask.PreCommitInfoExtractorV8{},
468+
)
452469
case tasktype.MinerPreCommitInfo:
453470
out.ActorProcessors[t] = actorstate.NewTaskWithTransformer(
454471
api,
455472
actorstate.NewCustomTypedActorExtractorMap(
456473
map[cid.Cid][]actorstate.ActorStateExtractor{
457-
mineractors.VersionCodes()[actorstypes.Version0]: {minertask.PreCommitInfoExtractorV8{}},
458-
mineractors.VersionCodes()[actorstypes.Version2]: {minertask.PreCommitInfoExtractorV8{}},
459-
mineractors.VersionCodes()[actorstypes.Version3]: {minertask.PreCommitInfoExtractorV8{}},
460-
mineractors.VersionCodes()[actorstypes.Version4]: {minertask.PreCommitInfoExtractorV8{}},
461-
mineractors.VersionCodes()[actorstypes.Version5]: {minertask.PreCommitInfoExtractorV8{}},
462-
mineractors.VersionCodes()[actorstypes.Version6]: {minertask.PreCommitInfoExtractorV8{}},
463-
mineractors.VersionCodes()[actorstypes.Version7]: {minertask.PreCommitInfoExtractorV8{}},
464-
mineractors.VersionCodes()[actorstypes.Version8]: {minertask.PreCommitInfoExtractorV8{}},
465474
mineractors.VersionCodes()[actorstypes.Version9]: {minertask.PreCommitInfoExtractorV9{}},
466475
mineractors.VersionCodes()[actorstypes.Version10]: {minertask.PreCommitInfoExtractorV9{}},
467476
mineractors.VersionCodes()[actorstypes.Version11]: {minertask.PreCommitInfoExtractorV9{}},

chain/indexer/integrated/processor/state_internal_test.go

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ func TestNewProcessor(t *testing.T) {
5252
proc, err := New(nil, t.Name(), tasktype.AllTableTasks)
5353
require.NoError(t, err)
5454
require.Equal(t, t.Name(), proc.name)
55-
require.Len(t, proc.actorProcessors, 24)
55+
require.Len(t, proc.actorProcessors, 25)
5656
require.Len(t, proc.tipsetProcessors, 10)
5757
require.Len(t, proc.tipsetsProcessors, 14)
5858
require.Len(t, proc.builtinProcessors, 1)
@@ -122,14 +122,6 @@ func TestNewProcessor(t *testing.T) {
122122
nil,
123123
actorstate.NewCustomTypedActorExtractorMap(
124124
map[cid.Cid][]actorstate.ActorStateExtractor{
125-
miner.VersionCodes()[actorstypes.Version0]: {minertask.PreCommitInfoExtractorV8{}},
126-
miner.VersionCodes()[actorstypes.Version2]: {minertask.PreCommitInfoExtractorV8{}},
127-
miner.VersionCodes()[actorstypes.Version3]: {minertask.PreCommitInfoExtractorV8{}},
128-
miner.VersionCodes()[actorstypes.Version4]: {minertask.PreCommitInfoExtractorV8{}},
129-
miner.VersionCodes()[actorstypes.Version5]: {minertask.PreCommitInfoExtractorV8{}},
130-
miner.VersionCodes()[actorstypes.Version6]: {minertask.PreCommitInfoExtractorV8{}},
131-
miner.VersionCodes()[actorstypes.Version7]: {minertask.PreCommitInfoExtractorV8{}},
132-
miner.VersionCodes()[actorstypes.Version8]: {minertask.PreCommitInfoExtractorV8{}},
133125
miner.VersionCodes()[actorstypes.Version9]: {minertask.PreCommitInfoExtractorV9{}},
134126
miner.VersionCodes()[actorstypes.Version10]: {minertask.PreCommitInfoExtractorV9{}},
135127
miner.VersionCodes()[actorstypes.Version11]: {minertask.PreCommitInfoExtractorV9{}},

chain/indexer/integrated/processor/state_test.go

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -116,18 +116,26 @@ func TestMakeProcessorsActors(t *testing.T) {
116116
),
117117
transformer: minertask.V7SectorInfoExtractor{},
118118
},
119+
{
120+
taskName: tasktype.MinerPreCommitInfoV1_8,
121+
extractor: actorstate.NewCustomTypedActorExtractorMap(
122+
map[cid.Cid][]actorstate.ActorStateExtractor{
123+
miner.VersionCodes()[actorstypes.Version0]: {minertask.PreCommitInfoExtractorV8{}},
124+
miner.VersionCodes()[actorstypes.Version2]: {minertask.PreCommitInfoExtractorV8{}},
125+
miner.VersionCodes()[actorstypes.Version3]: {minertask.PreCommitInfoExtractorV8{}},
126+
miner.VersionCodes()[actorstypes.Version4]: {minertask.PreCommitInfoExtractorV8{}},
127+
miner.VersionCodes()[actorstypes.Version5]: {minertask.PreCommitInfoExtractorV8{}},
128+
miner.VersionCodes()[actorstypes.Version6]: {minertask.PreCommitInfoExtractorV8{}},
129+
miner.VersionCodes()[actorstypes.Version7]: {minertask.PreCommitInfoExtractorV8{}},
130+
miner.VersionCodes()[actorstypes.Version8]: {minertask.PreCommitInfoExtractorV8{}},
131+
},
132+
),
133+
transformer: minertask.PreCommitInfoExtractorV8{},
134+
},
119135
{
120136
taskName: tasktype.MinerPreCommitInfo,
121137
extractor: actorstate.NewCustomTypedActorExtractorMap(
122138
map[cid.Cid][]actorstate.ActorStateExtractor{
123-
miner.VersionCodes()[actorstypes.Version0]: {minertask.PreCommitInfoExtractorV8{}},
124-
miner.VersionCodes()[actorstypes.Version2]: {minertask.PreCommitInfoExtractorV8{}},
125-
miner.VersionCodes()[actorstypes.Version3]: {minertask.PreCommitInfoExtractorV8{}},
126-
miner.VersionCodes()[actorstypes.Version4]: {minertask.PreCommitInfoExtractorV8{}},
127-
miner.VersionCodes()[actorstypes.Version5]: {minertask.PreCommitInfoExtractorV8{}},
128-
miner.VersionCodes()[actorstypes.Version6]: {minertask.PreCommitInfoExtractorV8{}},
129-
miner.VersionCodes()[actorstypes.Version7]: {minertask.PreCommitInfoExtractorV8{}},
130-
miner.VersionCodes()[actorstypes.Version8]: {minertask.PreCommitInfoExtractorV8{}},
131139
miner.VersionCodes()[actorstypes.Version9]: {minertask.PreCommitInfoExtractorV9{}},
132140
miner.VersionCodes()[actorstypes.Version10]: {minertask.PreCommitInfoExtractorV9{}},
133141
miner.VersionCodes()[actorstypes.Version11]: {minertask.PreCommitInfoExtractorV9{}},
@@ -425,7 +433,7 @@ func TestMakeProcessorsAllTasks(t *testing.T) {
425433
// If this test fails it indicates a new processor and/or task name was added and test should be created for it in one of the above test cases.
426434
proc, err := processor.MakeProcessors(nil, append(tasktype.AllTableTasks, processor.BuiltinTaskName))
427435
require.NoError(t, err)
428-
require.Len(t, proc.ActorProcessors, 24)
436+
require.Len(t, proc.ActorProcessors, 25)
429437
require.Len(t, proc.TipsetProcessors, 10)
430438
require.Len(t, proc.TipsetsProcessors, 14)
431439
require.Len(t, proc.ReportProcessors, 1)

chain/indexer/tasktype/table_tasks.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ const (
1212
MinerSectorInfoV1_6 = "miner_sector_infos"
1313
MinerSectorPost = "miner_sector_post"
1414
MinerPreCommitInfo = "miner_pre_commit_info"
15+
MinerPreCommitInfoV1_8 = "miner_pre_commit_info_v8"
1516
MinerSectorEvent = "miner_sector_event"
1617
MinerCurrentDeadlineInfo = "miner_current_deadline_info"
1718
MinerFeeDebt = "miner_fee_debt"
@@ -63,6 +64,7 @@ var AllTableTasks = []string{
6364
MinerSectorInfoV1_6,
6465
MinerSectorPost,
6566
MinerPreCommitInfo,
67+
MinerPreCommitInfoV1_8,
6668
MinerSectorEvent,
6769
MinerCurrentDeadlineInfo,
6870
MinerFeeDebt,
@@ -114,6 +116,7 @@ var TableLookup = map[string]struct{}{
114116
MinerSectorInfoV1_6: {},
115117
MinerSectorPost: {},
116118
MinerPreCommitInfo: {},
119+
MinerPreCommitInfoV1_8: {},
117120
MinerSectorEvent: {},
118121
MinerCurrentDeadlineInfo: {},
119122
MinerFeeDebt: {},
@@ -165,6 +168,7 @@ var TableComment = map[string]string{
165168
MinerSectorInfoV1_6: `MinerSectorInfoV1_6 is exported from the miner actor iff the actor code is less than v7. The table keeps its original name since that's a requirement to support lily backfills`,
166169
MinerSectorPost: ``,
167170
MinerPreCommitInfo: ``,
171+
MinerPreCommitInfoV1_8: `MinerPreCommitInfo using actors v1 to v8.`,
168172
MinerSectorEvent: ``,
169173
MinerCurrentDeadlineInfo: ``,
170174
MinerFeeDebt: ``,
@@ -221,6 +225,7 @@ var TableFieldComments = map[string]map[string]string{
221225
MinerSectorInfoV1_6: {},
222226
MinerSectorPost: {},
223227
MinerPreCommitInfo: {},
228+
MinerPreCommitInfoV1_8: {},
224229
MinerSectorEvent: {},
225230
MinerCurrentDeadlineInfo: {},
226231
MinerFeeDebt: {},

chain/indexer/tasktype/tasks.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ var TaskLookup = map[string][]string{
3838
MinerSectorInfoV1_6,
3939
MinerSectorPost,
4040
MinerPreCommitInfo,
41+
MinerPreCommitInfoV1_8,
4142
MinerSectorEvent,
4243
MinerCurrentDeadlineInfo,
4344
MinerFeeDebt,

0 commit comments

Comments
 (0)