Handle too many requests error from server

This commit is contained in:
Sandeep Somavarapu 2020-05-18 18:53:13 +02:00
parent 0f8f02d709
commit 7488eb6109
4 changed files with 24 additions and 1 deletions

View file

@ -88,6 +88,12 @@ export class UserDataAutoSyncService extends Disposable implements IUserDataAuto
return this.sync(loop, auto);
}
}
if (error.code === UserDataSyncErrorCode.TooManyRequests) {
this.logService.info('Auto Sync: Turned off sync because of making too many requests to server');
this.userDataSyncEnablementService.setEnablement(false);
this._onError.fire(error);
return;
}
this.logService.error(error);
this.successiveFailures++;
this._onError.fire(error);

View file

@ -346,7 +346,11 @@ export class UserDataSyncService extends Disposable implements IUserDataSyncServ
if (e instanceof UserDataSyncStoreError) {
switch (e.code) {
case UserDataSyncErrorCode.TooLarge:
this.telemetryService.publicLog2<{ source: string }, SyncClassification>('sync/errorTooLarge', { source });
this.telemetryService.publicLog2<{ source: string }, SyncClassification>(`sync/error/${UserDataSyncErrorCode.TooLarge}`, { source });
break;
case UserDataSyncErrorCode.TooManyRequests:
this.telemetryService.publicLog2(`sync/error/${UserDataSyncErrorCode.TooManyRequests}`);
break;
}
throw e;
}

View file

@ -274,6 +274,10 @@ export class UserDataSyncStoreService extends Disposable implements IUserDataSyn
throw new UserDataSyncStoreError(`${options.type} request '${options.url?.toString()}' failed because of too large payload (413).`, UserDataSyncErrorCode.TooLarge, source);
}
if (context.res.statusCode === 429) {
throw new UserDataSyncStoreError(`${options.type} request '${options.url?.toString()}' failed because of too many requests (429).`, UserDataSyncErrorCode.TooManyRequests, source);
}
return context;
}

View file

@ -294,6 +294,15 @@ export class UserDataSyncWorkbenchContribution extends Disposable implements IWo
}
});
return;
case UserDataSyncErrorCode.TooManyRequests:
this.notificationService.notify({
severity: Severity.Error,
message: localize('too many requests', "Turned off syncing because of making too many requests to server"),
actions: {
primary: [new Action('turn on sync', localize('turn on sync', "Turn on Preferences Sync..."), undefined, true, () => this.turnOn())]
}
});
return;
case UserDataSyncErrorCode.TooLarge:
if (error.resource === SyncResource.Keybindings || error.resource === SyncResource.Settings) {
this.disableSync(error.resource);