@@ -87,8 +87,27 @@ export class Telemetry {
8787 public async close ( ) : Promise < void > {
8888 this . isBufferingEvents = false ;
8989
90+ this . session . logger . debug ( {
91+ id : LogId . telemetryClose ,
92+ message : `Closing telemetry and flushing ${ this . eventCache . size } events` ,
93+ context : "telemetry" ,
94+ } ) ;
95+
9096 // Wait up to 5 seconds for events to be sent before closing, but don't throw if it times out
91- await Promise . race ( [ new Promise ( ( resolve ) => setTimeout ( resolve , 5000 ) ) , this . emit ( [ ] ) ] ) ;
97+ const flushTimeout = 5000 ;
98+ await Promise . race ( [
99+ new Promise < void > ( ( resolve ) =>
100+ setTimeout ( ( ) => {
101+ this . session . logger . debug ( {
102+ id : LogId . telemetryClose ,
103+ message : `Failed to flush remaining events within ${ flushTimeout } ms timeout` ,
104+ context : "telemetry" ,
105+ } ) ;
106+ resolve ( ) ;
107+ } , flushTimeout )
108+ ) ,
109+ this . emit ( [ ] ) ,
110+ ] ) ;
92111 }
93112
94113 /**
@@ -151,7 +170,7 @@ export class Telemetry {
151170
152171 try {
153172 const cachedEvents = this . eventCache . getEvents ( ) ;
154- const allEvents = [ ...cachedEvents , ...events ] ;
173+ const allEvents = [ ...cachedEvents . map ( ( e ) => e . event ) , ...events ] ;
155174
156175 this . session . logger . debug ( {
157176 id : LogId . telemetryEmitStart ,
@@ -161,11 +180,11 @@ export class Telemetry {
161180
162181 const result = await this . sendEvents ( this . session . apiClient , allEvents ) ;
163182 if ( result . success ) {
164- this . eventCache . clearEvents ( ) ;
183+ this . eventCache . removeEvents ( cachedEvents . map ( ( e ) => e . id ) ) ;
165184 this . session . logger . debug ( {
166185 id : LogId . telemetryEmitSuccess ,
167186 context : "telemetry" ,
168- message : `Sent ${ allEvents . length } events successfully: ${ JSON . stringify ( allEvents , null , 2 ) } ` ,
187+ message : `Sent ${ allEvents . length } events successfully: ${ JSON . stringify ( allEvents ) } ` ,
169188 } ) ;
170189 this . events . emit ( "events-emitted" ) ;
171190 return ;
0 commit comments