Skip to content

Commit 341cd36

Browse files
authored
fix: batch insert miner_pre_commit_info (#1220)
1 parent dab658d commit 341cd36

File tree

4 files changed

+71
-48
lines changed

4 files changed

+71
-48
lines changed

chain/indexer/integrated/processor/state.go

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -449,21 +449,25 @@ func MakeProcessors(api tasks.DataSource, indexerTasks []string) (*IndexerProces
449449
minertask.LockedFundsExtractor{},
450450
)
451451
case tasktype.MinerPreCommitInfo:
452-
out.ActorProcessors[t] = actorstate.NewTask(api, actorstate.NewCustomTypedActorExtractorMap(
453-
map[cid.Cid][]actorstate.ActorStateExtractor{
454-
mineractors.VersionCodes()[actorstypes.Version0]: {minertask.PreCommitInfoExtractorV8{}},
455-
mineractors.VersionCodes()[actorstypes.Version2]: {minertask.PreCommitInfoExtractorV8{}},
456-
mineractors.VersionCodes()[actorstypes.Version3]: {minertask.PreCommitInfoExtractorV8{}},
457-
mineractors.VersionCodes()[actorstypes.Version4]: {minertask.PreCommitInfoExtractorV8{}},
458-
mineractors.VersionCodes()[actorstypes.Version5]: {minertask.PreCommitInfoExtractorV8{}},
459-
mineractors.VersionCodes()[actorstypes.Version6]: {minertask.PreCommitInfoExtractorV8{}},
460-
mineractors.VersionCodes()[actorstypes.Version7]: {minertask.PreCommitInfoExtractorV8{}},
461-
mineractors.VersionCodes()[actorstypes.Version8]: {minertask.PreCommitInfoExtractorV8{}},
462-
mineractors.VersionCodes()[actorstypes.Version9]: {minertask.PreCommitInfoExtractorV9{}},
463-
mineractors.VersionCodes()[actorstypes.Version10]: {minertask.PreCommitInfoExtractorV9{}},
464-
mineractors.VersionCodes()[actorstypes.Version11]: {minertask.PreCommitInfoExtractorV9{}},
465-
},
466-
))
452+
out.ActorProcessors[t] = actorstate.NewTaskWithTransformer(
453+
api,
454+
actorstate.NewCustomTypedActorExtractorMap(
455+
map[cid.Cid][]actorstate.ActorStateExtractor{
456+
mineractors.VersionCodes()[actorstypes.Version0]: {minertask.PreCommitInfoExtractorV8{}},
457+
mineractors.VersionCodes()[actorstypes.Version2]: {minertask.PreCommitInfoExtractorV8{}},
458+
mineractors.VersionCodes()[actorstypes.Version3]: {minertask.PreCommitInfoExtractorV8{}},
459+
mineractors.VersionCodes()[actorstypes.Version4]: {minertask.PreCommitInfoExtractorV8{}},
460+
mineractors.VersionCodes()[actorstypes.Version5]: {minertask.PreCommitInfoExtractorV8{}},
461+
mineractors.VersionCodes()[actorstypes.Version6]: {minertask.PreCommitInfoExtractorV8{}},
462+
mineractors.VersionCodes()[actorstypes.Version7]: {minertask.PreCommitInfoExtractorV8{}},
463+
mineractors.VersionCodes()[actorstypes.Version8]: {minertask.PreCommitInfoExtractorV8{}},
464+
mineractors.VersionCodes()[actorstypes.Version9]: {minertask.PreCommitInfoExtractorV9{}},
465+
mineractors.VersionCodes()[actorstypes.Version10]: {minertask.PreCommitInfoExtractorV9{}},
466+
mineractors.VersionCodes()[actorstypes.Version11]: {minertask.PreCommitInfoExtractorV9{}},
467+
},
468+
),
469+
minertask.PreCommitInfoExtractorV9{},
470+
)
467471
case tasktype.MinerSectorDeal:
468472
out.ActorProcessors[t] = actorstate.NewTask(api, actorstate.NewTypedActorExtractorMap(
469473
mineractors.AllCodes(), minertask.SectorDealsExtractor{},

chain/indexer/integrated/processor/state_internal_test.go

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -118,21 +118,25 @@ func TestNewProcessor(t *testing.T) {
118118
require.Equal(t, actorstate.NewTask(nil, actorstate.NewTypedActorExtractorMap(multisig.AllCodes(), multisigtask.MultiSigActorExtractor{})), proc.actorProcessors[tasktype.MultisigTransaction])
119119
require.Equal(t, actorstate.NewTask(nil, actorstate.NewTypedActorExtractorMap(verifreg.AllCodes(), verifregtask.VerifierExtractor{})), proc.actorProcessors[tasktype.VerifiedRegistryVerifier])
120120

121-
require.Equal(t, actorstate.NewTask(nil, 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-
miner.VersionCodes()[actorstypes.Version9]: {minertask.PreCommitInfoExtractorV9{}},
132-
miner.VersionCodes()[actorstypes.Version10]: {minertask.PreCommitInfoExtractorV9{}},
133-
miner.VersionCodes()[actorstypes.Version11]: {minertask.PreCommitInfoExtractorV9{}},
134-
},
135-
)), proc.actorProcessors[tasktype.MinerPreCommitInfo])
121+
require.Equal(t, actorstate.NewTaskWithTransformer(
122+
nil,
123+
actorstate.NewCustomTypedActorExtractorMap(
124+
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{}},
133+
miner.VersionCodes()[actorstypes.Version9]: {minertask.PreCommitInfoExtractorV9{}},
134+
miner.VersionCodes()[actorstypes.Version10]: {minertask.PreCommitInfoExtractorV9{}},
135+
miner.VersionCodes()[actorstypes.Version11]: {minertask.PreCommitInfoExtractorV9{}},
136+
},
137+
),
138+
minertask.PreCommitInfoExtractorV9{},
139+
), proc.actorProcessors[tasktype.MinerPreCommitInfo])
136140

