Skip to content

Commit 5743d27

Browse files
committed
speedup withdraw liquidity status update
1 parent 6127ec7 commit 5743d27

File tree

2 files changed

+61
-25
lines changed

2 files changed

+61
-25
lines changed

apollo/src/lnv3/lnv3.service.ts

Lines changed: 49 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ enum SyncStage {
4444
@Injectable()
4545
export class Lnv3Service implements OnModuleInit {
4646
private readonly logger = new Logger('lnv3');
47+
private readonly requestTooManyError = 'Request failed with status code 429';
48+
private readonly hangUpError = 'socket hang up';
4749

4850
private fetchCache = new Array(this.transferService.transfers.length).fill('').map((_) => ({
4951
latestRelayerInfoNonce: -1,
@@ -55,7 +57,8 @@ export class Lnv3Service implements OnModuleInit {
5557

5658
protected fetchSendDataInterval = 5000;
5759

58-
private readonly takeEachTime = 2;
60+
private readonly takeEachTime = 20;
61+
private readonly takeWithdrawStatusEachTime = 50;
5962
private skip: SkipInfo[] = [];
6063
private skipForWithdrawLiquidity = new Array(this.transferService.transfers.length).fill(0);
6164
private sourceServices = new Map();
@@ -177,9 +180,11 @@ export class Lnv3Service implements OnModuleInit {
177180
});
178181
}
179182
} catch (err) {
180-
this.logger.warn(
181-
`try to get records failed, id ${transfer.chainConfig.id}, type ${level0Indexer.indexerType}, err ${err}`
182-
);
183+
if (typeof err !== 'object' || err === null || (err.message !== this.requestTooManyError && err.message !== this.hangUpError)) {
184+
this.logger.warn(
185+
`try to get records failed, id ${transfer.chainConfig.id}, type ${level0Indexer.indexerType}, err ${err}`
186+
);
187+
}
183188
}
184189
}
185190
return results;
@@ -199,9 +204,11 @@ export class Lnv3Service implements OnModuleInit {
199204
result = response;
200205
}
201206
} catch (err) {
202-
this.logger.warn(
203-
`try to get provider infos failed, id ${transfer.chainConfig.id}, type ${level0Indexer.indexerType}, err ${err}`
204-
);
207+
if (typeof err !== 'object' || err === null || (err.message !== this.requestTooManyError && err.message !== this.hangUpError)) {
208+
this.logger.warn(
209+
`try to get provider infos failed, id ${transfer.chainConfig.id}, type ${level0Indexer.indexerType}, err ${err}`
210+
);
211+
}
205212
}
206213
}
207214
return result;
@@ -220,9 +227,11 @@ export class Lnv3Service implements OnModuleInit {
220227
return response;
221228
}
222229
} catch (err) {
223-
this.logger.warn(
224-
`try to get relay status failed, id ${toChain.chainConfig.id}, type ${level0Indexer.indexerType}, transferId ${transferId} err ${err}`
225-
);
230+
if (typeof err !== 'object' || err === null || (err.message !== this.requestTooManyError && err.message !== this.hangUpError)) {
231+
this.logger.warn(
232+
`try to get relay status failed, id ${toChain.chainConfig.id}, type ${level0Indexer.indexerType}, transferId ${transferId} err ${err}`
233+
);
234+
}
226235
}
227236
}
228237
}
@@ -239,9 +248,11 @@ export class Lnv3Service implements OnModuleInit {
239248
)) ?? []
240249
);
241250
} catch (err) {
242-
this.logger.warn(
243-
`try to get multi relay status failed, id ${toChain.chainConfig.id}, type ${level0Indexer.indexerType}, transferIds ${transferIds} err ${err}`
244-
);
251+
if (typeof err !== 'object' || err === null || (err.message !== this.requestTooManyError && err.message !== this.hangUpError)) {
252+
this.logger.warn(
253+
`try to get multi relay status failed, id ${toChain.chainConfig.id}, type ${level0Indexer.indexerType}, transferIds ${transferIds} err ${err}`
254+
);
255+
}
245256
return [];
246257
}
247258
}
@@ -260,9 +271,11 @@ export class Lnv3Service implements OnModuleInit {
260271
return response;
261272
}
262273
} catch (err) {
263-
this.logger.warn(
264-
`try to get withdraw status failed, id ${transfer.chainConfig.id}, type ${level0Indexer.indexerType}, err ${err}`
265-
);
274+
if (typeof err !== 'object' || err === null || (err.message !== this.requestTooManyError && err.message !== this.hangUpError)) {
275+
this.logger.warn(
276+
`try to get withdraw status failed, id ${transfer.chainConfig.id}, type ${level0Indexer.indexerType}, err ${err}`
277+
);
278+
}
266279
}
267280
}
268281
}
@@ -457,9 +470,11 @@ export class Lnv3Service implements OnModuleInit {
457470
});
458471
}
459472
} catch (err) {
460-
this.logger.warn(
461-
`try to batch get fill infos failed, id ${transfer.chainConfig.id}, type ${level0Indexer.indexerType}, err ${err}`
462-
);
473+
if (typeof err !== 'object' || err === null || (err.message !== this.requestTooManyError && err.message !== this.hangUpError)) {
474+
this.logger.warn(
475+
`try to batch get fill infos failed, id ${transfer.chainConfig.id}, type ${level0Indexer.indexerType}, err ${err}`
476+
);
477+
}
463478
}
464479
}
465480
return results;
@@ -486,15 +501,17 @@ export class Lnv3Service implements OnModuleInit {
486501
cache.syncingStage = SyncStage.SyncFinished;
487502
}
488503
} catch (error) {
489-
this.logger.warn(`batch fetch lnv3 status failed, error ${error}`);
504+
if (typeof error !== 'object' || error === null || (error.message !== this.requestTooManyError && error.message !== this.hangUpError)) {
505+
this.logger.warn(`batch fetch lnv3 status failed, error ${error}`);
506+
}
490507
}
491508
}
492509

