Skip to content

Commit 8ec7d9c

Browse files
committed
address comment: use in-memory cache
1 parent d92adf1 commit 8ec7d9c

File tree

2 files changed

+20
-34
lines changed

2 files changed

+20
-34
lines changed

src/telemetry/eventCache.ts

Whitespace-only changes.

src/telemetry/telemetry.ts

Lines changed: 20 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,8 @@ import config from "../config.js";
44
import logger from "../logger.js";
55
import { mongoLogId } from "mongodb-log-writer";
66
import { ApiClient } from "../common/atlas/apiClient.js";
7-
import fs from "fs/promises";
8-
import path from "path";
97
import { MACHINE_METADATA } from "./constants.js";
10-
11-
const CACHE_FILE = path.join(process.cwd(), ".telemetry-cache.json");
12-
13-
interface TelemetryError extends Error {
14-
code?: string;
15-
}
8+
import { EventCache } from "./eventCache.js";
169

1710
type EventResult = {
1811
success: boolean;
@@ -57,7 +50,6 @@ export class Telemetry {
5750
return false;
5851
}
5952

60-
// Check for DO_NOT_TRACK environment variable as per https://consoledonottrack.com/
6153
const doNotTrack = process.env.DO_NOT_TRACK;
6254
if (doNotTrack) {
6355
const value = doNotTrack.toLowerCase();
@@ -135,38 +127,34 @@ export class Telemetry {
135127
}
136128

137129
/**
138-
* Reads cached events from disk
139-
* Returns empty array if no cache exists or on read error
130+
* Reads cached events from memory
131+
* Returns empty array if no cache exists
140132
*/
141133
private async readCache(): Promise<BaseEvent[]> {
142134
try {
143-
const data = await fs.readFile(CACHE_FILE, "utf-8");
144-
return JSON.parse(data) as BaseEvent[];
135+
return EventCache.getInstance().getEvents();
145136
} catch (error) {
146-
const typedError = error as TelemetryError;
147-
if (typedError.code !== "ENOENT") {
148-
logger.warning(
149-
mongoLogId(1_000_000),
150-
"telemetry",
151-
`Error reading telemetry cache: ${typedError.message}`
152-
);
153-
}
137+
logger.warning(
138+
mongoLogId(1_000_000),
139+
"telemetry",
140+
`Error reading telemetry cache from memory: ${error instanceof Error ? error.message : String(error)}`
141+
);
154142
return [];
155143
}
156144
}
157145

158146
/**
159-
* Caches events to disk for later sending
147+
* Caches events in memory for later sending
160148
*/
161149
private async cacheEvents(events: BaseEvent[]): Promise<void> {
162150
try {
163-
await fs.writeFile(CACHE_FILE, JSON.stringify(events, null, 2));
164-
logger.debug(mongoLogId(1_000_000), "telemetry", `Cached ${events.length} events for later sending`);
151+
EventCache.getInstance().setEvents(events);
152+
logger.debug(mongoLogId(1_000_000), "telemetry", `Cached ${events.length} events in memory for later sending`);
165153
} catch (error) {
166154
logger.warning(
167155
mongoLogId(1_000_000),
168156
"telemetry",
169-
`Failed to cache telemetry events: ${error instanceof Error ? error.message : String(error)}`
157+
`Failed to cache telemetry events in memory: ${error instanceof Error ? error.message : String(error)}`
170158
);
171159
}
172160
}
@@ -176,16 +164,14 @@ export class Telemetry {
176164
*/
177165
private async clearCache(): Promise<void> {
178166
try {
179-
await fs.unlink(CACHE_FILE);
167+
EventCache.getInstance().clearEvents();
168+
logger.debug(mongoLogId(1_000_000), "telemetry", "In-memory telemetry cache cleared");
180169
} catch (error) {
181-
const typedError = error as TelemetryError;
182-
if (typedError.code !== "ENOENT") {
183-
logger.warning(
184-
mongoLogId(1_000_000),
185-
"telemetry",
186-
`Error clearing telemetry cache: ${typedError.message}`
187-
);
188-
}
170+
logger.warning(
171+
mongoLogId(1_000_000),
172+
"telemetry",
173+
`Error clearing in-memory telemetry cache: ${error instanceof Error ? error.message : String(error)}`
174+
);
189175
}
190176
}
191177
}

0 commit comments

Comments
 (0)