diff options
author | Alex Browne <stephenalexbrowne@gmail.com> | 2018-11-15 08:20:07 +0800 |
---|---|---|
committer | Fred Carlsen <fred@sjelfull.no> | 2018-12-06 19:04:25 +0800 |
commit | f07dc5ae6d4cc928e4d00708e3f90f7cf9b4836d (patch) | |
tree | ad83d2ebbc93b058bc6c9c99099dac2f06d3814f | |
parent | 8cb6c2b51ba7c63951f4b87fac423a19861bf47f (diff) | |
download | dexon-sol-tools-f07dc5ae6d4cc928e4d00708e3f90f7cf9b4836d.tar.gz dexon-sol-tools-f07dc5ae6d4cc928e4d00708e3f90f7cf9b4836d.tar.zst dexon-sol-tools-f07dc5ae6d4cc928e4d00708e3f90f7cf9b4836d.zip |
Use built-in chunk feature of TypeORM save method
-rw-r--r-- | packages/pipeline/src/scripts/pull_missing_events.ts | 9 |
1 files changed, 2 insertions, 7 deletions
diff --git a/packages/pipeline/src/scripts/pull_missing_events.ts b/packages/pipeline/src/scripts/pull_missing_events.ts index 1693bb59a..b1b8665dd 100644 --- a/packages/pipeline/src/scripts/pull_missing_events.ts +++ b/packages/pipeline/src/scripts/pull_missing_events.ts @@ -29,6 +29,7 @@ let connection: Connection; async function getExchangeEventsAsync(provider: Web3ProviderEngine): Promise<void> { console.log('Checking existing event logs...'); const eventsRepository = connection.getRepository(ExchangeFillEvent); + const manager = connection.createEntityManager(); const startBlock = await getStartBlockAsync(eventsRepository); console.log(`Getting event logs starting at ${startBlock}...`); const exchangeEvents = new ExchangeEventsSource(provider, 1); @@ -37,13 +38,7 @@ async function getExchangeEventsAsync(provider: Web3ProviderEngine): Promise<voi const events = parseExchangeEvents(eventLogs); console.log(`Retrieved and parsed ${events.length} total events.`); console.log('Saving events...'); - // Split the events into batches of size BATCH_SAVE_SIZE and save each batch - // in a single request. This reduces round-trip latency to the DB. We need - // to batch this way because saving an extremely large number of events in a - // single request causes problems. - for (const eventsBatch of R.splitEvery(BATCH_SAVE_SIZE, events)) { - await eventsRepository.save(eventsBatch); - } + await eventsRepository.save(events, { chunk: BATCH_SAVE_SIZE }); const totalEvents = await eventsRepository.count(); console.log(`Done saving events. There are now ${totalEvents} total events.`); } |