@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.
Files changed (3) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/indexer.js +85 -79
  3. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Changelog
2
2
 
3
- ## 0.10.44
3
+ ## 0.10.44 && 0.10.45
4
4
 
5
5
  - Fixed modeIndexer delta bug
6
6
 
package/indexer.js CHANGED
@@ -126,53 +126,71 @@ function createModeIndexerApp({
126
126
  process.exit(0);
127
127
  }
128
128
 
129
- if (!from) {
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, from, to ? to : await finalState.getMaxId(selectorFlags), verbose);
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
- await runRebuild(
148
- selectorFlags,
149
- previousRebuildEnds ? increaseId(finalState.type, previousRebuildEnds, 1) : from,
150
- to ? to : await finalState.getMaxId(selectorFlags),
151
- verbose
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 shouldSaveState = !to;
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 runDelta(selectorFlags, verbose);
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 stateItem = await getRecordByKey(STATE_TABLE_NAME, {
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] starting delta, from=${from}, to=${to}, ${toSelectorString(
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
- )}, batchSize=${buildBatchSize}, concurrency=${buildConcurrency}`
414
+ )}`
416
415
  );
417
416
 
418
- try {
419
- const failedIds = await execBuild(selectorFlags, from, to, verbose, true);
420
-
421
- if (failedIds.length > 0) {
422
- inline.log("[MODE INDEXER] built with some failed txs", failedIds);
417
+ return;
418
+ }
423
419
 
424
- await createRecord(STATE_TABLE_NAME, {
425
- name: `${name}DeltaState(${toSelectorString(selectorFlags)})`,
426
- value: "failed",
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
- await createRecord(STATE_TABLE_NAME, {
430
- name: `${name}Since(${toSelectorString(selectorFlags)})`,
431
- value: Math.min(to, failedIds[0]),
432
- });
427
+ try {
428
+ const failedIds = await execBuild(selectorFlags, from, to, verbose, true);
433
429
 
434
- process.exit(1);
435
- } else {
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
- await createRecord(STATE_TABLE_NAME, {
442
- name: `${name}Since(${toSelectorString(selectorFlags)})`,
443
- value: to,
444
- });
433
+ await createRecord(STATE_TABLE_NAME, {
434
+ name: `${name}DeltaState(${toSelectorString(selectorFlags)})`,
435
+ value: "failed",
436
+ });
445
437
 
446
- inline.log(`[MODE INDEXER] built successfully in ${Date.now() - startTime}ms`);
447
- process.exit(0);
448
- }
449
- } catch (err) {
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
- } else {
455
- inline.log("[MODE INDEXER] skip because rebuild hasn't done yet");
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
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@certik/skynet",
3
- "version": "0.10.44",
3
+ "version": "0.10.45",
4
4
  "description": "Skynet Shared JS library",
5
5
  "main": "index.js",
6
6
  "author": "CertiK Engineering",