diff --git a/ts/sdk/src/jitter/baseJitter.ts b/ts/sdk/src/jitter/baseJitter.ts index 85d48d43..abb1185b 100644 --- a/ts/sdk/src/jitter/baseJitter.ts +++ b/ts/sdk/src/jitter/baseJitter.ts @@ -44,6 +44,7 @@ export abstract class BaseJitter { perpParams = new Map(); spotParams = new Map(); + seenOrders = new Set(); onGoingAuctions = new Map>(); userFilter: UserFilter; @@ -107,6 +108,11 @@ export abstract class BaseJitter { order.orderId ); + if (this.seenOrders.has(orderSignature)) { + continue; + } + this.seenOrders.add(orderSignature); + if (this.onGoingAuctions.has(orderSignature)) { continue; } @@ -175,6 +181,11 @@ export abstract class BaseJitter { throw new Error('Not implemented'); } + deleteOnGoingAuction(orderSignature: string): void { + this.onGoingAuctions.delete(orderSignature); + this.seenOrders.delete(orderSignature); + } + getOrderSignatures(takerKey: string, orderId: number): string { return `${takerKey}-${orderId}`; } diff --git a/ts/sdk/src/jitter/jitterShotgun.ts b/ts/sdk/src/jitter/jitterShotgun.ts index 83896164..2e3452c6 100644 --- a/ts/sdk/src/jitter/jitterShotgun.ts +++ b/ts/sdk/src/jitter/jitterShotgun.ts @@ -57,7 +57,7 @@ export class JitterShotgun extends BaseJitter { while (i < 10) { const params = this.perpParams.get(order.marketIndex); if (!params) { - this.onGoingAuctions.delete(orderSignature); + this.deleteOnGoingAuction(orderSignature); return; } @@ -90,7 +90,7 @@ export class JitterShotgun extends BaseJitter { console.log(`Filled ${orderSignature} txSig ${txSig}`); await sleep(10000); - this.onGoingAuctions.delete(orderSignature); + this.deleteOnGoingAuction(orderSignature); return; } catch (e) { console.error(`Failed to fill ${orderSignature}`); @@ -102,7 +102,7 @@ export class JitterShotgun extends BaseJitter { console.log('Oracle invalid, retrying'); } else { await sleep(10000); - this.onGoingAuctions.delete(orderSignature); + this.deleteOnGoingAuction(orderSignature); return; } } @@ -110,7 +110,7 @@ export class JitterShotgun extends BaseJitter { i++; } - this.onGoingAuctions.delete(orderSignature); + this.deleteOnGoingAuction(orderSignature); }; } } diff --git a/ts/sdk/src/jitter/jitterSniper.ts b/ts/sdk/src/jitter/jitterSniper.ts index 17e15e7d..0c6c95ef 100644 --- a/ts/sdk/src/jitter/jitterSniper.ts +++ b/ts/sdk/src/jitter/jitterSniper.ts @@ -65,7 +65,7 @@ export class JitterSniper extends BaseJitter { return async () => { const params = this.perpParams.get(order.marketIndex); if (!params) { - this.onGoingAuctions.delete(orderSignature); + this.deleteOnGoingAuction(orderSignature); return; } @@ -100,7 +100,7 @@ export class JitterSniper extends BaseJitter { order.marketType )}-${order.marketIndex}) too much` ); - this.onGoingAuctions.delete(orderSignature); + this.deleteOnGoingAuction(orderSignature); return; } } else if ( @@ -113,7 +113,7 @@ export class JitterSniper extends BaseJitter { order.marketType )}-${order.marketIndex}) too much` ); - this.onGoingAuctions.delete(orderSignature); + this.deleteOnGoingAuction(orderSignature); return; } } @@ -152,7 +152,7 @@ export class JitterSniper extends BaseJitter { ).then(async ({ slot, updatedDetails }) => { if (slot === -1) { console.log('Auction expired without crossing'); - this.onGoingAuctions.delete(orderSignature); + this.deleteOnGoingAuction(orderSignature); return; } @@ -209,7 +209,7 @@ export class JitterSniper extends BaseJitter { console.log(`Filled ${orderSignature} txSig ${txSig}`); await sleep(3000); - this.onGoingAuctions.delete(orderSignature); + this.deleteOnGoingAuction(orderSignature); return; } catch (e) { console.error(`Failed to fill ${orderSignature}`); @@ -221,7 +221,7 @@ export class JitterSniper extends BaseJitter { console.log('Oracle invalid'); } else { await sleep(3000); - this.onGoingAuctions.delete(orderSignature); + this.deleteOnGoingAuction(orderSignature); return; } } @@ -229,7 +229,7 @@ export class JitterSniper extends BaseJitter { i++; } }); - this.onGoingAuctions.delete(orderSignature); + this.deleteOnGoingAuction(orderSignature); }; }