137141
require.Equal(t, actorstate.NewTask(nil, actorstate.NewCustomTypedActorExtractorMap(
138142
map[cid.Cid][]actorstate.ActorStateExtractor{

chain/indexer/integrated/processor/state_test.go

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -62,24 +62,6 @@ func TestMakeProcessorsActors(t *testing.T) {
6262
taskName: tasktype.MinerInfo,
6363
extractor: actorstate.NewTypedActorExtractorMap(miner.AllCodes(), minertask.InfoExtractor{}),
6464
},
65-
{
66-
taskName: tasktype.MinerPreCommitInfo,
67-
extractor: actorstate.NewCustomTypedActorExtractorMap(
68-
map[cid.Cid][]actorstate.ActorStateExtractor{
69-
miner.VersionCodes()[actorstypes.Version0]: {minertask.PreCommitInfoExtractorV8{}},
70-
miner.VersionCodes()[actorstypes.Version2]: {minertask.PreCommitInfoExtractorV8{}},
71-
miner.VersionCodes()[actorstypes.Version3]: {minertask.PreCommitInfoExtractorV8{}},
72-
miner.VersionCodes()[actorstypes.Version4]: {minertask.PreCommitInfoExtractorV8{}},
73-
miner.VersionCodes()[actorstypes.Version5]: {minertask.PreCommitInfoExtractorV8{}},
74-
miner.VersionCodes()[actorstypes.Version6]: {minertask.PreCommitInfoExtractorV8{}},
75-
miner.VersionCodes()[actorstypes.Version7]: {minertask.PreCommitInfoExtractorV8{}},
76-
miner.VersionCodes()[actorstypes.Version8]: {minertask.PreCommitInfoExtractorV8{}},
77-
miner.VersionCodes()[actorstypes.Version9]: {minertask.PreCommitInfoExtractorV9{}},
78-
miner.VersionCodes()[actorstypes.Version10]: {minertask.PreCommitInfoExtractorV9{}},
79-
miner.VersionCodes()[actorstypes.Version11]: {minertask.PreCommitInfoExtractorV9{}},
80-
},
81-
),
82-
},
8365
{
8466
taskName: tasktype.MinerSectorDeal,
8567
extractor: actorstate.NewTypedActorExtractorMap(miner.AllCodes(), minertask.SectorDealsExtractor{}),
@@ -138,6 +120,25 @@ func TestMakeProcessorsActors(t *testing.T) {
138120
),
139121
transformer: minertask.V7SectorInfoExtractor{},
140122
},
123+
{
124+
taskName: tasktype.MinerPreCommitInfo,
125+
extractor: actorstate.NewCustomTypedActorExtractorMap(
126+
map[cid.Cid][]actorstate.ActorStateExtractor{
127+
miner.VersionCodes()[actorstypes.Version0]: {minertask.PreCommitInfoExtractorV8{}},
128+
miner.VersionCodes()[actorstypes.Version2]: {minertask.PreCommitInfoExtractorV8{}},
129+
miner.VersionCodes()[actorstypes.Version3]: {minertask.PreCommitInfoExtractorV8{}},
130+
miner.VersionCodes()[actorstypes.Version4]: {minertask.PreCommitInfoExtractorV8{}},
131+
miner.VersionCodes()[actorstypes.Version5]: {minertask.PreCommitInfoExtractorV8{}},
132+
miner.VersionCodes()[actorstypes.Version6]: {minertask.PreCommitInfoExtractorV8{}},
133+
miner.VersionCodes()[actorstypes.Version7]: {minertask.PreCommitInfoExtractorV8{}},
134+
miner.VersionCodes()[actorstypes.Version8]: {minertask.PreCommitInfoExtractorV8{}},
135+
miner.VersionCodes()[actorstypes.Version9]: {minertask.PreCommitInfoExtractorV9{}},
136+
miner.VersionCodes()[actorstypes.Version10]: {minertask.PreCommitInfoExtractorV9{}},
137+
miner.VersionCodes()[actorstypes.Version11]: {minertask.PreCommitInfoExtractorV9{}},
138+
},
139+
),
140+
transformer: minertask.PreCommitInfoExtractorV9{},
141+
},
141142
}
142143
for _, tc := range testCases2 {
143144
t.Run(tc.taskName, func(t *testing.T) {

tasks/actorstate/miner/precommitv9.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,3 +71,17 @@ func (PreCommitInfoExtractorV9) Extract(ctx context.Context, a actorstate.ActorI
7171

7272
return preCommitModel, nil
7373
}
74+
75+
func (PreCommitInfoExtractorV9) Transform(ctx context.Context, data model.PersistableList) (model.PersistableList, error) {
76+
persistableList := make(minermodel.MinerPreCommitInfoV9List, 0, len(data))
77+
for _, d := range data {
78+
ml, ok := d.(minermodel.MinerPreCommitInfoV9List)
79+
if !ok {
80+
return nil, fmt.Errorf("expected MinerPreCommitInfoV9List type but got: %T", d)
81+
}
82+
for _, m := range ml {
83+
persistableList = append(persistableList, m)
84+
}
85+
}
86+
return model.PersistableList{persistableList}, nil
87+
}

0 commit comments

Comments
 (0)