Skip to content

Commit af99306

Browse files
committed
Fix error field name in logger calls across codebase
Rename `error` to `err` in all logger calls so Pino's error serializer properly extracts message and stack trace in structured logs.
1 parent faeea38 commit af99306

6 files changed

Lines changed: 33 additions & 34 deletions

File tree

src/services/batch-worker/BatchWorker.ts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -105,12 +105,12 @@ class BatchWorker {
105105
if (this.batch.length >= this.batchSize) {
106106
await this.flushBatch();
107107
}
108-
} catch (error) {
108+
} catch (err) {
109109
logger.error({
110110
event: 'WorkerMessageProcessingFailed',
111111
messageId: message.id,
112112
messageData: this.getMessageData(message),
113-
err: error
113+
err
114114
});
115115
message.nack();
116116
}
@@ -121,12 +121,12 @@ class BatchWorker {
121121
const messageData = message.data.toString();
122122
const parsedMessageData = JSON.parse(messageData);
123123
return Value.Parse(PageHitRawSchema, parsedMessageData);
124-
} catch (error) {
124+
} catch (err) {
125125
logger.error({
126126
event: 'WorkerMessageParsingFailed',
127127
messageId: message.id,
128128
messageData: this.getMessageData(message),
129-
err: error
129+
err
130130
});
131131
// Ack the message. If we failed to parse it, we won't succeed next time.
132132
message.ack();
@@ -160,20 +160,20 @@ class BatchWorker {
160160
batchSize: batchToFlush.length,
161161
messageIds: batchToFlush.map(item => item.message.id)
162162
});
163-
} catch (error) {
163+
} catch (err) {
164164
logger.error({
165165
event: 'WorkerBatchFlushFailed',
166166
batchSize: batchToFlush.length,
167167
messageIds: batchToFlush.map(item => item.message.id),
168-
err: error
168+
err
169169
});
170170

171171
// Nack all messages in the failed batch
172172
batchToFlush.forEach((item) => {
173173
item.message.nack();
174174
});
175175

176-
throw error;
176+
throw err;
177177
}
178178
}
179179

@@ -187,12 +187,12 @@ class BatchWorker {
187187

188188
try {
189189
await this.flushBatch();
190-
} catch (error) {
190+
} catch (err) {
191191
logger.error({
192192
event: 'WorkerScheduledFlushFailed',
193193
batchSize: this.batch.length,
194194
messageIds: this.batch.map(item => item.message.id),
195-
err: error
195+
err
196196
});
197197
}
198198

src/services/events/publisher.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,15 +41,14 @@ class EventPublisher {
4141
});
4242

4343
return messageId;
44-
} catch (error) {
45-
const errorMessage = error instanceof Error ? error.message : String(error);
44+
} catch (err) {
4645
logger.error({
4746
event: 'EventPublishFailed',
48-
error: errorMessage,
47+
err,
4948
topic,
5049
payload
5150
});
52-
throw error;
51+
throw err;
5352
}
5453
}
5554
}

src/services/salt-store/FileSaltStore.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,8 @@ export class FileSaltStore implements ISaltStore {
5555
// File doesn't exist, create it with empty object
5656
await this.writeFile({});
5757
}
58-
} catch (error) {
59-
logger.warn({event: 'FileSaltStoreInitializationFailed', error});
58+
} catch (err) {
59+
logger.warn({event: 'FileSaltStoreInitializationFailed', err});
6060
}
6161
}
6262