493510
async fetchWithdrawCacheStatus(transfer: PartnerT2, index: number) {
494511
const records = await this.aggregationService
495512
.queryHistoryRecords({
496513
skip: this.skipForWithdrawLiquidity[index],
497-
take: this.takeEachTime,
514+
take: this.takeWithdrawStatusEachTime,
498515
where: {
499516
fromChain: transfer.chainConfig.code,
500517
bridge: `lnv3`,
@@ -505,10 +522,10 @@ export class Lnv3Service implements OnModuleInit {
505522
})
506523
.then((result) => result.records);
507524

508-
if (records.length < this.takeEachTime) {
525+
if (records.length < this.takeWithdrawStatusEachTime) {
509526
this.skipForWithdrawLiquidity[index] = 0;
510527
} else {
511-
this.skipForWithdrawLiquidity[index] += this.takeEachTime;
528+
this.skipForWithdrawLiquidity[index] += this.takeWithdrawStatusEachTime;
512529
}
513530

514531
const transferIdMap = new Map<string, string[]>();
@@ -545,6 +562,9 @@ export class Lnv3Service implements OnModuleInit {
545562
lastRequestWithdraw: requestWithdrawTimestamp,
546563
},
547564
});
565+
if (transferRecord.hasWithdrawn) {
566+
this.logger.log(`withdrawLiquidity find one finished, id ${id}, chain ${chainId}`);
567+
}
548568
}
549569
}
550570
}
@@ -659,7 +679,9 @@ export class Lnv3Service implements OnModuleInit {
659679
this.logger.log(`lnv3 [${transfer.chainConfig.code}] update record status, size: ${size}`);
660680
}
661681
} catch (error) {
662-
this.logger.warn(`fetch lnv3 status failed, error ${error}`);
682+
if (typeof error !== 'object' || error === null || (error.message !== this.requestTooManyError && error.message !== this.hangUpError)) {
683+
this.logger.warn(`fetch lnv3 status failed, error ${error}`);
684+
}
663685
}
664686
}
665687

@@ -816,7 +838,9 @@ export class Lnv3Service implements OnModuleInit {
816838
this.logger.log(`lnv3 [${transfer.chainConfig.code}] update relayer info, size: ${size}`);
817839
}
818840
} catch (error) {
819-
this.logger.warn(`fetch lnv3bridge relayer records failed, error ${error}`);
841+
if (typeof error !== 'object' || error === null || (error.message !== this.requestTooManyError && error.message !== this.hangUpError)) {
842+
this.logger.warn(`fetch lnv3bridge relayer records failed, error ${error}`);
843+
}
820844
}
821845
}
822846
}

apollo/src/lnv3/transfer.service.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,10 @@ export class TransferService extends BaseTransferServiceT2 {
5757
},
5858
{
5959
level0Indexers: [
60+
{
61+
indexerType: Level0IndexerType.superindex,
62+
url: this.superindexEndpoint,
63+
},
6064
{
6165
indexerType: Level0IndexerType.thegraph,
6266
url: this.bscEndpoint,
@@ -144,6 +148,10 @@ export class TransferService extends BaseTransferServiceT2 {
144148
},
145149
{
146150
level0Indexers: [
151+
{
152+
indexerType: Level0IndexerType.superindex,
153+
url: this.superindexEndpoint,
154+
},
147155
{
148156
indexerType: Level0IndexerType.thegraph,
149157
url: this.blastEndpoint,
@@ -153,6 +161,10 @@ export class TransferService extends BaseTransferServiceT2 {
153161
},
154162
{
155163
level0Indexers: [
164+
{
165+
indexerType: Level0IndexerType.superindex,
166+
url: this.superindexEndpoint,
167+
},
156168
{
157169
indexerType: Level0IndexerType.thegraph,
158170
url: this.astarZkEVMEndpoint,

0 commit comments

Comments
 (0)