Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement dynamic block fetching based on block size #2611

Merged
merged 9 commits into from
Dec 4, 2024
Merged

Conversation

stwiname
Copy link
Collaborator

@stwiname stwiname commented Nov 28, 2024

Description

Ditches the smart batch size implementation that wasnt working because it didn't correctly calculate block sizes. This new method requires each chain to implement a block size function which is then used to calculate a median size based on the last 1000 indexed blocks. This data is then used to adjust the concurrency of fetching blocks. It will also start indexing with a low concurrency then increase as it has more data to work with.

This is designed to much better deal with large blocks as it will reduce memory usage and requesting large amounts of data at once over the network. It is not a perfect solution but should be a good step forward. In cases where large blocks are not dealt with a restart and low startup concurrency should avoid getting stuck indexing.

TODO

  • Update for worker threads

Fixes # (issue)

Type of change

Please delete options that are not relevant.

  • New feature (non-breaking change which adds functionality)

Checklist

  • I have tested locally
  • I have performed a self review of my changes
  • Updated any relevant documentation
  • Linked to any relevant issues
  • I have added tests relevant to my changes
  • Any dependent changes have been merged and published in downstream modules
  • My code is up to date with the base branch
  • I have updated relevant changelogs. We suggest using chan

Copy link

github-actions bot commented Nov 28, 2024

Coverage report for .

Caution

Test run failed

