Skip to content

Commit 880f2f0

Browse files
authored
Merge pull request #8788 from BitGo/CGD-722
fix: add per-token error isolation in bulk token registration
2 parents c773424 + 694f624 commit 880f2f0

2 files changed

Lines changed: 18 additions & 4 deletions

File tree

modules/bitgo/src/bitgo.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,11 @@ export class BitGo extends BitGoAPI {
8585
const assetEnvironment = ['prod', 'adminProd'].includes(this.getEnv()) ? 'mainnet' : 'testnet';
8686
const url = this.url(`/assets/list/${assetEnvironment}`);
8787
const tokenConfigMap = (await this.executeAssetRequest(url)) as Record<string, TrimmedAmsTokenConfig[]>;
88-
this.initCoinFactory(tokenConfigMap);
88+
try {
89+
this.initCoinFactory(tokenConfigMap);
90+
} catch (e) {
91+
throw new Error(`Failed to initialize coin factory from AMS token metadata: ${(e as Error).message}`);
92+
}
8993
}
9094

9195
/**

modules/statics/src/coins.ts

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -470,12 +470,21 @@ export function createTokenMapUsingConfigDetails(tokenConfigMap: Record<string,
470470

471471
// add the tokens not present in the static coin map
472472
for (const tokenConfigs of Object.values(tokenConfigMap)) {
473+
if (!tokenConfigs.length) continue;
473474
const tokenConfig = tokenConfigs[0];
474475

475476
if (!isCoinPresentInCoinMap({ ...tokenConfig }) && !nftAndOtherTokens.has(tokenConfig.name)) {
476-
const token = createToken(tokenConfig);
477-
if (token) {
478-
BaseCoins.set(token.name, token);
477+
try {
478+
const token = createToken(tokenConfig);
479+
if (token) {
480+
BaseCoins.set(token.name, token);
481+
}
482+
} catch (e) {
483+
console.warn(
484+
`Skipping malformed token: name="${tokenConfig.name}" id="${tokenConfig.id}" family="${
485+
tokenConfig.family
486+
}" error=${(e as Error).message}`
487+
);
479488
}
480489
}
481490
}
@@ -519,6 +528,7 @@ export function createTokenMapUsingTrimmedConfigDetails(
519528
const networkNameMap = getNetworksMap();
520529

521530
for (const tokenConfigs of Object.values(reducedTokenConfigMap)) {
531+
if (!tokenConfigs.length) continue;
522532
const tokenConfig = tokenConfigs[0];
523533
const network = networkNameMap.get(tokenConfig.network.name);
524534

0 commit comments

Comments
 (0)