Revert rate limit on client

This commit is contained in:
Sandeep Somavarapu 2020-05-18 11:40:55 +02:00
parent fe91848d95
commit 23ff77487e
2 changed files with 8 additions and 19 deletions

View file

@ -6,7 +6,7 @@
import { timeout, Delayer } from 'vs/base/common/async';
import { Event, Emitter } from 'vs/base/common/event';
import { Disposable } from 'vs/base/common/lifecycle';
import { IUserDataSyncLogService, IUserDataSyncService, SyncStatus, IUserDataAutoSyncService, UserDataSyncError, UserDataSyncErrorCode, IUserDataSyncEnablementService, ALL_SYNC_RESOURCES } from 'vs/platform/userDataSync/common/userDataSync';
import { IUserDataSyncLogService, IUserDataSyncService, SyncStatus, IUserDataAutoSyncService, UserDataSyncError, UserDataSyncErrorCode, IUserDataSyncEnablementService } from 'vs/platform/userDataSync/common/userDataSync';
import { IAuthenticationTokenService } from 'vs/platform/authentication/common/authentication';
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
@ -21,7 +21,6 @@ export class UserDataAutoSyncService extends Disposable implements IUserDataAuto
private enabled: boolean = this.getDefaultEnablementValue();
private successiveFailures: number = 0;
private lastSyncTriggerTime: number | undefined = undefined;
private readonly syncDelayer: Delayer<void>;
private readonly _onError: Emitter<UserDataSyncError> = this._register(new Emitter<UserDataSyncError>());
@ -70,7 +69,6 @@ export class UserDataAutoSyncService extends Disposable implements IUserDataAuto
private async sync(loop: boolean, auto: boolean): Promise<void> {
if (this.enabled) {
try {
this.lastSyncTriggerTime = new Date().getTime();
await this.userDataSyncService.sync();
this.resetFailures();
} catch (e) {
@ -124,17 +122,6 @@ export class UserDataAutoSyncService extends Disposable implements IUserDataAuto
return this.syncDelayer.cancel();
}
/*
If sync is not triggered by sync resource (triggered by other sources like window focus etc.,)
then limit sync to once per minute
*/
const isNotTriggeredBySyncResource = ALL_SYNC_RESOURCES.every(syncResource => sources.indexOf(syncResource) === -1);
if (isNotTriggeredBySyncResource && this.lastSyncTriggerTime
&& Math.round((new Date().getTime() - this.lastSyncTriggerTime) / 1000) < 60) {
this.logService.debug('Auto Sync Skipped: Limited to once per minute.');
return;
}
this.sources.push(...sources);
return this.syncDelayer.trigger(() => {
this.telemetryService.publicLog2<{ sources: string[] }, AutoSyncClassification>('sync/triggered', { sources: this.sources });

View file

@ -57,7 +57,6 @@ suite('UserDataAutoSyncService', () => {
await testObject.triggerAutoSync([SyncResource.Settings]);
}
// Make sure only one request is made
assert.deepEqual(target.requests, [
{ type: 'GET', url: `${target.url}/v1/manifest`, headers: {} },
{ type: 'GET', url: `${target.url}/v1/manifest`, headers: {} },
@ -85,7 +84,7 @@ suite('UserDataAutoSyncService', () => {
assert.deepEqual(target.requests, [{ type: 'GET', url: `${target.url}/v1/manifest`, headers: {} }]);
});
test('test auto sync with non sync resource change does not trigger continuous syncs', async () => {
test('test auto sync with non sync resource change triggers sync for every trigger', async () => {
// Setup the client
const target = new UserDataSyncTestServer();
const client = disposableStore.add(new UserDataSyncClient(target));
@ -99,12 +98,15 @@ suite('UserDataAutoSyncService', () => {
const testObject: UserDataAutoSyncService = client.instantiationService.createInstance(TestUserDataAutoSyncService);
// Trigger auto sync with window focus multiple times
for (let counter = 0; counter < 100; counter++) {
for (let counter = 0; counter < 3; counter++) {
await testObject.triggerAutoSync(['windowFocus']);
}
// Make sure only one request is made
assert.deepEqual(target.requests, [{ type: 'GET', url: `${target.url}/v1/manifest`, headers: {} }]);
assert.deepEqual(target.requests, [
{ type: 'GET', url: `${target.url}/v1/manifest`, headers: {} },
{ type: 'GET', url: `${target.url}/v1/manifest`, headers: {} },
{ type: 'GET', url: `${target.url}/v1/manifest`, headers: {} }
]);
});