@certik/skynet 0.10.43 → 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 +4 -0
  2. package/indexer.js +88 -80
  3. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.10.44 && 0.10.45
4
+
5
+ - Fixed modeIndexer delta bug
6
+
3
7
  ## 0.10.43
4
8
 
5
9
  - Fixed modeIndexer one and range mode
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
 
@@ -377,80 +395,70 @@ function createModeIndexerApp({
377
395
  process.exit(1);
378
396
  } else {
379
397
  inline.log(
380
- `[MODE INDEXER] built ${offsetRange(from, to)} ${finalState.type}(s) successfully in ${Date.now() - startTime}ms`
398
+ `[MODE INDEXER] built ${offsetRange(from, to)} ${finalState.type}(s) successfully in ${
399
+ Date.now() - startTime
400
+ }ms`
381
401
  );
382
402
  process.exit(0);
383
403
  }
384
404
  }
385
405
 
386
- async function runDelta(selectorFlags, verbose) {
387
- const stateItem = await getRecordByKey(STATE_TABLE_NAME, {
388
- name: `${name}RebuildState(${toSelectorString(selectorFlags)})`,
389
- });
390
-
391
- // only build when rebuild succeed
392
- if (stateItem && stateItem.value === "succeed") {
393
- const from = increaseId(await getIndexerLatestId(name, selectorFlags), 1);
394
-
395
- const startTime = Date.now();
396
- const to = await state.getMaxId(selectorFlags);
397
-
398
- if (to <= from) {
399
- inline.log(
400
- `[MODE INDEXER] skip delta because there're no items need to be processed, ${toSelectorString(
401
- selectorFlags,
402
- ", "
403
- )}`
404
- );
405
-
406
- return;
407
- }
406
+ async function runDelta(selectorFlags, from, to, verbose) {
407
+ const startTime = Date.now();
408
408
 
409
+ if (to < from) {
409
410
  inline.log(
410
- `[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(
411
412
  selectorFlags,
412
413
  ", "
413
- )}, batchSize=${buildBatchSize}, concurrency=${buildConcurrency}`
414
+ )}`
414
415
  );
415
416
 
416
- try {
417
- const failedIds = await execBuild(selectorFlags, from, to, verbose, true);
418
-
419
- if (failedIds.length > 0) {
420
- inline.log("[MODE INDEXER] built with some failed txs", failedIds);
417
+ return;
418
+ }
421
419
 
422
- await createRecord(STATE_TABLE_NAME, {
423
- name: `${name}DeltaState(${toSelectorString(selectorFlags)})`,
424
- value: "failed",
425
- });
420
+ inline.log(
421
+ `[MODE INDEXER] starting delta, from=${from}, to=${to}, ${toSelectorString(
422
+ selectorFlags,
423
+ ", "
424
+ )}, batchSize=${buildBatchSize}, concurrency=${buildConcurrency}`
425
+ );
426
426
 
427
- await createRecord(STATE_TABLE_NAME, {
428
- name: `${name}Since(${toSelectorString(selectorFlags)})`,
429
- value: Math.min(to, failedIds[0]),
430
- });
427
+ try {
428
+ const failedIds = await execBuild(selectorFlags, from, to, verbose, true);
431
429
 
432
- process.exit(1);
433
- } else {
434
- await createRecord(STATE_TABLE_NAME, {
435
- name: `${name}DeltaState(${toSelectorString(selectorFlags)})`,
436
- value: "succeed",
437
- });
430
+ if (failedIds.length > 0) {
431
+ inline.log("[MODE INDEXER] built with some failed txs", failedIds);
438
432
 
439
- await createRecord(STATE_TABLE_NAME, {
440
- name: `${name}Since(${toSelectorString(selectorFlags)})`,
441
- value: to,
442
- });
433
+ await createRecord(STATE_TABLE_NAME, {
434
+ name: `${name}DeltaState(${toSelectorString(selectorFlags)})`,
435
+ value: "failed",
436
+ });
443
437
 
444
- inline.log(`[MODE INDEXER] built successfully in ${Date.now() - startTime}ms`);
445
- process.exit(0);
446
- }
447
- } catch (err) {
448
- 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
+ });
449
442
 
450
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);
451
457
  }
452
- } else {
453
- 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);
454
462
  }
455
463
  }
456
464
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@certik/skynet",
3
- "version": "0.10.43",
3
+ "version": "0.10.45",
4
4
  "description": "Skynet Shared JS library",
5
5
  "main": "index.js",
6
6
  "author": "CertiK Engineering",