Browse Source

catch blocks with where api.query.system.events.at() fails

Joystream Stats 3 years ago
parent
commit
36b86627de
1 changed files with 17 additions and 14 deletions
  1. 17 14
      contributions/tech/report-generator/src/StatisticsCollector.ts

+ 17 - 14
contributions/tech/report-generator/src/StatisticsCollector.ts

@@ -405,9 +405,10 @@ export class StatisticsCollector {
     workersEnd.forEach(async (worker) => {
       if (worker.stake) info.endStake += worker.stake.value.toNumber();
       if (!worker.reward) return;
-      const workerStart = workersStart.find((w) => w.id === worker.id);
-      const earnedStart = workerStart.reward?.total_reward_received.toNumber();
-      workers += getWorkerRow(worker, earnedStart);
+      let earnedBefore = 0;
+      const hired = workersStart.find((w) => w.id === worker.id);
+      if (hired) earnedBefore = hired.reward.total_reward_received.toNumber();
+      workers += getWorkerRow(worker, earnedBefore);
     });
     const header = `| # | Member | Status | tJOY / Block | M tJOY Term | M tJOY total |\n|--|--|--|--|--|--|\n`;
     const groupTag =
@@ -528,7 +529,7 @@ export class StatisticsCollector {
     }
 
     this.saveStats({
-      councilRound: round - COUNCIL_ROUND_OFFSET, // TODO repeated elections?
+      councilRound: round - COUNCIL_ROUND_OFFSET,
       councilMembers: await getCouncilSize(this.api, startHash),
       newProposals: endNrProposals - startNrProposals,
       newApprovedProposals: approvedProposals.size,
@@ -777,18 +778,20 @@ export class StatisticsCollector {
       for (let i = startBlock; i < endBlock; ++i) {
         process.stdout.write("\rCaching block: " + i + " until " + endBlock);
         const blockHash: Hash = await getBlockHash(this.api, i);
-        let eventRecord: Vec<EventRecord> = await getEvents(
-          this.api,
-          blockHash
-        );
+        let eventRecord: EventRecord[] = [];
+        try {
+          eventRecord = await getEvents(this.api, blockHash);
+        } catch (e) {
+          console.warn(`Failed to get events.`, e);
+        }
         let cacheEvents = new Array<CacheEvent>();
-        for (let event of eventRecord) {
+        for (let { event } of eventRecord) {
+          if (!event) {
+            console.warn(`empty event record`);
+            continue;
+          }
           cacheEvents.push(
-            new CacheEvent(
-              event.event.section,
-              event.event.method,
-              event.event.data
-            )
+            new CacheEvent(event.section, event.method, event.data)
           );
         }
         blocksEvents.set(i, cacheEvents);