Skip to content
This repository was archived by the owner on Jun 11, 2024. It is now read-only.

Commit f74ec5a

Browse files
committed
🐛 Fix indexTokenBalances
1 parent 571cbe6 commit f74ec5a

File tree

3 files changed

+24
-8
lines changed

3 files changed

+24
-8
lines changed

services/blockchain-indexer/config.js

+7
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,13 @@ config.queue = {
110110
},
111111
};
112112

113+
config.set = {
114+
accountBalanceUpdate: {
115+
name: 'AccountBalanceUpdate',
116+
batchSize: 1000,
117+
},
118+
};
119+
113120
config.operations = {
114121
isDataRetrievalModeEnabled: Boolean(
115122
String(process.env.ENABLE_DATA_RETRIEVAL_MODE).toLowerCase() !== 'false',

services/blockchain-indexer/shared/indexer/accountBalanceIndex.js

+3-6
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,6 @@ const redis = new Redis(config.endpoints.cache);
3232

3333
const MYSQL_ENDPOINT = config.endpoints.mysql;
3434

35-
const ACCOUNTS_BALANCE_UPDATE_SET_NAME = 'AccountsBalanceUpdate';
36-
const MAX_ACCOUNT_COUNT_IN_ONE_EXECUTION = 1000; // 1e3
37-
3835
const getAccountBalancesTable = () => getTableInstance(accountBalancesTableSchema, MYSQL_ENDPOINT);
3936

4037
const updateAccountBalances = async address => {
@@ -53,7 +50,7 @@ const updateAccountBalances = async address => {
5350

5451
const scheduleAddressesBalanceUpdate = async addresses => {
5552
if (addresses.length) {
56-
redis.sadd(ACCOUNTS_BALANCE_UPDATE_SET_NAME, addresses);
53+
redis.sadd(config.set.accountBalanceUpdate.name, addresses);
5754
}
5855
};
5956

@@ -79,8 +76,8 @@ const getAddressesFromTokenEvents = events => {
7976

8077
const triggerAccountsBalanceUpdate = async () => {
8178
const addresses = await redis.spop(
82-
ACCOUNTS_BALANCE_UPDATE_SET_NAME,
83-
MAX_ACCOUNT_COUNT_IN_ONE_EXECUTION,
79+
config.set.accountBalanceUpdate.name,
80+
config.set.accountBalanceUpdate.batchSize,
8481
);
8582

8683
try {

services/blockchain-indexer/shared/indexer/genesisBlock.js

+14-2
Original file line numberDiff line numberDiff line change
@@ -18,19 +18,22 @@ const {
1818
MySQL: { getTableInstance },
1919
},
2020
Signals,
21+
Logger,
2122
} = require('lisk-service-framework');
2223

2324
const { MODULE, MODULE_SUB_STORE, getGenesisHeight } = require('../constants');
2425
const { updateTotalStake, updateTotalSelfStake } = require('./transactionProcessor/pos/stake');
2526
const { requestConnector } = require('../utils/request');
26-
const { accountBalanceIndexQueue } = require('./accountBalanceIndex');
27+
const { updateAccountBalances } = require('./accountBalanceIndex');
2728
const { updateTotalLockedAmounts } = require('./utils/blockchainIndex');
2829

2930
const requestAll = require('../utils/requestAll');
3031
const config = require('../../config');
3132
const commissionsTableSchema = require('../database/schema/commissions');
3233
const { getIndexStats } = require('./indexStatus');
3334

35+
const logger = Logger();
36+
3437
const MYSQL_ENDPOINT = config.endpoints.mysql;
3538

3639
const getCommissionsTable = () => getTableInstance(commissionsTableSchema, MYSQL_ENDPOINT);
@@ -144,7 +147,16 @@ const indexGenesisBlockAssets = async dbTrx => {
144147
};
145148

146149
const indexTokenBalances = async () => {
147-
allAccountsAddresses.forEach(async address => accountBalanceIndexQueue.add({ address }));
150+
// eslint-disable-next-line no-restricted-syntax
151+
for (const address of allAccountsAddresses) {
152+
await updateAccountBalances(address).catch(err => {
153+
const errorMessage = `Updating account balance for ${address} failed. Retrying.\nError: ${err.message}.`;
154+
logger.warn(errorMessage);
155+
logger.debug(err.stack);
156+
157+
allAccountsAddresses.push(address);
158+
});
159+
}
148160
isTokensBalanceIndexed = true;
149161
};
150162

0 commit comments

Comments
 (0)