aboutsummaryrefslogtreecommitdiffstats
path: root/packages/pipeline/src/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/pipeline/src/scripts')
-rw-r--r--packages/pipeline/src/scripts/pull_exchange_events.ts12
1 files changed, 9 insertions, 3 deletions
diff --git a/packages/pipeline/src/scripts/pull_exchange_events.ts b/packages/pipeline/src/scripts/pull_exchange_events.ts
index f8ce4038d..c2c56da6b 100644
--- a/packages/pipeline/src/scripts/pull_exchange_events.ts
+++ b/packages/pipeline/src/scripts/pull_exchange_events.ts
@@ -112,15 +112,20 @@ async function saveIndividuallyWithFallbackAsync<T extends ExchangeEvent>(
events: T[],
): Promise<void> {
// Note(albrow): This is a temporary hack because `save` is not working as
- // documented and is causing a foreign key constraint violation. Hopefully
+ // documented and is causing a primary key constraint violation. Hopefully
// can remove later because this "poor man's upsert" implementation operates
// on one event at a time and is therefore much slower.
for (const event of events) {
try {
// First try an insert.
await repository.insert(event);
- } catch {
- // If it fails, assume it was a foreign key constraint error and try
+ } catch (err) {
+ if (err.message.includes('duplicate key value violates unique constraint')) {
+ logUtils.log("Ignore the preceeding INSERT failure; it's not unexpected");
+ } else {
+ throw err;
+ }
+ // If it fails, assume it was a primary key constraint error and try
// doing an update instead.
// Note(albrow): Unfortunately the `as any` hack here seems
// required. I can't figure out how to convince the type-checker
@@ -132,6 +137,7 @@ async function saveIndividuallyWithFallbackAsync<T extends ExchangeEvent>(
contractAddress: event.contractAddress,
blockNumber: event.blockNumber,
logIndex: event.logIndex,
+ transactionHash: event.transactionHash,
} as any,
event as any,
);