Skip to content

Commit f751a30

Browse files
committed
address comment: inject and use eventcache
1 parent 143f898 commit f751a30

File tree

1 file changed

+5
-58
lines changed

1 file changed

+5
-58
lines changed

src/telemetry/telemetry.ts

Lines changed: 5 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ type CommonProperties = {
2828
export class Telemetry {
2929
private readonly commonProperties: CommonProperties;
3030

31-
constructor(private readonly session: Session) {
31+
constructor(private readonly session: Session, private readonly eventCache: EventCache = EventCache.getInstance()) {
3232
this.commonProperties = {
3333
...MACHINE_METADATA,
3434
mcp_client_version: this.session.agentRunner?.version,
@@ -90,7 +90,7 @@ export class Telemetry {
9090
* Falls back to caching if both attempts fail
9191
*/
9292
private async emit(events: BaseEvent[]): Promise<void> {
93-
const cachedEvents = this.readCache();
93+
const cachedEvents = this.eventCache.getEvents();
9494
const allEvents = [...cachedEvents, ...events];
9595

9696
logger.debug(
@@ -101,13 +101,13 @@ export class Telemetry {
101101

102102
const result = await this.sendEvents(this.session.apiClient, allEvents);
103103
if (result.success) {
104-
this.clearCache();
104+
this.eventCache.clearEvents();
105105
logger.debug(mongoLogId(1_000_000), "telemetry", `Sent ${allEvents.length} events successfully`);
106106
return;
107107
}
108108

109109
logger.warning(mongoLogId(1_000_000), "telemetry", `Error sending event to client: ${result.error}`);
110-
this.cacheEvents(allEvents);
110+
this.eventCache.setEvents(allEvents);
111111
}
112112

113113
/**
@@ -124,57 +124,4 @@ export class Telemetry {
124124
};
125125
}
126126
}
127-
128-
/**
129-
* Reads cached events from memory
130-
* Returns empty array if no cache exists
131-
*/
132-
private readCache(): BaseEvent[] {
133-
try {
134-
return EventCache.getInstance().getEvents();
135-
} catch (error) {
136-
logger.warning(
137-
mongoLogId(1_000_000),
138-
"telemetry",
139-
`Error reading telemetry cache from memory: ${error instanceof Error ? error.message : String(error)}`
140-
);
141-
return [];
142-
}
143-
}
144-
145-
/**
146-
* Caches events in memory for later sending
147-
*/
148-
private cacheEvents(events: BaseEvent[]): void {
149-
try {
150-
EventCache.getInstance().setEvents(events);
151-
logger.debug(
152-
mongoLogId(1_000_000),
153-
"telemetry",
154-
`Cached ${events.length} events in memory for later sending`
155-
);
156-
} catch (error) {
157-
logger.warning(
158-
mongoLogId(1_000_000),
159-
"telemetry",
160-
`Failed to cache telemetry events in memory: ${error instanceof Error ? error.message : String(error)}`
161-
);
162-
}
163-
}
164-
165-
/**
166-
* Clears the event cache after successful sending
167-
*/
168-
private clearCache(): void {
169-
try {
170-
EventCache.getInstance().clearEvents();
171-
logger.debug(mongoLogId(1_000_000), "telemetry", "In-memory telemetry cache cleared");
172-
} catch (error) {
173-
logger.warning(
174-
mongoLogId(1_000_000),
175-
"telemetry",
176-
`Error clearing in-memory telemetry cache: ${error instanceof Error ? error.message : String(error)}`
177-
);
178-
}
179-
}
180-
}
127+
}

0 commit comments

Comments
 (0)