@@ -80,12 +80,12 @@ export class FileSaltStore implements ISaltStore {
8080
}
8181
}
8282
return records;
83-
} catch (error) {
84-
if ((error as NodeJS.ErrnoException).code === 'ENOENT') {
83+
} catch (err) {
84+
if ((err as NodeJS.ErrnoException).code === 'ENOENT') {
8585
return {};
8686
}
8787
// Handle corrupted file
88-
logger.error({event: 'FileSaltStoreReadFailed', error});
88+
logger.error({event: 'FileSaltStoreReadFailed', err});
8989
await this.writeFile({});
9090
return {};
9191
}
@@ -247,9 +247,9 @@ export class FileSaltStore implements ISaltStore {
247247
}
248248

249249
return deletedCount;
250-
} catch (error) {
251-
logger.error({event: 'FileSaltStoreCleanupFailed', error});
252-
throw error;
250+
} catch (err) {
251+
logger.error({event: 'FileSaltStoreCleanupFailed', err});
252+
throw err;
253253
}
254254
});
255255
}

src/services/salt-store/FirestoreSaltStore.ts

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -75,9 +75,9 @@ export class FirestoreSaltStore implements ISaltStore {
7575
try {
7676
// Simple operation to test connectivity - just get the collection reference
7777
await this.firestore.collection(this.collectionName).limit(1).get();
78-
} catch (error) {
78+
} catch (err) {
7979
// Log warning but don't throw - allow graceful degradation
80-
logger.warn({event: 'FirestoreSaltStoreHealthCheckFailed', error});
80+
logger.warn({event: 'FirestoreSaltStoreHealthCheckFailed', err});
8181
}
8282
}
8383

@@ -280,17 +280,17 @@ export class FirestoreSaltStore implements ISaltStore {
280280
batchSize
281281
});
282282
}
283-
} catch (error) {
283+
} catch (err) {
284284
logger.error({
285285
event: 'FirestoreSaltStoreCleanupFailed',
286-
error,
286+
err,
287287
deletedCount: totalDeleted,
288288
totalToBeDeleted,
289289
durationMs: Date.now() - startTime,
290290
cutoffDate: cutoffDate.toISOString(),
291291
batchSize
292292
});
293-
throw error;
293+
throw err;
294294
}
295295

296296
logger.info({
@@ -327,21 +327,21 @@ export class FirestoreSaltStore implements ISaltStore {
327327
try {
328328
// Use existing set method which handles atomic creation
329329
return await this.set(key, newSalt);
330-
} catch (error) {
330+
} catch (err) {
331331
// Handle race condition: another process created the document between our read and create
332332
// We could do this with a transaction, but it adds unnecessary performance overhead
333-
if (error instanceof SaltAlreadyExistsError) {
333+
if (err instanceof SaltAlreadyExistsError) {
334334
// Another process created it, read and return the existing document
335335
const freshSalt = await this.get(key);
336336
if (!freshSalt) {
337337
throw new Error(`Document should exist but was not found after race condition for key: ${key}`);
338338
}
339339
return freshSalt;
340340
}
341-
341+
342342
// Re-throw other errors
343-
logger.error({event: 'FirestoreSaltStoreGetOrCreateFailed', error});
344-
throw error;
343+
logger.error({event: 'FirestoreSaltStoreGetOrCreateFailed', err});
344+
throw err;
345345
}
346346
}
347347
}

src/services/user-signature/UserSignatureService.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ export class UserSignatureService {
3838
try {
3939
const deletedCount = await this.saltStore.cleanup();
4040
logger.info({event: 'SaltCleanupCompleted', deletedCount});
41-
} catch (error) {
42-
logger.error({event: 'SaltCleanupFailed', error});
41+
} catch (err) {
42+
logger.error({event: 'SaltCleanupFailed', err});
4343
}
4444
};
4545

test/unit/services/user-signature/UserSignatureService.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -309,7 +309,7 @@ describe('UserSignatureService', () => {
309309
await timeoutCallback();
310310

311311
expect(cleanupSpy).toHaveBeenCalledOnce();
312-
expect(loggerErrorSpy).toHaveBeenCalledWith({event: 'SaltCleanupFailed', error});
312+
expect(loggerErrorSpy).toHaveBeenCalledWith({event: 'SaltCleanupFailed', err: error});
313313

314314
service.stopCleanupScheduler();
315315
});

0 commit comments

Comments
 (0)