St.
Category Percentage Covered / Total
🟡 Statements
66.9% (-3.21% 🔻)
20332/30392
🟡 Branches
79.33% (+1.04% 🔼)
2764/3484
🟡 Functions
70.28% (+7.78% 🔼)
1140/1622
🟡 Lines
66.9% (-3.21% 🔻)
20332/30392
Show new covered files 🐣
St.
File Statements Branches Functions Lines
🟢
... / migrate.ts
85.34% 16.67% 100% 85.34%
🟢
... / migrate-abis.controller.ts
95% 87.5% 100% 95%
🟢
... / constants.ts
100% 100% 100% 100%
🟢
... / index.ts
100% 100% 100% 100%
🟢
... / ethereum.ts
82.28% 83.33% 100% 82.28%
🟢
... / migrate-manifest.controller.ts
88% 73.33% 88.89% 88%
🟢
... / migrate-mapping.controller.ts
100% 100% 100% 100%
🟢
... / migrate-controller.ts
92.41% 85.19% 100% 92.41%
🟢
... / migrate.fixtures.ts
100% 100% 100% 100%
🟢
... / migrate-schema.controller.ts
97.23% 79.49% 100% 97.23%
🔴
... / types.ts
0% 0% 0% 0%
🟢
... / createProject.fixtures.ts
87.07% 75% 100% 87.07%
🟢
... / config.ts
100% 100% 100% 100%
🟢
... / index.ts
100% 100% 100% 100%
🔴
... / moduleLoader.ts
56% 40% 100% 56%
🟢
... / types.ts
100% 100% 100% 100%
🔴
... / utils.ts
0% 0% 0% 0%
🟢
... / networkFamily.ts
92.59% 88.89% 100% 92.59%
🟡
... / IPFSHTTPClientLite.ts
75.74% 80% 88.89% 75.74%
🟢
... / index.ts
100% 100% 100% 100%
🟢
... / utils.ts
92% 66.67% 100% 92%
🟡
... / admin.controller.ts
77.24% 96.3% 78.57% 77.24%
🔴
... / blockRange.ts
46.67% 100% 50% 46.67%
🟢
... / index.ts
100% 100% 100% 100%
🟢
... / SubqueryProject.ts
85.52% 83.33% 71.43% 85.52%
🟢
... / core.module.ts
100% 100% 100% 100%
🟢
... / dictionary.fixtures.ts
100% 100% 100% 100%
🟡
... / monitor.service.ts
69.61% 85.88% 94.12% 69.61%
🔴
... / sandbox.service.ts
33.33% 50% 25% 33.33%
🟡
... / baseCache.service.ts
62.12% 88.89% 66.67% 62.12%
🔴
... / baseStoreModel.service.ts
57.41% 66.67% 80% 57.41%
🟢
... / cacheable.ts
89.66% 75% 100% 89.66%
🟡
... / csvStore.service.ts
77.78% 80% 80% 77.78%
🟢
... / index.ts
100% 100% 100% 100%
🟡
... / cacheMetadata.ts
62.11% 70% 86.67% 62.11%
🟢
... / index.ts
100% 100% 100% 100%
🔴
... / metadata.ts
53.01% 71.43% 55.56% 53.01%
🟢
... / utils.ts
100% 100% 100% 100%
🟢
... / cacheModel.ts
86.33% 83.12% 85% 86.33%
🟢
... / index.ts
100% 100% 100% 100%
🟡
... / model.ts
77.36% 73.91% 81.82% 77.36%
🟢
... / utils.ts
100% 100% 100% 100%
🟡
... / cachePoi.ts
76.84% 89.47% 85.71% 76.84%
🟢
... / index.ts
100% 100% 100% 100%
🔴
... / poi.ts
41.07% 71.43% 44.44% 41.07%
🟢
... / setValueModel.ts
85.26% 83.78% 85.71% 85.26%
🟡
... / storeCache.service.ts
63.35% 84.38% 73.33% 63.35%
🔴
... / storeModel.service.ts
56.79% 50% 57.14% 56.79%
🟢
... / types.ts
100% 100% 100% 100%
🟢
... / utils.ts
93.75% 66.67% 100% 93.75%
🟢
... / worker.core.module.ts
100% 100% 0% 100%
🔴
... / worker.monitor.service.ts
39.53% 100% 0% 39.53%
🔴
... / meta.controller.ts
53.33% 100% 0% 53.33%
🟡
... / meta.module.ts
60% 100% 0% 60%
🟡
... / process.ts
61.29% 66.67% 40% 61.29%
🔴
... / foreceClean.init.ts
47.62% 100% 0% 47.62%
🔴
... / reindex.init.ts
33.33% 100% 0% 33.33%
🟡
... / autoQueue.ts
64.88% 87.18% 73.33% 64.88%
🟢
... / index.ts
100% 100% 100% 100%
🔴
... / queue.ts
45.83% 80% 66.67% 45.83%
🟡
... / rampQueue.ts
77.66% 91.3% 87.5% 77.66%
🟢
... / string.ts
100% 100% 100% 100%
🔴
... / datasourceProcessors.ts
0% 0% 0% 0%
🔴
... / index.ts
0% 0% 0% 0%
🔴
... / types.ts
0% 0% 0% 0%
🔴
... / networking.ts
31.58% 100% 0% 31.58%
Show files with reduced coverage 🔻
St.
File Statements Branches Functions Lines
🔴
... / delete.ts
48.72% (-5.57% 🔻)
100%
50% (+50% 🔼)
48.72% (-5.57% 🔻)
🔴
... / promote.ts
44.19% (-4.53% 🔻)
100%
50% (+50% 🔼)
44.19% (-4.53% 🔻)
🟡
... / add.ts
61.29% (-0.78% 🔻)
100%
50% (+50% 🔼)
61.29% (-0.78% 🔻)
🟢
... / publish.ts
83.72% (-5.61% 🔻)
60% (+2.86% 🔼)
100%
83.72% (-5.61% 🔻)
🔴
... / add-chain-controller.ts
39.62% (-0.45% 🔻)
66.67% 30%
39.62% (-0.45% 🔻)
🟢
... / codegen-controller.ts
88.52% (-0.86% 🔻)
85.9% (+10.32% 🔼)
100%
88.52% (-0.86% 🔻)
🟡
... / deploy-controller.ts
64.66% (+27.19% 🔼)
72.73% (-5.05% 🔻)
64.29% (+39.29% 🔼)
64.66% (+27.19% 🔼)
🟢
... / generate-controller.ts
97.75% (+0.1% 🔼)
93.24% (-0.79% 🔻)
100%
97.75% (+0.1% 🔼)
🟡
... / init-controller.ts
73.06% (+2.57% 🔼)
54.55% (-13.45% 🔻)
61.11% (+7.78% 🔼)
73.06% (+2.57% 🔼)
🟢
... / project-controller.ts
80.72% (-16.54% 🔻)
50% (-10% 🔻)
75% (-25% 🔻)
80.72% (-16.54% 🔻)
🟡
... / publish-controller.ts
78.39% (-1.86% 🔻)
63.64% (-7.47% 🔻)
83.33% (-16.67% 🔻)
78.39% (-1.86% 🔻)
🟡
... / load.ts
79.41% (-8.82% 🔻)
66.67% (-19.05% 🔻)
100%
79.41% (-8.82% 🔻)
🔴
... / models.ts
50% (-49.44% 🔻)
94.12% (+1.81% 🔼)
30.77% (-69.23% 🔻)
50% (-49.44% 🔻)
🟢
... / model.ts
93.14% (-4.57% 🔻)
100%
73.33% (+1.9% 🔼)
93.14% (-4.57% 🔻)
🔴
... / models.ts
47.06% (-52.94% 🔻)
100%
0% (-100% 🔻)
47.06% (-52.94% 🔻)
🟡
... / load.ts
66.33% (+7.14% 🔼)
47.37% (-8.19% 🔻)
83.33% (+16.67% 🔼)
66.33% (+7.14% 🔼)
🟡
... / github-reader.ts
65.52% (-23.77% 🔻)
85.71% (+10.71% 🔼)
71.43% (-11.9% 🔻)
65.52% (-23.77% 🔻)
🟡
... / ipfs-reader.ts
61.9% (-23.81% 🔻)
72.73% (+9.09% 🔼)
71.43% (-11.9% 🔻)
61.9% (-23.81% 🔻)
🟡
... / local-reader.ts
67.5% (-18.55% 🔻)
100% (+37.5% 🔼)
83.33% (-16.67% 🔻)
67.5% (-18.55% 🔻)
🟢
... / reader.ts
81.58% (-7.89% 🔻)
50% (-25% 🔻)
100%
81.58% (-7.89% 🔻)
🟡
... / utils.ts
73.05% (+10.34% 🔼)
72.73% (-0.44% 🔻)
65.38% (+9.38% 🔼)
73.05% (+10.34% 🔼)
🔴
... / base.ts
45.79% (-52.21% 🔻)
100%
40% (-40% 🔻)
45.79% (-52.21% 🔻)
🔴
... / models.ts
26.35% (-73.65% 🔻)
100%
0% (-100% 🔻)
26.35% (-73.65% 🔻)
🟢
... / NodeConfig.ts
88.51% (-0.1% 🔻)
79.03% (-0.6% 🔻)
85.11% (-0.94% 🔻)
88.51% (-0.1% 🔻)
🟡
... / ProjectUpgrade.service.ts
78.72% (-8.35% 🔻)
80.72% (-10.64% 🔻)
92.31% (+1% 🔼)
78.72% (-8.35% 🔻)
🟢
... / configure.module.ts
82.51% (-2.06% 🔻)
72% (+8% 🔼)
100%
82.51% (-2.06% 🔻)
🟢
... / db.module.ts
89.06% (+0.78% 🔼)
62.5% (-20.83% 🔻)
80%
89.06% (+0.78% 🔼)
🟢
... / SchemaMigration.service.ts
84.04% (-3.52% 🔻)
81.82% (+0.57% 🔼)
83.33% (-16.67% 🔻)
84.04% (-3.52% 🔻)
🟡
... / migration-helpers.ts
75.28% (-0.74% 🔻)
88.24% (+7.64% 🔼)
90.91%
75.28% (-0.74% 🔻)
🟡
... / migration.ts
73.17% (-9.12% 🔻)
83.33% (+3.6% 🔼)
85% (-5.48% 🔻)
73.17% (-9.12% 🔻)
🟡
... / StoreOperations.ts
65.88% (-26.43% 🔻)
60% (-25% 🔻)
87.5% (-12.5% 🔻)
65.88% (-26.43% 🔻)
🔴
... / benchmark.service.ts
43.36% (-11.89% 🔻)
66.67%
36.36% (-3.64% 🔻)
43.36% (-11.89% 🔻)
🔴
... / base-block-dispatcher.ts
17.61% (-29.74% 🔻)
100%
4.55% (-5.45% 🔻)
17.61% (-29.74% 🔻)
🔴
... / block-dispatcher.ts
29.72% (-11.27% 🔻)
66.67% 28.57%
29.72% (-11.27% 🔻)
🔴
... / worker-block-dispatcher.ts
15.02% (-35.19% 🔻)
100%
0% (-27.27% 🔻)
15.02% (-35.19% 🔻)
🟢
... / coreDictionary.ts
94.67% (-5.33% 🔻)
88.24% (-6.21% 🔻)
88.89% (-11.11% 🔻)
94.67% (-5.33% 🔻)
🟡
... / dictionary.service.ts
68.47% (-16.67% 🔻)
82.86% (-2.86% 🔻)
83.33% (-7.58% 🔻)
68.47% (-16.67% 🔻)
🟢
... / dictionaryV1.ts
89.8% (-3.43% 🔻)
75.56% (-2.71% 🔻)
100%
89.8% (-3.43% 🔻)
🟡
... / dictionaryV2.ts
67.37% (-14.31% 🔻)
76.92% (+11.71% 🔼)
88.89% (-11.11% 🔻)
67.37% (-14.31% 🔻)
🔴
... / ds-processor.service.ts
32.29% (-29.8% 🔻)
73.33% (-1.67% 🔻)
58.33% (-29.17% 🔻)
32.29% (-29.8% 🔻)
🟡
... / dynamic-ds.service.ts
60.16% (-30.04% 🔻)
65% (-1.67% 🔻)
80% (-5.71% 🔻)
60.16% (-30.04% 🔻)
🟢
... / inMemoryCache.service.ts
86.21% (-13.79% 🔻)
100%
75% (-25% 🔻)
86.21% (-13.79% 🔻)
🔴
... / indexer.manager.ts
16.79% (-16.42% 🔻)
100%
10% (-2.5% 🔻)
16.79% (-16.42% 🔻)
🟢
... / PoiBlock.ts
83.87% (-14.52% 🔻)
96.55%
75% (-25% 🔻)
83.87% (-14.52% 🔻)
🔴
... / poi.service.ts
55.7% (+31.78% 🔼)
57.69% (-42.31% 🔻)
80% (+51.43% 🔼)
55.7% (+31.78% 🔼)
🔴
... / poiSync.service.ts
55.88% (-31% 🔻)
77.61% (+1.05% 🔼)
88.89% (-3.42% 🔻)
55.88% (-31% 🔻)
🟡
... / project.service.ts
73.54% (-6.46% 🔻)
77.46% (+7.29% 🔼)
85.19% (+1.19% 🔼)
73.54% (-6.46% 🔻)
🔴
... / sandbox.ts
59.09% (-8.89% 🔻)
53.33% (-3.81% 🔻)
57.14% (-4.4% 🔻)
59.09% (-8.89% 🔻)
🟡
... / store.service.ts
60.52% (-5.52% 🔻)
75.41% (+6.99% 🔼)
80.65% (+23.5% 🔼)
60.52% (-5.52% 🔻)
🔴
... / entity.ts
50% (-11.54% 🔻)
100%
50% (+50% 🔼)
50% (-11.54% 🔻)
🔴
... / store.ts
30% (-2.2% 🔻)
62.5% (-37.5% 🔻)
33.33% (+33.33% 🔼)
30% (-2.2% 🔻)
🟢
... / test.runner.ts
95.06% (-4.27% 🔻)
77.78% (+4.44% 🔼)
75% (-25% 🔻)
95.06% (-4.27% 🔻)
🔴
... / testing.service.ts
12% (-16.57% 🔻)
100% 0%
12% (-16.57% 🔻)
🔴
... / unfinalizedBlocks.service.ts
56.21% (-27.78% 🔻)
75% (-21.72% 🔻)
92% (+0.33% 🔼)
56.21% (-27.78% 🔻)
🟡
... / worker.builder.ts
60.68% (-18.5% 🔻)
65.38% 80%
60.68% (-18.5% 🔻)
🔴
... / worker.cache.service.ts
48.78% (-9.76% 🔻)
100% 0%
48.78% (-9.76% 🔻)
🔴
... / worker.connectionPoolState.manager.ts
38.21% (-22.76% 🔻)
100% 0%
38.21% (-22.76% 🔻)
🔴
... / worker.dynamic-ds.service.ts
44.44% (-17.78% 🔻)
100% 0%
44.44% (-17.78% 🔻)
🔴
... / worker.service.ts
20.35% (-24.29% 🔻)
100% 0%
20.35% (-24.29% 🔻)
🔴
... / worker.ts
41.18% (-1.28% 🔻)
100% 0%
41.18% (-1.28% 🔻)
🔴
... / worker.unfinalizedBlocks.service.ts
26.79% (-73.21% 🔻)
100%
0% (-100% 🔻)
26.79% (-73.21% 🔻)
🔴
... / logger.ts
47.89% (-16.59% 🔻)
33.33%
40% (+20% 🔼)
47.89% (-16.59% 🔻)
🔴
... / event.listener.ts
15.15% (-65.66% 🔻)
100%
0% (-25% 🔻)
15.15% (-65.66% 🔻)
🔴
... / health.controller.ts
37.93% (-17.24% 🔻)
100%
0% (-50% 🔻)
37.93% (-17.24% 🔻)
🔴
... / health.service.ts
21.05% (-36.48% 🔻)
100%
0% (-20% 🔻)
21.05% (-36.48% 🔻)
🔴
... / meta.service.ts
34.26% (-35.26% 🔻)
100% (+20% 🔼)
0% (-40% 🔻)
34.26% (-35.26% 🔻)
🔴
... / ready.controller.ts
34.78% (-21.74% 🔻)
100%
0% (-50% 🔻)
34.78% (-21.74% 🔻)
🔴
... / ready.service.ts
37.5% (-54.17% 🔻)
100%
0% (-66.67% 🔻)
37.5% (-54.17% 🔻)
🔴
... / forceClean.service.ts
21.05% (-5.26% 🔻)
100% 0%
21.05% (-5.26% 🔻)
🔴
... / reindex.service.ts
18.62% (-14.71% 🔻)
100% 0%
18.62% (-14.71% 🔻)
🟡
... / blocks.ts
71.21% (-28.79% 🔻)
91.67% (+2.78% 🔼)
75% (-25% 🔻)
71.21% (-28.79% 🔻)
🟡
... / project.ts
71.88% (-1.49% 🔻)
75% (+0.42% 🔼)
77.78%
71.88% (-1.49% 🔻)
🟢
... / promise.ts
86.44% (-5.32% 🔻)
100% (+13.64% 🔼)
71.43% (-14.29% 🔻)
86.44% (-5.32% 🔻)
🟢
... / reindex.ts
82.05% (+48.01% 🔼)
14.29% (-85.71% 🔻)
100% (+100% 🔼)
82.05% (+48.01% 🔼)
🔴
... / yargs.ts
40.69% (-4.8% 🔻)
100% 14.29%
40.69% (-4.8% 🔻)
🟡
... / apiPromise.connection.ts
78.13% (+9.05% 🔼)
54.55% (-25.45% 🔻)
66.67% (+23.81% 🔼)
78.13% (+9.05% 🔼)
🟡
... / block-dispatcher.service.ts
62.83% (-6.04% 🔻)
100%
28.57% (+3.57% 🔼)
62.83% (-6.04% 🔻)
🔴
... / worker-block-dispatcher.service.ts
24.16% (-12.8% 🔻)
100% 0%
24.16% (-12.8% 🔻)
🟢
... / substrateDictionary.service.ts
98.11% (+7.55% 🔼)
66.67% (-6.06% 🔻)
100% (+20% 🔼)
98.11% (+7.55% 🔼)
🟢
... / substrateDictionaryV1.ts
85.19% (-0.3% 🔻)
78.72% (+8.96% 🔼)
84.62% (+1.28% 🔼)
85.19% (-0.3% 🔻)
🟡
... / substrateDictionaryV2.ts
73.03% (-2.48% 🔻)
75% 33.33%
73.03% (-2.48% 🔻)
🟢
... / fetch.module.ts
89.6% (-2.27% 🔻)
50% (-25% 🔻)
100%
89.6% (-2.27% 🔻)
🔴
... / indexer.manager.ts
50% (-7.55% 🔻)
100%
20% (+10.91% 🔼)
50% (-7.55% 🔻)
🟡
... / base-runtime.service.ts
72.17% (-0.15% 🔻)
76.92% (+1.92% 🔼)
77.78% (+2.78% 🔼)
72.17% (-0.15% 🔻)
🟢
... / runtimeService.ts
94.52% (+2.31% 🔼)
81.82% (-7.07% 🔻)
100% (+20% 🔼)
94.52% (+2.31% 🔼)
🟡
... / types.ts
70.45% (-14.84% 🔻)
100% 0%
70.45% (-14.84% 🔻)
🟢
... / unfinalizedBlocks.service.ts
85.45% (-0.82% 🔻)
100%
60% (+10% 🔼)
85.45% (-0.82% 🔻)
🔴
... / http.ts
50.58% (-29.34% 🔻)
50% (+10% 🔼)
42.86% (+12.09% 🔼)
50.58% (-29.34% 🔻)
🟢
... / project.ts
88.73% (-0.16% 🔻)
68.18% 87.5%
88.73% (-0.16% 🔻)
🟢
... / buffer.ts
95.12% (-4.88% 🔻)
95.83% (-4.17% 🔻)
90.48% (+6.27% 🔼)
95.12% (-4.88% 🔻)
🟡
... / logger.ts
69.19% (-0.41% 🔻)
48.15% (-6.85% 🔻)
78.57% (+3.57% 🔼)
69.19% (-0.41% 🔻)

