@@ -87,8 +87,27 @@ export class Telemetry {
87
87
public async close ( ) : Promise < void > {
88
88
this . isBufferingEvents = false ;
89
89
90
+ this . session . logger . debug ( {
91
+ id : LogId . telemetryClose ,
92
+ message : `Closing telemetry and flushing ${ this . eventCache . size } events` ,
93
+ context : "telemetry" ,
94
+ } ) ;
95
+
90
96
// 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
+ ] ) ;
92
111
}
93
112
94
113
/**
@@ -151,7 +170,7 @@ export class Telemetry {
151
170
152
171
try {
153
172
const cachedEvents = this . eventCache . getEvents ( ) ;
154
- const allEvents = [ ...cachedEvents , ...events ] ;
173
+ const allEvents = [ ...cachedEvents . map ( ( e ) => e . event ) , ...events ] ;
155
174
156
175
this . session . logger . debug ( {
157
176
id : LogId . telemetryEmitStart ,
@@ -161,11 +180,11 @@ export class Telemetry {
161
180
162
181
const result = await this . sendEvents ( this . session . apiClient , allEvents ) ;
163
182
if ( result . success ) {
164
- this . eventCache . clearEvents ( ) ;
183
+ this . eventCache . removeEvents ( cachedEvents . map ( ( e ) => e . id ) ) ;
165
184
this . session . logger . debug ( {
166
185
id : LogId . telemetryEmitSuccess ,
167
186
context : "telemetry" ,
168
- message : `Sent ${ allEvents . length } events successfully: ${ JSON . stringify ( allEvents , null , 2 ) } ` ,
187
+ message : `Sent ${ allEvents . length } events successfully: ${ JSON . stringify ( allEvents ) } ` ,
169
188
} ) ;
170
189
this . events . emit ( "events-emitted" ) ;
171
190
return ;
0 commit comments