Skip to content

Commit a5b1a42

Browse files
Merge pull request #31 from powersync-ja/fix/upload-retry-delay
[Fix] Upload crud delay
2 parents 2bf2f24 + 1b612d7 commit a5b1a42

File tree

3 files changed

+47
-1
lines changed

3 files changed

+47
-1
lines changed

.changeset/smart-suns-divide.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@journeyapps/powersync-sdk-common': patch
3+
---
4+
5+
Fixed streaming sync implementation not delaying CRUD upload retries.

packages/powersync-sdk-common/src/client/sync/stream/AbstractStreamingSyncImplementation.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ export abstract class AbstractStreamingSyncImplementation extends BaseObserver<S
9999
}
100100
} catch (ex) {
101101
this.updateSyncStatus(false);
102+
await this.delayRetry();
102103
this.isUploadingCrud = false;
103104
break;
104105
}
@@ -133,7 +134,7 @@ export abstract class AbstractStreamingSyncImplementation extends BaseObserver<S
133134
this.logger.error(ex);
134135
this.updateSyncStatus(false);
135136
// On error, wait a little before retrying
136-
await new Promise((resolve) => setTimeout(resolve, this.options.retryDelayMs));
137+
await this.delayRetry();
137138
}
138139
}
139140
}
@@ -309,4 +310,8 @@ export abstract class AbstractStreamingSyncImplementation extends BaseObserver<S
309310
this.iterateListeners((cb) => cb.statusChanged?.(new SyncStatus(this.isConnected, this.lastSyncedAt)));
310311
}
311312
}
313+
314+
private async delayRetry() {
315+
return new Promise((resolve) => setTimeout(resolve, this.options.retryDelayMs));
316+
}
312317
}

yarn.lock

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2066,6 +2066,42 @@
20662066
"@types/yargs" "^17.0.8"
20672067
chalk "^4.0.0"
20682068

2069+
"@journeyapps/[email protected]":
2070+
version "0.0.3"
2071+
resolved "https://registry.npmjs.org/@journeyapps/powersync-attachments/-/powersync-attachments-0.0.3.tgz#9c33da5140edafeb5b054ced6a7365869e14633e"
2072+
integrity sha512-Aq0O7nFRfvxTddxzY4hJ7mWKl2oz/Ube8URZ+EbPo5rjLm3sTV+UKOZ54eS3bBqYjqAgeVUwCSphkWzs00BClQ==
2073+
dependencies:
2074+
"@journeyapps/powersync-sdk-common" "0.1.2"
2075+
2076+
"@journeyapps/[email protected]":
2077+
version "0.1.1"
2078+
resolved "https://registry.npmjs.org/@journeyapps/powersync-react/-/powersync-react-0.1.1.tgz#60d12b425a3d16d0f556f89998fb706bc0ba51bf"
2079+
integrity sha512-bAJDSsyXjE8dbLqGVaKp7UOD09T3piKS1/uYl1j0i/nZjLb1PV5IfBDrO7nzMUj9v38TpT3gW8FitcnnMMCkxw==
2080+
dependencies:
2081+
"@journeyapps/powersync-sdk-common" "0.1.2"
2082+
2083+
"@journeyapps/[email protected]":
2084+
version "0.1.2"
2085+
resolved "https://registry.npmjs.org/@journeyapps/powersync-sdk-common/-/powersync-sdk-common-0.1.2.tgz#309bdb049d2939f05a06d20ab526de39a8539895"
2086+
integrity sha512-lQExqszNY7bK8HYlNDDsO2mtK2yb3mRAQPVOSMsgo1ssQmxMP9RGdII+HvPkEIprcEkmNogS8AhY6QN/U7wq8w==
2087+
dependencies:
2088+
async-mutex "^0.4.0"
2089+
can-ndjson-stream "^1.0.2"
2090+
event-iterator "^2.0.0"
2091+
js-logger "^1.6.1"
2092+
lodash "^4.17.21"
2093+
object-hash "^3.0.0"
2094+
uuid "^3.0.0"
2095+
2096+
"@journeyapps/[email protected]":
2097+
version "0.1.2"
2098+
resolved "https://registry.npmjs.org/@journeyapps/powersync-sdk-react-native/-/powersync-sdk-react-native-0.1.2.tgz#8f44e37e9bf5397228c0ca8c09770c6919795ea8"
2099+
integrity sha512-SA3qdRQOizcYyOzeGPaH838Kr+jSmEU+GcOo8Ze9u6gsY6zazwQyyCUJGqOgyMqnOTXGoX7HGNXXacVenLbLkA==
2100+
dependencies:
2101+
"@journeyapps/powersync-react" "0.1.1"
2102+
"@journeyapps/powersync-sdk-common" "0.1.2"
2103+
async-lock "^1.4.0"
2104+
20692105
"@journeyapps/[email protected]":
20702106
version "0.1.1"
20712107
resolved "https://registry.npmjs.org/@journeyapps/react-native-quick-sqlite/-/react-native-quick-sqlite-0.1.1.tgz#94145dba13b177f6aa42552754e56ecc3b2e7f17"

0 commit comments

Comments
 (0)