@certik/skynet 0.10.44 → 0.10.45
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1 -1
- package/indexer.js +85 -79
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
package/indexer.js
CHANGED
|
@@ -126,53 +126,71 @@ function createModeIndexerApp({
|
|
|
126
126
|
process.exit(0);
|
|
127
127
|
}
|
|
128
128
|
|
|
129
|
-
|
|
130
|
-
from = await finalState.getMinId(selectorFlags);
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
inline.log(
|
|
134
|
-
`[MODE INDEXER] mode=${mode}, from=${from}, to=${
|
|
135
|
-
to ? to : "undefined"
|
|
136
|
-
}, env=${getEnvironment()}, ${toSelectorString(selectorFlags, ", ")}`
|
|
137
|
-
);
|
|
129
|
+
inline.log(`[MODE INDEXER] mode=${mode}, env=${getEnvironment()}, ${toSelectorString(selectorFlags, ", ")}`);
|
|
138
130
|
|
|
139
131
|
if (mode === "reset") {
|
|
140
132
|
await runReset(selectorFlags);
|
|
141
133
|
} else if (mode === "rebuild") {
|
|
134
|
+
const rebuildFrom = from || (await finalState.getMinId(selectorFlags));
|
|
135
|
+
const rebuildTo = to || (await finalState.getMaxId(selectorFlags));
|
|
136
|
+
|
|
142
137
|
await runReset(selectorFlags);
|
|
143
|
-
await runRebuild(selectorFlags,
|
|
138
|
+
await runRebuild(selectorFlags, rebuildFrom, rebuildTo, verbose);
|
|
144
139
|
} else if (mode === "resume-rebuild") {
|
|
145
140
|
const previousRebuildEnds = await getIndexerLatestId(name, selectorFlags);
|
|
146
141
|
|
|
147
|
-
|
|
148
|
-
selectorFlags
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
);
|
|
142
|
+
const rebuildFrom =
|
|
143
|
+
from || increaseId(finalState.type, previousRebuildEnds, 1) || (await finalState.getMinId(selectorFlags));
|
|
144
|
+
const rebuildTo = to || (await finalState.getMaxId(selectorFlags));
|
|
145
|
+
|
|
146
|
+
await runRebuild(selectorFlags, rebuildFrom, rebuildTo, verbose);
|
|
153
147
|
} else if (mode === "validate" || mode === "validation") {
|
|
154
148
|
const previousRebuildEnds = await getIndexerLatestId(name, selectorFlags);
|
|
155
149
|
|
|
150
|
+
if (!previousRebuildEnds) {
|
|
151
|
+
inline.log(`[MODE INDEXER] cannot validate without a successful rebuild`);
|
|
152
|
+
process.exit(0);
|
|
153
|
+
}
|
|
154
|
+
|
|
156
155
|
const previousValidatedTo = await getIndexerValidatedId(name, selectorFlags);
|
|
157
156
|
|
|
158
|
-
const
|
|
157
|
+
const validateFrom = from || previousValidatedTo || (await finalState.getMinId(selectorFlags));
|
|
158
|
+
const validateTo = to || previousRebuildEnds;
|
|
159
|
+
const shouldSaveState = !to; // should not save state for manual validations, those are for testing
|
|
159
160
|
|
|
160
|
-
await runValidate(
|
|
161
|
-
selectorFlags,
|
|
162
|
-
from ? from : previousValidatedTo,
|
|
163
|
-
to ? to : previousRebuildEnds,
|
|
164
|
-
shouldSaveState,
|
|
165
|
-
verbose
|
|
166
|
-
);
|
|
161
|
+
await runValidate(selectorFlags, validateFrom, validateTo, shouldSaveState, verbose);
|
|
167
162
|
} else if (mode === "one") {
|
|
168
163
|
if (to) {
|
|
169
164
|
inline.log("[MODE INDEXER] one mode ignores --to option. you may want to use range mode instead");
|
|
170
165
|
}
|
|
166
|
+
if (!from) {
|
|
167
|
+
inline.log(`[MODE INDEXER] must provide --from option for one mode`);
|
|
168
|
+
process.exit(1);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
171
|
await runRange(selectorFlags, from, from, verbose);
|
|
172
172
|
} else if (mode === "range") {
|
|
173
|
+
if (!from || !to) {
|
|
174
|
+
inline.log(`[MODE INDEXER] must provide --from and --to option for range mode`);
|
|
175
|
+
process.exit(1);
|
|
176
|
+
}
|
|
177
|
+
|
|
173
178
|
await runRange(selectorFlags, from, to, verbose);
|
|
174
179
|
} else {
|
|
175
|
-
await
|
|
180
|
+
const stateItem = await getRecordByKey(STATE_TABLE_NAME, {
|
|
181
|
+
name: `${name}RebuildState(${toSelectorString(selectorFlags)})`,
|
|
182
|
+
});
|
|
183
|
+
|
|
184
|
+
// only build when rebuild succeed
|
|
185
|
+
if (!stateItem || stateItem.value !== "succeed") {
|
|
186
|
+
inline.log("[MODE INDEXER] skip because rebuild hasn't done yet");
|
|
187
|
+
process.exit(0);
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
const deltaFrom = increaseId(finalState.type, await getIndexerLatestId(name, selectorFlags), 1);
|
|
191
|
+
const deltaTo = await state.getMaxId(selectorFlags);
|
|
192
|
+
|
|
193
|
+
await runDelta(selectorFlags, deltaFrom, deltaTo, verbose);
|
|
176
194
|
}
|
|
177
195
|
}
|
|
178
196
|
|
|
@@ -385,74 +403,62 @@ function createModeIndexerApp({
|
|
|
385
403
|
}
|
|
386
404
|
}
|
|
387
405
|
|
|
388
|
-
async function runDelta(selectorFlags, verbose) {
|
|
389
|
-
const
|
|
390
|
-
name: `${name}RebuildState(${toSelectorString(selectorFlags)})`,
|
|
391
|
-
});
|
|
392
|
-
|
|
393
|
-
// only build when rebuild succeed
|
|
394
|
-
if (stateItem && stateItem.value === "succeed") {
|
|
395
|
-
const from = increaseId(finalState.type, await getIndexerLatestId(name, selectorFlags), 1);
|
|
396
|
-
|
|
397
|
-
const startTime = Date.now();
|
|
398
|
-
const to = await state.getMaxId(selectorFlags);
|
|
399
|
-
|
|
400
|
-
if (to <= from) {
|
|
401
|
-
inline.log(
|
|
402
|
-
`[MODE INDEXER] skip delta because there're no items need to be processed, ${toSelectorString(
|
|
403
|
-
selectorFlags,
|
|
404
|
-
", "
|
|
405
|
-
)}`
|
|
406
|
-
);
|
|
407
|
-
|
|
408
|
-
return;
|
|
409
|
-
}
|
|
406
|
+
async function runDelta(selectorFlags, from, to, verbose) {
|
|
407
|
+
const startTime = Date.now();
|
|
410
408
|
|
|
409
|
+
if (to < from) {
|
|
411
410
|
inline.log(
|
|
412
|
-
`[MODE INDEXER]
|
|
411
|
+
`[MODE INDEXER] skip delta, there're no more items need to be processed, from=${from}, to=${to}, ${toSelectorString(
|
|
413
412
|
selectorFlags,
|
|
414
413
|
", "
|
|
415
|
-
)}
|
|
414
|
+
)}`
|
|
416
415
|
);
|
|
417
416
|
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
if (failedIds.length > 0) {
|
|
422
|
-
inline.log("[MODE INDEXER] built with some failed txs", failedIds);
|
|
417
|
+
return;
|
|
418
|
+
}
|
|
423
419
|
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
420
|
+
inline.log(
|
|
421
|
+
`[MODE INDEXER] starting delta, from=${from}, to=${to}, ${toSelectorString(
|
|
422
|
+
selectorFlags,
|
|
423
|
+
", "
|
|
424
|
+
)}, batchSize=${buildBatchSize}, concurrency=${buildConcurrency}`
|
|
425
|
+
);
|
|
428
426
|
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
value: Math.min(to, failedIds[0]),
|
|
432
|
-
});
|
|
427
|
+
try {
|
|
428
|
+
const failedIds = await execBuild(selectorFlags, from, to, verbose, true);
|
|
433
429
|
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
await createRecord(STATE_TABLE_NAME, {
|
|
437
|
-
name: `${name}DeltaState(${toSelectorString(selectorFlags)})`,
|
|
438
|
-
value: "succeed",
|
|
439
|
-
});
|
|
430
|
+
if (failedIds.length > 0) {
|
|
431
|
+
inline.log("[MODE INDEXER] built with some failed txs", failedIds);
|
|
440
432
|
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
433
|
+
await createRecord(STATE_TABLE_NAME, {
|
|
434
|
+
name: `${name}DeltaState(${toSelectorString(selectorFlags)})`,
|
|
435
|
+
value: "failed",
|
|
436
|
+
});
|
|
445
437
|
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
inline.error("[MODE INDEXER] delta build failed", from, to, err);
|
|
438
|
+
await createRecord(STATE_TABLE_NAME, {
|
|
439
|
+
name: `${name}Since(${toSelectorString(selectorFlags)})`,
|
|
440
|
+
value: Math.min(to, failedIds[0]),
|
|
441
|
+
});
|
|
451
442
|
|
|
452
443
|
process.exit(1);
|
|
444
|
+
} else {
|
|
445
|
+
await createRecord(STATE_TABLE_NAME, {
|
|
446
|
+
name: `${name}DeltaState(${toSelectorString(selectorFlags)})`,
|
|
447
|
+
value: "succeed",
|
|
448
|
+
});
|
|
449
|
+
|
|
450
|
+
await createRecord(STATE_TABLE_NAME, {
|
|
451
|
+
name: `${name}Since(${toSelectorString(selectorFlags)})`,
|
|
452
|
+
value: to,
|
|
453
|
+
});
|
|
454
|
+
|
|
455
|
+
inline.log(`[MODE INDEXER] built successfully in ${Date.now() - startTime}ms`);
|
|
456
|
+
process.exit(0);
|
|
453
457
|
}
|
|
454
|
-
}
|
|
455
|
-
inline.
|
|
458
|
+
} catch (err) {
|
|
459
|
+
inline.error("[MODE INDEXER] delta build failed", from, to, err);
|
|
460
|
+
|
|
461
|
+
process.exit(1);
|
|
456
462
|
}
|
|
457
463
|
}
|
|
458
464
|
|