@@ -22,8 +22,9 @@ import { CancellationToken } from 'vs/base/common/cancellation';
2222import { IHeaders } from 'vs/base/parts/request/common/request' ;
2323import { generateUuid } from 'vs/base/common/uuid' ;
2424
25- type SyncClassification = {
25+ type SyncErrorClassification = {
2626 resource ?: { classification : 'SystemMetaData' , purpose : 'FeatureInsight' , isMeasurement : true } ;
27+ executionId ?: { classification : 'SystemMetaData' , purpose : 'FeatureInsight' , isMeasurement : true } ;
2728} ;
2829
2930const LAST_SYNC_TIME_KEY = 'sync.lastSyncTime' ;
@@ -103,7 +104,7 @@ export class UserDataSyncService extends Disposable implements IUserDataSyncServ
103104 this . updateLastSyncTime ( ) ;
104105 } catch ( error ) {
105106 if ( error instanceof UserDataSyncError ) {
106- this . telemetryService . publicLog2 < { resource ?: string } , SyncClassification > ( `sync/error/${ error . code } ` , { resource : error . resource } ) ;
107+ this . telemetryService . publicLog2 < { resource ?: string , executionId ?: string } , SyncErrorClassification > ( `sync/error/${ error . code } ` , { resource : error . resource } ) ;
107108 }
108109 throw error ;
109110 }
@@ -122,7 +123,7 @@ export class UserDataSyncService extends Disposable implements IUserDataSyncServ
122123 this . updateLastSyncTime ( ) ;
123124 } catch ( error ) {
124125 if ( error instanceof UserDataSyncError ) {
125- this . telemetryService . publicLog2 < { resource ?: string } , SyncClassification > ( `sync/error/${ error . code } ` , { resource : error . resource } ) ;
126+ this . telemetryService . publicLog2 < { resource ?: string , executionId ?: string } , SyncErrorClassification > ( `sync/error/${ error . code } ` , { resource : error . resource } ) ;
126127 }
127128 throw error ;
128129 }
@@ -136,8 +137,16 @@ export class UserDataSyncService extends Disposable implements IUserDataSyncServ
136137
137138 async createSyncTask ( ) : Promise < ISyncTask > {
138139 this . telemetryService . publicLog2 ( 'sync/getmanifest' ) ;
139- const syncHeaders : IHeaders = { 'X-Execution-Id' : generateUuid ( ) } ;
140- const manifest = await this . userDataSyncStoreService . manifest ( syncHeaders ) ;
140+ const executionId = generateUuid ( ) ;
141+ let manifest : IUserDataManifest | null ;
142+ try {
143+ manifest = await this . userDataSyncStoreService . manifest ( { 'X-Execution-Id' : executionId } ) ;
144+ } catch ( error ) {
145+ if ( error instanceof UserDataSyncError ) {
146+ this . telemetryService . publicLog2 < { resource ?: string , executionId ?: string } , SyncErrorClassification > ( `sync/error/${ error . code } ` , { resource : error . resource , executionId } ) ;
147+ }
148+ throw error ;
149+ }
141150
142151 let executed = false ;
143152 const that = this ;
@@ -147,12 +156,12 @@ export class UserDataSyncService extends Disposable implements IUserDataSyncServ
147156 if ( executed ) {
148157 throw new Error ( 'Can run a task only once' ) ;
149158 }
150- return that . doSync ( manifest , syncHeaders , token ) ;
159+ return that . doSync ( manifest , executionId , token ) ;
151160 }
152161 } ;
153162 }
154163
155- private async doSync ( manifest : IUserDataManifest | null , syncHeaders : IHeaders , token : CancellationToken ) : Promise < void > {
164+ private async doSync ( manifest : IUserDataManifest | null , executionId : string , token : CancellationToken ) : Promise < void > {
156165 await this . checkEnablement ( ) ;
157166
158167 if ( ! this . recoveredSettings ) {
@@ -173,6 +182,8 @@ export class UserDataSyncService extends Disposable implements IUserDataSyncServ
173182 this . setStatus ( SyncStatus . Syncing ) ;
174183 }
175184
185+ const syncHeaders : IHeaders = { 'X-Execution-Id' : executionId } ;
186+
176187 for ( const synchroniser of this . synchronisers ) {
177188 // Return if cancellation is requested
178189 if ( token . isCancellationRequested ) {
@@ -191,7 +202,7 @@ export class UserDataSyncService extends Disposable implements IUserDataSyncServ
191202 this . updateLastSyncTime ( ) ;
192203 } catch ( error ) {
193204 if ( error instanceof UserDataSyncError ) {
194- this . telemetryService . publicLog2 < { resource ?: string } , SyncClassification > ( `sync/error/${ error . code } ` , { resource : error . resource } ) ;
205+ this . telemetryService . publicLog2 < { resource ?: string , executionId ?: string } , SyncErrorClassification > ( `sync/error/${ error . code } ` , { resource : error . resource , executionId } ) ;
195206 }
196207 throw error ;
197208 } finally {
0 commit comments