Misaligning sync cycles (to avoid no-op cycles)
This commit is contained in:
parent
e805a1ced0
commit
cc8f817581
@ -23,13 +23,13 @@ const syncLastActivityKey = "syncLastActivity";
|
|||||||
const syncInitialFullSyncCompletedKey = "syncInitialFullSyncCompleted";
|
const syncInitialFullSyncCompletedKey = "syncInitialFullSyncCompleted";
|
||||||
|
|
||||||
// maximum time between two activities before we consider a sync crashed
|
// maximum time between two activities before we consider a sync crashed
|
||||||
const syncMaxIdleTimeout = 1000 * 20; // 20s
|
const syncMaxIdleTimeout = 1000 * 27;
|
||||||
|
|
||||||
// How often to sync the whole space
|
// How often to sync the whole space
|
||||||
const spaceSyncInterval = 10 * 1000; // Every 10s, but because of the check this may happen mid-cycle so after ~15s
|
const spaceSyncInterval = 17 * 1000; // Every 17s or so
|
||||||
|
|
||||||
// Used from Client
|
// Used from Client
|
||||||
export const pageSyncInterval = 5000;
|
export const pageSyncInterval = 6000;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The SyncService primarily wraps the SpaceSync engine but also coordinates sync between
|
* The SyncService primarily wraps the SpaceSync engine but also coordinates sync between
|
||||||
@ -143,7 +143,7 @@ export class SyncService {
|
|||||||
// Not completely safe, could have race condition on setting the syncStartTimeKey
|
// Not completely safe, could have race condition on setting the syncStartTimeKey
|
||||||
const startTime = Date.now();
|
const startTime = Date.now();
|
||||||
while (await this.isSyncing()) {
|
while (await this.isSyncing()) {
|
||||||
await sleep(250);
|
await sleep(321);
|
||||||
if (Date.now() - startTime > timeout) {
|
if (Date.now() - startTime > timeout) {
|
||||||
throw new Error("Timeout waiting for sync to finish");
|
throw new Error("Timeout waiting for sync to finish");
|
||||||
}
|
}
|
||||||
@ -158,15 +158,13 @@ export class SyncService {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this.filesScheduledForSync.add(path);
|
this.filesScheduledForSync.add(path);
|
||||||
await this.noOngoingSync(5000);
|
await this.noOngoingSync(7000);
|
||||||
await this.syncFile(path);
|
await this.syncFile(path);
|
||||||
this.filesScheduledForSync.delete(path);
|
this.filesScheduledForSync.delete(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
start() {
|
start() {
|
||||||
this.syncSpace().catch(
|
this.syncSpace().catch(console.error);
|
||||||
console.error,
|
|
||||||
);
|
|
||||||
|
|
||||||
setInterval(async () => {
|
setInterval(async () => {
|
||||||
try {
|
try {
|
||||||
|
Loading…
Reference in New Issue
Block a user