Handle too many requests error from server
This commit is contained in:
parent
0f8f02d709
commit
7488eb6109
4 changed files with 24 additions and 1 deletions
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in a new issue