Test suite run failed

Failed tests: 9/600. Failed suites: 3/107.
  ● Dictionary service › init Dictionaries with mutiple endpoints, only valid dictionary will be added

    expect(received).toBe(expected) // Object.is equality

    Expected: 2
    Received: 1

      111 |
      112 |   it('init Dictionaries with mutiple endpoints, only valid dictionary will be added', () => {
    > 113 |     expect((dictionaryService as any)._dictionaries.length).toBe(2);
          |                                                             ^
      114 |   });
      115 |
      116 |   it('can find valid dictionary with height', () => {

      at Object.<anonymous> (packages/node-core/src/indexer/dictionary/dictionary.service.spec.ts:113:61)

  ● Dictionary service › can find valid dictionary with height

    expect(received).toBe(expected) // Object.is equality

    Expected: "https://dict-tyk.subquery.network/query/eth-mainnet"
    Received: "http://mock-dictionary-v2/rpc"

      123 |     expect((dictionaryService as any).getDictionary(100)).toBeTruthy();
      124 |     // Current only valid endpoint been provided
    > 125 |     expect((dictionaryService as any).getDictionary(100).dictionaryEndpoint).toBe(
          |                                                                              ^
      126 |       'https://dict-tyk.subquery.network/query/eth-mainnet'
      127 |     );
      128 |   });

      at Object.<anonymous> (packages/node-core/src/indexer/dictionary/dictionary.service.spec.ts:125:78)

  ● Dictionary service › scopedDictionaryEntries, if query failed/timeout, should try next valid dictionary for query

    expect(jest.fn()).toHaveBeenCalledTimes(expected)

    Expected number of calls: 2
    Received number of calls: 3

      161 |     expect(spyPassGetData).toHaveBeenCalledTimes(1);
      162 |     // failed 1 time + 1 retry
    > 163 |     expect(spyScopedDictionaryEntries).toHaveBeenCalledTimes(2);
          |                                        ^
      164 |     expect(dictionaryService.currentDictionaryIndex).toBe(1);
      165 |   });
      166 |

      at Object.<anonymous> (packages/node-core/src/indexer/dictionary/dictionary.service.spec.ts:163:40)

  ● Dictionary service › tried all dictionaries but all failed will return undefined

    expect(jest.fn()).toHaveBeenCalledTimes(expected)

    Expected number of calls: 3
    Received number of calls: 2

      178 |     const spyScopedDictionaryEntries = jest.spyOn(dictionaryService as any, '_scopedDictionaryEntries');
      179 |     const blocks = await dictionaryService.scopedDictionaryEntries(1000, 11000, 100);
    > 180 |     expect(spyScopedDictionaryEntries).toHaveBeenCalledTimes(3);
          |                                        ^
      181 |     expect(blocks).toBeUndefined();
      182 |   }, 50000);
      183 | });

      at Object.<anonymous> (packages/node-core/src/indexer/dictionary/dictionary.service.spec.ts:180:40)


  ● CLI deploy, delete, promote › reDeploy to Hosted Service

    thrown: "Exceeded timeout of 120000 ms for a test.
    Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."

      152 |   });
      153 |
    > 154 |   it('reDeploy to Hosted Service', async () => {
          |   ^
      155 |     const {ipfs, org, projectName, type} = projectSpec;
      156 |     const newIPFS = 'QmbKvrzwSmzTZi5jrhEpa6yDDHQXRURi5S4ztLgJLpBxAi';
      157 |     const validator = await ipfsCID_validate(projectSpec.ipfs, testAuth, ROOT_API_URL_PROD);

      at packages/cli/src/controller/deploy-controller.test.ts:154:3
      at Object.<anonymous> (packages/cli/src/controller/deploy-controller.test.ts:79:1)


  ● Cli publish › should upload appropriate project to IPFS

    [tsl] ERROR in /tmp/2CwBB0/multi_mocked_starter/src/types/models/ClaimRecord.ts(75,48)
          TS2558: Expected 0 type arguments, but got 1.
    [tsl] ERROR in /tmp/2CwBB0/multi_mocked_starter/src/types/models/ClaimRecord.ts(81,48)
          TS2558: Expected 0 type arguments, but got 1.
    [tsl] ERROR in /tmp/2CwBB0/multi_mocked_starter/src/types/models/ForgeRecord.ts(81,48)
          TS2558: Expected 0 type arguments, but got 1.
    [tsl] ERROR in /tmp/2CwBB0/multi_mocked_starter/src/types/models/ForgeRecord.ts(87,48)
          TS2558: Expected 0 type arguments, but got 1.
    [tsl] ERROR in /tmp/2CwBB0/multi_mocked_starter/src/types/models/NFT.ts(63,48)
          TS2558: Expected 0 type arguments, but got 1.
    [tsl] ERROR in /tmp/2CwBB0/multi_mocked_starter/src/types/models/NFT.ts(69,48)
          TS2558: Expected 0 type arguments, but got 1.

      44 |       const outputDir = path.resolve(directory, flags.output ?? 'dist');
      45 |
    > 46 |       await runWebpack(buildEntries, directory, outputDir, isDev, true);
         |                  ^
      47 |       if (!flags.silent) {
      48 |         this.log('Building and packing code ...');
      49 |         this.log('Done!');

      at Object.error (node_modules/@oclif/core/lib/errors/index.js:27:15)
      at Build.error (node_modules/@oclif/core/lib/command.js:139:23)
      at Build.run (packages/cli/src/commands/build/index.ts:46:18)
      at async Build._run (node_modules/@oclif/core/lib/command.js:117:22)
      at async createMultiChainTestProject (packages/cli/src/createProject.fixtures.ts:89:5)
          at async Promise.all (index 1)
      at async Object.<anonymous> (packages/cli/src/controller/publish-controller.spec.ts:18:21)

  ● Cli publish › convert to deployment and removed descriptive field

    [tsl] ERROR in /tmp/2CwBB0/multi_mocked_starter/src/types/models/ClaimRecord.ts(75,48)
          TS2558: Expected 0 type arguments, but got 1.
    [tsl] ERROR in /tmp/2CwBB0/multi_mocked_starter/src/types/models/ClaimRecord.ts(81,48)
          TS2558: Expected 0 type arguments, but got 1.
    [tsl] ERROR in /tmp/2CwBB0/multi_mocked_starter/src/types/models/ForgeRecord.ts(81,48)
          TS2558: Expected 0 type arguments, but got 1.
    [tsl] ERROR in /tmp/2CwBB0/multi_mocked_starter/src/types/models/ForgeRecord.ts(87,48)
          TS2558: Expected 0 type arguments, but got 1.
    [tsl] ERROR in /tmp/2CwBB0/multi_mocked_starter/src/types/models/NFT.ts(63,48)
          TS2558: Expected 0 type arguments, but got 1.
    [tsl] ERROR in /tmp/2CwBB0/multi_mocked_starter/src/types/models/NFT.ts(69,48)
          TS2558: Expected 0 type arguments, but got 1.

      44 |       const outputDir = path.resolve(directory, flags.output ?? 'dist');
      45 |
    > 46 |       await runWebpack(buildEntries, directory, outputDir, isDev, true);
         |                  ^
      47 |       if (!flags.silent) {
      48 |         this.log('Building and packing code ...');
      49 |         this.log('Done!');

      at Object.error (node_modules/@oclif/core/lib/errors/index.js:27:15)
      at Build.error (node_modules/@oclif/core/lib/command.js:139:23)
      at Build.run (packages/cli/src/commands/build/index.ts:46:18)
      at async Build._run (node_modules/@oclif/core/lib/command.js:117:22)
      at async createMultiChainTestProject (packages/cli/src/createProject.fixtures.ts:89:5)
          at async Promise.all (index 1)
      at async Object.<anonymous> (packages/cli/src/controller/publish-controller.spec.ts:18:21)

  ● Cli publish › convert js object to JSON object

    [tsl] ERROR in /tmp/2CwBB0/multi_mocked_starter/src/types/models/ClaimRecord.ts(75,48)
          TS2558: Expected 0 type arguments, but got 1.
    [tsl] ERROR in /tmp/2CwBB0/multi_mocked_starter/src/types/models/ClaimRecord.ts(81,48)
          TS2558: Expected 0 type arguments, but got 1.
    [tsl] ERROR in /tmp/2CwBB0/multi_mocked_starter/src/types/models/ForgeRecord.ts(81,48)
          TS2558: Expected 0 type arguments, but got 1.
    [tsl] ERROR in /tmp/2CwBB0/multi_mocked_starter/src/types/models/ForgeRecord.ts(87,48)
          TS2558: Expected 0 type arguments, but got 1.
    [tsl] ERROR in /tmp/2CwBB0/multi_mocked_starter/src/types/models/NFT.ts(63,48)
          TS2558: Expected 0 type arguments, but got 1.
    [tsl] ERROR in /tmp/2CwBB0/multi_mocked_starter/src/types/models/NFT.ts(69,48)
          TS2558: Expected 0 type arguments, but got 1.

      44 |       const outputDir = path.resolve(directory, flags.output ?? 'dist');
      45 |
    > 46 |       await runWebpack(buildEntries, directory, outputDir, isDev, true);
         |                  ^
      47 |       if (!flags.silent) {
      48 |         this.log('Building and packing code ...');
      49 |         this.log('Done!');

      at Object.error (node_modules/@oclif/core/lib/errors/index.js:27:15)
      at Build.error (node_modules/@oclif/core/lib/command.js:139:23)
      at Build.run (packages/cli/src/commands/build/index.ts:46:18)
      at async Build._run (node_modules/@oclif/core/lib/command.js:117:22)
      at async createMultiChainTestProject (packages/cli/src/createProject.fixtures.ts:89:5)
          at async Promise.all (index 1)
      at async Object.<anonymous> (packages/cli/src/controller/publish-controller.spec.ts:18:21)

  ● Cli publish › Get directory CID from multi-chain project

    [tsl] ERROR in /tmp/2CwBB0/multi_mocked_starter/src/types/models/ClaimRecord.ts(75,48)
          TS2558: Expected 0 type arguments, but got 1.
    [tsl] ERROR in /tmp/2CwBB0/multi_mocked_starter/src/types/models/ClaimRecord.ts(81,48)
          TS2558: Expected 0 type arguments, but got 1.
    [tsl] ERROR in /tmp/2CwBB0/multi_mocked_starter/src/types/models/ForgeRecord.ts(81,48)
          TS2558: Expected 0 type arguments, but got 1.
    [tsl] ERROR in /tmp/2CwBB0/multi_mocked_starter/src/types/models/ForgeRecord.ts(87,48)
          TS2558: Expected 0 type arguments, but got 1.
    [tsl] ERROR in /tmp/2CwBB0/multi_mocked_starter/src/types/models/NFT.ts(63,48)
          TS2558: Expected 0 type arguments, but got 1.
    [tsl] ERROR in /tmp/2CwBB0/multi_mocked_starter/src/types/models/NFT.ts(69,48)
          TS2558: Expected 0 type arguments, but got 1.

      44 |       const outputDir = path.resolve(directory, flags.output ?? 'dist');
      45 |
    > 46 |       await runWebpack(buildEntries, directory, outputDir, isDev, true);
         |                  ^
      47 |       if (!flags.silent) {
      48 |         this.log('Building and packing code ...');
      49 |         this.log('Done!');

      at Object.error (node_modules/@oclif/core/lib/errors/index.js:27:15)
      at Build.error (node_modules/@oclif/core/lib/command.js:139:23)
      at Build.run (packages/cli/src/commands/build/index.ts:46:18)
      at async Build._run (node_modules/@oclif/core/lib/command.js:117:22)
      at async createMultiChainTestProject (packages/cli/src/createProject.fixtures.ts:89:5)
          at async Promise.all (index 1)
      at async Object.<anonymous> (packages/cli/src/controller/publish-controller.spec.ts:18:21)

Report generated by 🧪jest coverage report action from f730b7d

@stwiname stwiname marked this pull request as ready for review December 2, 2024 02:49
@stwiname stwiname requested a review from yoozo December 2, 2024 02:51
@@ -115,7 +113,7 @@ export abstract class WorkerBlockDispatcher<DS, W extends Worker, B>
let startIndex = 0;
while (startIndex < heights.length) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You can remove this loop.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why? This code doesn't relate to the PR or changes

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because after the modification, it now only executes the loop once.


if (size > m * 2) {
// Inverse of the size compared to the median. E.g if a block is 5x as big as the median then the batch size should be 1/5 of the max
const multiplier = 1 / (size / m);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think writing it this way makes it easier to understand. It means scaling down to a smaller concurrency proportionally.
const concurrency = this.#maxConcurrency * (m / size)

// Inverse of the size compared to the median. E.g if a block is 5x as big as the median then the batch size should be 1/5 of the max
const multiplier = 1 / (size / m);
this.setConcurrency(this.#maxConcurrency * multiplier);
} else if (this.#sizes.length % MIN_SIZES === 0) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When this.#sizes is filled, this condition will always be true.

putMany(tasks: Task<T>[]): Promise<T>[] {
return super.putMany(tasks).map((r) =>
r.then((d) => {
this.adjustConcurrency(d);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

According to this approach, we will only affect the last processed block.

@stwiname stwiname merged commit a4ca402 into main Dec 4, 2024
2 of 3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants