Skip to content

Commit 253a49d

Browse files
remove unnecessary retry
1 parent 60ef3f6 commit 253a49d

6 files changed

Lines changed: 5 additions & 116 deletions

File tree

README.md

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ await db.query("COMMIT");
8080
-**Configurable error handling** - Exponential backoff, max retries, and custom error hooks
8181
-**TypeScript-first** - Full type safety and autocompletion
8282
-**Handler result tracking** - Track the execution status of each handler independently
83-
-**Minimal dependencies** - Only `p-limit` and `retry` (plus your database driver)
83+
-**Minimal dependencies** - Only `p-limit` (plus your database driver)
8484

8585
## Quick Start
8686

@@ -547,15 +547,6 @@ EventProcessor(client, handlerMap, {
547547
onEventMaxErrorsReached: async ({ event, txClient, signal }) => {
548548
// Create a dead-letter event, send alerts, etc.
549549
},
550-
551-
// Retry options for event update operations (default: shown below)
552-
retryOpts: {
553-
retries: 3,
554-
factor: 2,
555-
minTimeout: 100,
556-
maxTimeout: 2500,
557-
randomize: true,
558-
},
559550
});
560551
```
561552

@@ -570,7 +561,6 @@ EventProcessor(client, handlerMap, {
570561
| `maxHandlerConcurrency` | `number` | `10` | Max handlers per event running concurrently |
571562
| `logger` | `Logger` | `undefined` | Custom logger interface |
572563
| `onEventMaxErrorsReached` | `function` | `undefined` | Hook for max errors |
573-
| `retryOpts` | `RetryOpts` | See above | Options for retrying event updates |
574564

575565
## Usage Examples
576566

package.json

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,7 @@
5858
"format": "prettier -w ."
5959
},
6060
"dependencies": {
61-
"p-limit": "^7.2.0",
62-
"retry": "^0.13.1"
61+
"p-limit": "^7.2.0"
6362
},
6463
"peerDependencies": {
6564
"mongodb": "^7.0.0",
@@ -69,7 +68,6 @@
6968
"@types/mongodb": "^4.0.7",
7069
"@types/node": "^25.0.3",
7170
"@types/pg": "^8.10.9",
72-
"@types/retry": "^0.12.5",
7371
"@vitest/coverage-v8": "^4.0.15",
7472
"copyfiles": "^2.4.1",
7573
"mongodb": "^7.0.0",

src/processor.test.ts

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,6 @@ describe("processEvents", () => {
5555
const opts = {
5656
maxErrors: 5,
5757
backoff: vi.fn(),
58-
retry: {
59-
minTimeout: 50,
60-
maxTimeout: 100,
61-
},
6258
};
6359
const err = new Error("some error");
6460
const handlerMap = {
@@ -124,11 +120,8 @@ describe("processEvents", () => {
124120

125121
return events.find((e) => e.id === id);
126122
});
127-
let updateEventCalls = 0;
128123
mockTxClient.updateEvent.mockImplementation(() => {
129-
updateEventCalls++;
130-
if (updateEventCalls <= 1) return Promise.reject("some error");
131-
else return Promise.resolve();
124+
return Promise.resolve();
132125
});
133126

134127
await processEvents(mockClient, handlerMap, opts);
@@ -158,7 +151,7 @@ describe("processEvents", () => {
158151
expect(opts.backoff).toHaveBeenCalledOnce();
159152
expect(opts.backoff).toHaveBeenCalledWith(5); // evt.errors + 1
160153

161-
expect(mockTxClient.updateEvent).toHaveBeenCalledTimes(2);
154+
expect(mockTxClient.updateEvent).toHaveBeenCalledTimes(1);
162155
expect(mockTxClient.updateEvent).toHaveBeenCalledWith({
163156
processed_at: now,
164157
backoff_until: null,

src/processor.ts

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import { type RetryOpts, retryable } from "./retry.js";
21
import { getDate } from "./date.js";
32
import EventEmitter from "node:events";
43
import { sleep } from "./sleep.js";
@@ -81,7 +80,6 @@ const defaultMaxHandlerConcurrency = 10;
8180
type TxOBProcessEventsOpts<TxOBEventType extends string> = {
8281
maxErrors: number;
8382
backoff: (count: number) => Date;
84-
retryOpts?: RetryOpts;
8583
signal?: AbortSignal;
8684
logger?: Logger;
8785
maxEventConcurrency?: number;
@@ -106,7 +104,6 @@ export const processEvents = async <TxOBEventType extends string>(
106104
logger,
107105
signal,
108106
onEventMaxErrorsReached,
109-
retryOpts,
110107
} = opts ?? {};
111108

112109
const events = await client.getEventsToProcess({ maxErrors, signal });
@@ -344,18 +341,7 @@ export const processEvents = async <TxOBEventType extends string>(
344341
"updating event",
345342
);
346343

347-
// The success of this update is crucial for the processor flow.
348-
// In the unlikely scenario of a failure to update the event, any handlers that have succeeded
349-
// during this iteration will be reinvoked in the subsequent processor tick.
350-
// This is why the processor is guaranteed for 'at least once' processing.
351-
await retryable(() => txClient.updateEvent(lockedEvent), {
352-
retries: 3,
353-
factor: 2,
354-
minTimeout: 100,
355-
maxTimeout: 2500,
356-
randomize: true,
357-
...retryOpts,
358-
});
344+
await txClient.updateEvent(lockedEvent);
359345
});
360346
} catch (error) {
361347
logger?.error(

src/retry.test.ts

Lines changed: 0 additions & 58 deletions
This file was deleted.

src/retry.ts

Lines changed: 0 additions & 20 deletions
This file was deleted.

0 commit comments

Comments
 (0)