@filen/sync 0.2.1 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.node-version +1 -1
- package/dist/ignorer.d.ts +6 -0
- package/dist/ignorer.js +43 -24
- package/dist/ignorer.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/deltas.d.ts +58 -2
- package/dist/lib/deltas.js +693 -108
- package/dist/lib/deltas.js.map +1 -1
- package/dist/lib/environment.d.ts +47 -0
- package/dist/lib/environment.js +71 -0
- package/dist/lib/environment.js.map +1 -0
- package/dist/lib/filesystems/dirTree.d.ts +70 -0
- package/dist/lib/filesystems/dirTree.js +157 -0
- package/dist/lib/filesystems/dirTree.js.map +1 -0
- package/dist/lib/filesystems/local.d.ts +18 -8
- package/dist/lib/filesystems/local.js +166 -160
- package/dist/lib/filesystems/local.js.map +1 -1
- package/dist/lib/filesystems/remote.d.ts +12 -5
- package/dist/lib/filesystems/remote.js +226 -172
- package/dist/lib/filesystems/remote.js.map +1 -1
- package/dist/lib/ipc.js +1 -2
- package/dist/lib/ipc.js.map +1 -1
- package/dist/lib/lock.js +19 -12
- package/dist/lib/lock.js.map +1 -1
- package/dist/lib/logger.js +9 -7
- package/dist/lib/logger.js.map +1 -1
- package/dist/lib/state.js +159 -63
- package/dist/lib/state.js.map +1 -1
- package/dist/lib/sync.d.ts +18 -0
- package/dist/lib/sync.js +165 -96
- package/dist/lib/sync.js.map +1 -1
- package/dist/lib/tasks.d.ts +7 -8
- package/dist/lib/tasks.js +38 -45
- package/dist/lib/tasks.js.map +1 -1
- package/dist/semaphore.d.ts +1 -0
- package/dist/semaphore.js +22 -5
- package/dist/semaphore.js.map +1 -1
- package/dist/utils.js +51 -35
- package/dist/utils.js.map +1 -1
- package/eslint.config.mjs +36 -0
- package/package.json +19 -15
- package/tests/bench/collapse.bench.ts +114 -0
- package/tests/bench/cycle.bench.ts +111 -0
- package/tests/bench/deltas.bench.ts +151 -0
- package/tests/bench/harness/fake-sync.ts +32 -0
- package/tests/bench/harness/measure.ts +276 -0
- package/tests/bench/harness/scale-world.ts +160 -0
- package/tests/bench/harness/trees.ts +275 -0
- package/tests/bench/local-scan.bench.ts +74 -0
- package/tests/bench/longrun.bench.ts +130 -0
- package/tests/bench/profile-incremental.ts +90 -0
- package/tests/bench/remote-build.bench.ts +104 -0
- package/tests/bench/render.ts +14 -0
- package/tests/bench/semaphore.bench.ts +79 -0
- package/tests/bench/state.bench.ts +85 -0
- package/tests/bench/tasks-dispatch.bench.ts +156 -0
- package/tests/conformance/virtual-fs.test.ts +213 -0
- package/tests/e2e/backup.e2e.test.ts +130 -0
- package/tests/e2e/confirm.e2e.test.ts +191 -0
- package/tests/e2e/conflict.e2e.test.ts +261 -0
- package/tests/e2e/edge.e2e.test.ts +339 -0
- package/tests/e2e/harness/account.ts +104 -0
- package/tests/e2e/harness/assert.ts +127 -0
- package/tests/e2e/harness/drive.ts +88 -0
- package/tests/e2e/harness/mutations.ts +249 -0
- package/tests/e2e/harness/world.ts +222 -0
- package/tests/e2e/ignore.e2e.test.ts +123 -0
- package/tests/e2e/lifecycle.e2e.test.ts +290 -0
- package/tests/e2e/modes.e2e.test.ts +215 -0
- package/tests/e2e/platform.e2e.test.ts +157 -0
- package/tests/e2e/property.e2e.test.ts +163 -0
- package/tests/e2e/races.e2e.test.ts +90 -0
- package/tests/e2e/regressions.e2e.test.ts +212 -0
- package/tests/e2e/resilience.e2e.test.ts +231 -0
- package/tests/e2e/special.e2e.test.ts +185 -0
- package/tests/e2e/state.e2e.test.ts +229 -0
- package/tests/e2e/sync.e2e.test.ts +222 -0
- package/tests/fakes/fake-cloud.test.ts +267 -0
- package/tests/fakes/fake-cloud.ts +1094 -0
- package/tests/fakes/virtual-fs.ts +354 -0
- package/tests/harness/known-bug.ts +17 -0
- package/tests/harness/mutations.ts +65 -0
- package/tests/harness/runner.ts +141 -0
- package/tests/harness/snapshot.ts +113 -0
- package/tests/harness/world.ts +187 -0
- package/tests/scenarios/a-baseline.test.ts +107 -0
- package/tests/scenarios/aa-races.test.ts +258 -0
- package/tests/scenarios/ab-mode-property.test.ts +189 -0
- package/tests/scenarios/ac-platform.test.ts +320 -0
- package/tests/scenarios/ad-unicode-normalization.test.ts +67 -0
- package/tests/scenarios/b-additions.test.ts +160 -0
- package/tests/scenarios/c-modifications.test.ts +194 -0
- package/tests/scenarios/d-deletions.test.ts +259 -0
- package/tests/scenarios/e-rename-move.test.ts +288 -0
- package/tests/scenarios/f-ignore-filter.test.ts +346 -0
- package/tests/scenarios/g-large-deletion.test.ts +277 -0
- package/tests/scenarios/h-resilience.test.ts +167 -0
- package/tests/scenarios/i-lifecycle.test.ts +353 -0
- package/tests/scenarios/j-state-cache.test.ts +264 -0
- package/tests/scenarios/k-scale.test.ts +202 -0
- package/tests/scenarios/l-property.test.ts +145 -0
- package/tests/scenarios/m-golden.test.ts +452 -0
- package/tests/scenarios/o-task-errors.test.ts +497 -0
- package/tests/scenarios/p-remote-originated.test.ts +306 -0
- package/tests/scenarios/q-cycle-lifecycle.test.ts +234 -0
- package/tests/scenarios/r-rename-stress.test.ts +208 -0
- package/tests/scenarios/s-upgrade-transition.test.ts +171 -0
- package/tests/scenarios/t-type-change.test.ts +144 -0
- package/tests/scenarios/u-mode-local-to-cloud.test.ts +347 -0
- package/tests/scenarios/v-mode-local-backup.test.ts +201 -0
- package/tests/scenarios/w-mode-cloud-to-local.test.ts +304 -0
- package/tests/scenarios/x-mode-cloud-backup.test.ts +201 -0
- package/tests/scenarios/y-conflict-matrix.test.ts +292 -0
- package/tests/scenarios/z-cross-ops.test.ts +285 -0
- package/tests/scenarios/zb-dir-rename-cross.test.ts +296 -0
- package/tests/scenarios/zc-crash-recovery.test.ts +189 -0
- package/tests/scenarios/zd-inode-reuse.test.ts +118 -0
- package/tests/scenarios/ze-move-into-new-dir.test.ts +130 -0
- package/tests/scenarios/zf-remote-change-unchanged-local.test.ts +81 -0
- package/tests/scenarios/zg-edit-during-scan.test.ts +68 -0
- package/tests/scenarios/zh-dir-delete-vs-child.test.ts +104 -0
- package/tests/scenarios/zi-smoke-test-outage.test.ts +78 -0
- package/tests/scenarios/zj-trash-cleanup.test.ts +133 -0
- package/tests/scenarios/zk-ignore-asymmetry.test.ts +150 -0
- package/tests/scenarios/zl-mode-atomicity.test.ts +104 -0
- package/tests/scenarios/zm-scan-concurrency.test.ts +78 -0
- package/tests/scenarios/zn-delta-ordering.test.ts +130 -0
- package/tests/scenarios/zo-download-temp-cleanup.test.ts +65 -0
- package/tests/unit/collapse-deltas.test.ts +276 -0
- package/tests/unit/dir-tree.test.ts +159 -0
- package/tests/unit/icloud.test.ts +115 -0
- package/tests/unit/ignorer-cache-regression.test.ts +70 -0
- package/tests/unit/ignorer.test.ts +63 -0
- package/tests/unit/ipc-lock.test.ts +438 -0
- package/tests/unit/lock.test.ts +135 -0
- package/tests/unit/n-unit.test.ts +632 -0
- package/tests/unit/remote-tree-unordered-regression.test.ts +101 -0
- package/tests/unit/semaphore-regression.test.ts +140 -0
- package/tests/unit/state-refencode-regression.test.ts +224 -0
- package/tests/unit/state.test.ts +809 -0
- package/tests/unit/tasks-dispatch-order-regression.test.ts +53 -0
- package/tests/unit/worker-api.test.ts +379 -0
- package/tsconfig.json +10 -1
- package/tsconfig.test.json +12 -0
- package/tsconfig.tsbuildinfo +1 -0
- package/vitest.bench.config.ts +32 -0
- package/vitest.config.ts +27 -0
- package/vitest.e2e.config.ts +68 -0
- package/.eslintrc +0 -16
- package/jest.config.js +0 -5
package/dist/lib/state.js
CHANGED
|
@@ -12,7 +12,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
13
|
exports.State = void 0;
|
|
14
14
|
const path_1 = __importDefault(require("path"));
|
|
15
|
-
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
16
15
|
const utils_1 = require("../utils");
|
|
17
16
|
const readline_1 = __importDefault(require("readline"));
|
|
18
17
|
const uuid_1 = require("uuid");
|
|
@@ -60,23 +59,28 @@ class State {
|
|
|
60
59
|
currentLocalTree.inodes[oldItem.inode] = Object.assign(Object.assign({}, oldItem), { path: task.to });
|
|
61
60
|
}
|
|
62
61
|
delete currentLocalTree.tree[task.from];
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
currentLocalTree.
|
|
62
|
+
// Only a DIRECTORY carries descendants to relocate. A file rename has none, so scanning the
|
|
63
|
+
// whole tree (and every cached hash) for children of a file was pure waste — O(tree) per file
|
|
64
|
+
// rename, i.e. O(renames * tree) across a cycle that renames many scattered files. (P2)
|
|
65
|
+
if (task.type === "renameLocalDirectory") {
|
|
66
|
+
for (const oldPath in currentLocalTree.tree) {
|
|
67
|
+
if (oldPath.startsWith(task.from + "/") && oldPath !== task.from) {
|
|
68
|
+
const newPath = (0, utils_1.replacePathStartWithFromAndTo)(oldPath, task.from, task.to);
|
|
69
|
+
const oldItem = currentLocalTree.tree[oldPath];
|
|
70
|
+
if (oldItem) {
|
|
71
|
+
const item = Object.assign(Object.assign({}, oldItem), { path: newPath });
|
|
72
|
+
currentLocalTree.tree[newPath] = item;
|
|
73
|
+
delete currentLocalTree.tree[oldPath];
|
|
74
|
+
const oldItemINode = currentLocalTree.inodes[oldItem.inode];
|
|
75
|
+
if (oldItemINode) {
|
|
76
|
+
currentLocalTree.inodes[oldItem.inode] = Object.assign(Object.assign({}, oldItemINode), { path: newPath });
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
const oldItemHash = this.sync.localFileHashes[oldPath];
|
|
80
|
+
if (oldItemHash) {
|
|
81
|
+
this.sync.localFileHashes[newPath] = oldItemHash;
|
|
82
|
+
delete this.sync.localFileHashes[oldPath];
|
|
74
83
|
}
|
|
75
|
-
}
|
|
76
|
-
const oldItemHash = this.sync.localFileHashes[oldPath];
|
|
77
|
-
if (oldItemHash) {
|
|
78
|
-
this.sync.localFileHashes[newPath] = oldItemHash;
|
|
79
|
-
delete this.sync.localFileHashes[oldPath];
|
|
80
84
|
}
|
|
81
85
|
}
|
|
82
86
|
}
|
|
@@ -91,25 +95,39 @@ class State {
|
|
|
91
95
|
currentRemoteTree.uuids[oldItem.uuid] = newItem;
|
|
92
96
|
}
|
|
93
97
|
delete currentRemoteTree.tree[task.from];
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
if (
|
|
99
|
-
const
|
|
100
|
-
currentRemoteTree.tree[
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
currentRemoteTree.
|
|
98
|
+
// As with the local side: only a directory has descendants to relocate; skip the whole-tree
|
|
99
|
+
// scan for a file rename. (P2)
|
|
100
|
+
if (task.type === "renameRemoteDirectory") {
|
|
101
|
+
for (const oldPath in currentRemoteTree.tree) {
|
|
102
|
+
if (oldPath.startsWith(task.from + "/") && oldPath !== task.from) {
|
|
103
|
+
const newPath = (0, utils_1.replacePathStartWithFromAndTo)(oldPath, task.from, task.to);
|
|
104
|
+
const oldItem = currentRemoteTree.tree[oldPath];
|
|
105
|
+
if (oldItem) {
|
|
106
|
+
const newItem = Object.assign(Object.assign({}, oldItem), { path: newPath, name: path_1.default.posix.basename(newPath) });
|
|
107
|
+
currentRemoteTree.tree[newPath] = newItem;
|
|
108
|
+
delete currentRemoteTree.tree[oldPath];
|
|
109
|
+
const oldItemUUID = currentRemoteTree.uuids[oldItem.uuid];
|
|
110
|
+
if (oldItemUUID) {
|
|
111
|
+
currentRemoteTree.uuids[oldItemUUID.uuid] = Object.assign(Object.assign({}, oldItemUUID), { path: newPath, name: path_1.default.posix.basename(newPath) });
|
|
112
|
+
}
|
|
105
113
|
}
|
|
106
114
|
}
|
|
107
115
|
}
|
|
108
116
|
}
|
|
109
117
|
break;
|
|
110
118
|
}
|
|
111
|
-
case "deleteLocalDirectory":
|
|
112
119
|
case "deleteLocalFile": {
|
|
120
|
+
// A file has no descendants: remove it directly instead of scanning the whole tree, every
|
|
121
|
+
// cached hash, and every inode for children that cannot exist. (P2)
|
|
122
|
+
const item = currentLocalTree.tree[task.path];
|
|
123
|
+
delete this.sync.localFileHashes[task.path];
|
|
124
|
+
delete currentLocalTree.tree[task.path];
|
|
125
|
+
if (item) {
|
|
126
|
+
delete currentLocalTree.inodes[item.inode];
|
|
127
|
+
}
|
|
128
|
+
break;
|
|
129
|
+
}
|
|
130
|
+
case "deleteLocalDirectory": {
|
|
113
131
|
delete this.sync.localFileHashes[task.path];
|
|
114
132
|
delete currentLocalTree.tree[task.path];
|
|
115
133
|
for (const path in this.sync.localFileHashes) {
|
|
@@ -134,8 +152,17 @@ class State {
|
|
|
134
152
|
}
|
|
135
153
|
break;
|
|
136
154
|
}
|
|
137
|
-
case "deleteRemoteDirectory":
|
|
138
155
|
case "deleteRemoteFile": {
|
|
156
|
+
// A file has no descendants: remove it directly instead of scanning the whole tree and every
|
|
157
|
+
// uuid for children that cannot exist. (P2)
|
|
158
|
+
const item = currentRemoteTree.tree[task.path];
|
|
159
|
+
delete currentRemoteTree.tree[task.path];
|
|
160
|
+
if (item) {
|
|
161
|
+
delete currentRemoteTree.uuids[item.uuid];
|
|
162
|
+
}
|
|
163
|
+
break;
|
|
164
|
+
}
|
|
165
|
+
case "deleteRemoteDirectory": {
|
|
139
166
|
delete currentRemoteTree.tree[task.path];
|
|
140
167
|
for (const path in currentRemoteTree.tree) {
|
|
141
168
|
if (path.startsWith(task.path + "/") || path === task.path) {
|
|
@@ -222,36 +249,57 @@ class State {
|
|
|
222
249
|
};
|
|
223
250
|
}
|
|
224
251
|
async writeLargeRecordSerializedAndAtomically(destination, record) {
|
|
225
|
-
await
|
|
252
|
+
await this.sync.environment.fs.ensureDir(path_1.default.dirname(destination));
|
|
226
253
|
const tmpDestination = path_1.default.join(path_1.default.dirname(destination), `${(0, uuid_1.v4)()}.tmp`);
|
|
227
254
|
try {
|
|
228
255
|
// eslint-disable-next-line no-async-promise-executor
|
|
229
256
|
await new Promise(async (resolve, reject) => {
|
|
230
257
|
try {
|
|
231
258
|
let didError = false;
|
|
232
|
-
const stream =
|
|
259
|
+
const stream = this.sync.environment.fs.createWriteStream(tmpDestination, {
|
|
233
260
|
encoding: "utf-8"
|
|
234
261
|
});
|
|
235
262
|
stream.on("error", err => {
|
|
236
263
|
didError = true;
|
|
237
264
|
reject(err);
|
|
238
265
|
});
|
|
266
|
+
// Accumulate serialized lines into ~64KB batches and write them in one go, instead of one
|
|
267
|
+
// stream.write() (and drain check) per entry. The emitted bytes are byte-for-byte identical
|
|
268
|
+
// (same `{prop,data}\n` lines in the same order) — this only collapses N tiny writes into a
|
|
269
|
+
// handful of large ones, which on a huge tree removes the per-entry write/await overhead that
|
|
270
|
+
// dominated the per-cycle state save. (perf)
|
|
271
|
+
const FLUSH_THRESHOLD = 1 << 16;
|
|
272
|
+
let batch = "";
|
|
273
|
+
const flush = async () => {
|
|
274
|
+
if (batch.length === 0) {
|
|
275
|
+
return;
|
|
276
|
+
}
|
|
277
|
+
const chunk = batch;
|
|
278
|
+
batch = "";
|
|
279
|
+
if (!stream.write(chunk)) {
|
|
280
|
+
await new Promise(resolve => stream.once("drain", resolve));
|
|
281
|
+
}
|
|
282
|
+
};
|
|
239
283
|
for (const prop in record) {
|
|
240
284
|
if (didError) {
|
|
241
285
|
break;
|
|
242
286
|
}
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
287
|
+
// Build the line by concatenating the two stringified fields instead of allocating a
|
|
288
|
+
// `{ prop, data }` wrapper object to stringify — byte-for-byte identical output
|
|
289
|
+
// (`{"prop":<prop>,"data":<data>}`), just without the per-entry wrapper allocation. (perf)
|
|
290
|
+
batch += `{"prop":${JSON.stringify(prop)},"data":${JSON.stringify(record[prop])}}\n`;
|
|
291
|
+
if (batch.length >= FLUSH_THRESHOLD) {
|
|
292
|
+
await flush();
|
|
248
293
|
}
|
|
249
294
|
}
|
|
295
|
+
if (!didError) {
|
|
296
|
+
await flush();
|
|
297
|
+
}
|
|
250
298
|
await new Promise(resolve => stream.end(resolve));
|
|
251
299
|
if (didError) {
|
|
252
300
|
return;
|
|
253
301
|
}
|
|
254
|
-
await
|
|
302
|
+
await this.sync.environment.fs.move(tmpDestination, destination, {
|
|
255
303
|
overwrite: true
|
|
256
304
|
});
|
|
257
305
|
resolve();
|
|
@@ -262,8 +310,8 @@ class State {
|
|
|
262
310
|
});
|
|
263
311
|
}
|
|
264
312
|
finally {
|
|
265
|
-
if (await
|
|
266
|
-
await
|
|
313
|
+
if (await this.sync.environment.fs.pathExists(tmpDestination)) {
|
|
314
|
+
await this.sync.environment.fs.rm(tmpDestination, {
|
|
267
315
|
force: true,
|
|
268
316
|
maxRetries: 60 * 10,
|
|
269
317
|
recursive: true,
|
|
@@ -276,7 +324,7 @@ class State {
|
|
|
276
324
|
var _a, e_1, _b, _c;
|
|
277
325
|
const record = {};
|
|
278
326
|
const rl = readline_1.default.createInterface({
|
|
279
|
-
input:
|
|
327
|
+
input: this.sync.environment.fs.createReadStream(inputPath, {
|
|
280
328
|
encoding: "utf-8"
|
|
281
329
|
}),
|
|
282
330
|
crlfDelay: Infinity,
|
|
@@ -288,7 +336,9 @@ class State {
|
|
|
288
336
|
_c = rl_1_1.value;
|
|
289
337
|
_d = false;
|
|
290
338
|
const line = _c;
|
|
291
|
-
|
|
339
|
+
// Cheap non-empty check instead of allocating a trimmed copy per line on the load hot path; a
|
|
340
|
+
// whitespace-only line still drops harmlessly via the JSON.parse failure caught below.
|
|
341
|
+
if (line.length > 0) {
|
|
292
342
|
try {
|
|
293
343
|
const parsed = JSON.parse(line);
|
|
294
344
|
if (parsed && typeof parsed === "object" && "prop" in parsed && "data" in parsed) {
|
|
@@ -315,12 +365,12 @@ class State {
|
|
|
315
365
|
return record;
|
|
316
366
|
}
|
|
317
367
|
async saveLocalFileHashes() {
|
|
318
|
-
await
|
|
368
|
+
await this.sync.environment.fs.ensureDir(this.statePath);
|
|
319
369
|
await this.writeLargeRecordSerializedAndAtomically(this.localFileHashesPath, this.sync.localFileHashes);
|
|
320
370
|
}
|
|
321
371
|
async loadLocalFileHashes() {
|
|
322
|
-
await
|
|
323
|
-
if (!(await
|
|
372
|
+
await this.sync.environment.fs.ensureDir(this.statePath);
|
|
373
|
+
if (!(await this.sync.environment.fs.exists(this.localFileHashesPath))) {
|
|
324
374
|
return;
|
|
325
375
|
}
|
|
326
376
|
this.sync.localFileHashes = await this.readLargeRecordFromLineStream(this.localFileHashesPath);
|
|
@@ -334,7 +384,7 @@ class State {
|
|
|
334
384
|
await this.savePreviousTrees();
|
|
335
385
|
}
|
|
336
386
|
async loadPreviousTrees() {
|
|
337
|
-
await
|
|
387
|
+
await this.sync.environment.fs.ensureDir(this.statePath);
|
|
338
388
|
const dir = await fast_glob_1.default.async("**/*", {
|
|
339
389
|
dot: true,
|
|
340
390
|
onlyDirectories: false,
|
|
@@ -343,7 +393,7 @@ class State {
|
|
|
343
393
|
cwd: this.statePath,
|
|
344
394
|
followSymbolicLinks: false,
|
|
345
395
|
deep: 0,
|
|
346
|
-
fs:
|
|
396
|
+
fs: this.sync.environment.globFs,
|
|
347
397
|
suppressErrors: true,
|
|
348
398
|
stats: false,
|
|
349
399
|
unique: true,
|
|
@@ -354,7 +404,7 @@ class State {
|
|
|
354
404
|
continue;
|
|
355
405
|
}
|
|
356
406
|
if (entry.trim().endsWith(".tmp")) {
|
|
357
|
-
await
|
|
407
|
+
await this.sync.environment.fs.rm(path_1.default.join(this.statePath, entry), {
|
|
358
408
|
force: true,
|
|
359
409
|
maxRetries: 60 * 10,
|
|
360
410
|
recursive: true,
|
|
@@ -362,10 +412,15 @@ class State {
|
|
|
362
412
|
});
|
|
363
413
|
}
|
|
364
414
|
}
|
|
365
|
-
if (!(await
|
|
366
|
-
!(await
|
|
367
|
-
|
|
368
|
-
|
|
415
|
+
if (!(await this.sync.environment.fs.exists(this.previousLocalTreePath)) ||
|
|
416
|
+
!(await this.sync.environment.fs.exists(this.previousRemoteTreePath)) ||
|
|
417
|
+
// Previously this duplicated the remote-tree check and never looked at the local INODES file,
|
|
418
|
+
// even though it is read unconditionally below — a missing/partially-written inodes file then
|
|
419
|
+
// passed the completeness gate and threw ENOENT mid-load, bricking the whole state load. All four
|
|
420
|
+
// persisted files must exist for the base to be usable; otherwise treat the state as empty and
|
|
421
|
+
// re-derive.
|
|
422
|
+
!(await this.sync.environment.fs.exists(this.previousLocalINodesPath)) ||
|
|
423
|
+
!(await this.sync.environment.fs.exists(this.previousRemoteUUIDsPath))) {
|
|
369
424
|
this.sync.isPreviousSavedTreeStateEmpty = true;
|
|
370
425
|
return;
|
|
371
426
|
}
|
|
@@ -373,48 +428,89 @@ class State {
|
|
|
373
428
|
const previousRemoteTree = await this.readLargeRecordFromLineStream(this.previousRemoteTreePath);
|
|
374
429
|
this.sync.isPreviousSavedTreeStateEmpty = false;
|
|
375
430
|
this.sync.previousLocalTree.tree = previousLocalTree;
|
|
376
|
-
this.sync.previousLocalTree.inodes = await this.readLargeRecordFromLineStream(this.previousLocalINodesPath);
|
|
377
431
|
this.sync.previousRemoteTree.tree = previousRemoteTree;
|
|
378
|
-
|
|
432
|
+
// Rebuild the inode/uuid indexes from the loaded trees instead of parsing the two sibling index
|
|
433
|
+
// files. Every item carries its own inode/uuid, so tree -> index is an exact reconstruction of what
|
|
434
|
+
// the scan built (and what those files held) — last-writer-wins on a shared inode/uuid matches the
|
|
435
|
+
// build order, which the trees preserve — while skipping a full parse of two N-entry files on every
|
|
436
|
+
// restart. The index files are still required to EXIST (the gate above) and are written as compact
|
|
437
|
+
// path-refs by savePreviousTrees. Back-compat: an OLD on-disk state whose index files hold full items
|
|
438
|
+
// is simply not read here and rebuilt identically, so the first post-upgrade cycle stays a no-op.
|
|
439
|
+
const inodes = {};
|
|
440
|
+
for (const path in previousLocalTree) {
|
|
441
|
+
const item = previousLocalTree[path];
|
|
442
|
+
if (item) {
|
|
443
|
+
inodes[item.inode] = item;
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
this.sync.previousLocalTree.inodes = inodes;
|
|
447
|
+
const uuids = {};
|
|
448
|
+
for (const path in previousRemoteTree) {
|
|
449
|
+
const item = previousRemoteTree[path];
|
|
450
|
+
if (item) {
|
|
451
|
+
uuids[item.uuid] = item;
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
this.sync.previousRemoteTree.uuids = uuids;
|
|
379
455
|
this.sync.previousLocalTree.size = Object.keys(previousLocalTree).length;
|
|
380
456
|
this.sync.previousRemoteTree.size = Object.keys(previousRemoteTree).length;
|
|
381
457
|
}
|
|
382
458
|
async savePreviousTrees() {
|
|
383
|
-
await
|
|
459
|
+
await this.sync.environment.fs.ensureDir(this.statePath);
|
|
460
|
+
// The inode/uuid index files used to persist every FULL item — a byte-for-byte duplicate of what the
|
|
461
|
+
// two tree files already hold (each item is keyed once by path, once by inode/uuid). We now persist
|
|
462
|
+
// them as compact path-REFS (inode -> path, uuid -> path): the index files exist only so the load-time
|
|
463
|
+
// completeness gate + partial-write recovery still see four files, and loadPreviousTrees rebuilds the
|
|
464
|
+
// in-memory indexes from the tree files (every item carries its own inode/uuid). This halves the
|
|
465
|
+
// serialized bytes + CPU for two of the four files every cycle. The tree files are unchanged. (perf)
|
|
466
|
+
const localINodeRefs = {};
|
|
467
|
+
for (const inode in this.sync.previousLocalTree.inodes) {
|
|
468
|
+
const item = this.sync.previousLocalTree.inodes[inode];
|
|
469
|
+
if (item) {
|
|
470
|
+
localINodeRefs[inode] = item.path;
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
const remoteUUIDRefs = {};
|
|
474
|
+
for (const uuid in this.sync.previousRemoteTree.uuids) {
|
|
475
|
+
const item = this.sync.previousRemoteTree.uuids[uuid];
|
|
476
|
+
if (item) {
|
|
477
|
+
remoteUUIDRefs[uuid] = item.path;
|
|
478
|
+
}
|
|
479
|
+
}
|
|
384
480
|
await this.writeLargeRecordSerializedAndAtomically(this.previousLocalTreePath, this.sync.previousLocalTree.tree);
|
|
385
|
-
await this.writeLargeRecordSerializedAndAtomically(this.previousLocalINodesPath,
|
|
481
|
+
await this.writeLargeRecordSerializedAndAtomically(this.previousLocalINodesPath, localINodeRefs);
|
|
386
482
|
await this.writeLargeRecordSerializedAndAtomically(this.previousRemoteTreePath, this.sync.previousRemoteTree.tree);
|
|
387
|
-
await this.writeLargeRecordSerializedAndAtomically(this.previousRemoteUUIDsPath,
|
|
483
|
+
await this.writeLargeRecordSerializedAndAtomically(this.previousRemoteUUIDsPath, remoteUUIDRefs);
|
|
388
484
|
this.sync.isPreviousSavedTreeStateEmpty = false;
|
|
389
485
|
}
|
|
390
486
|
async clear() {
|
|
391
|
-
await
|
|
487
|
+
await this.sync.environment.fs.ensureDir(this.statePath);
|
|
392
488
|
await Promise.all([
|
|
393
|
-
|
|
489
|
+
this.sync.environment.fs.rm(this.previousLocalTreePath, {
|
|
394
490
|
force: true,
|
|
395
491
|
maxRetries: 60 * 10,
|
|
396
492
|
recursive: true,
|
|
397
493
|
retryDelay: 100
|
|
398
494
|
}),
|
|
399
|
-
|
|
495
|
+
this.sync.environment.fs.rm(this.previousLocalINodesPath, {
|
|
400
496
|
force: true,
|
|
401
497
|
maxRetries: 60 * 10,
|
|
402
498
|
recursive: true,
|
|
403
499
|
retryDelay: 100
|
|
404
500
|
}),
|
|
405
|
-
|
|
501
|
+
this.sync.environment.fs.rm(this.previousRemoteTreePath, {
|
|
406
502
|
force: true,
|
|
407
503
|
maxRetries: 60 * 10,
|
|
408
504
|
recursive: true,
|
|
409
505
|
retryDelay: 100
|
|
410
506
|
}),
|
|
411
|
-
|
|
507
|
+
this.sync.environment.fs.rm(this.previousRemoteUUIDsPath, {
|
|
412
508
|
force: true,
|
|
413
509
|
maxRetries: 60 * 10,
|
|
414
510
|
recursive: true,
|
|
415
511
|
retryDelay: 100
|
|
416
512
|
}),
|
|
417
|
-
|
|
513
|
+
this.sync.environment.fs.rm(this.localFileHashesPath, {
|
|
418
514
|
force: true,
|
|
419
515
|
maxRetries: 60 * 10,
|
|
420
516
|
recursive: true,
|
package/dist/lib/state.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/lib/state.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/lib/state.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/sync.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ import State from "./state";
|
|
|
8
8
|
import Ignorer from "../ignorer";
|
|
9
9
|
import type SyncWorker from "..";
|
|
10
10
|
import Lock from "./lock";
|
|
11
|
+
import { type SyncEnvironment } from "./environment";
|
|
11
12
|
/**
|
|
12
13
|
* Sync
|
|
13
14
|
*
|
|
@@ -17,6 +18,7 @@ import Lock from "./lock";
|
|
|
17
18
|
*/
|
|
18
19
|
export declare class Sync {
|
|
19
20
|
readonly sdk: FilenSDK;
|
|
21
|
+
readonly environment: SyncEnvironment;
|
|
20
22
|
readonly syncPair: SyncPair;
|
|
21
23
|
private isInitialized;
|
|
22
24
|
readonly localFileSystem: LocalFileSystem;
|
|
@@ -41,6 +43,7 @@ export declare class Sync {
|
|
|
41
43
|
localTrashDisabled: boolean;
|
|
42
44
|
localTreeErrors: LocalTreeError[];
|
|
43
45
|
cleaningLocalTrash: boolean;
|
|
46
|
+
cleanupLocalTrashInterval: ReturnType<typeof setInterval> | undefined;
|
|
44
47
|
isPreviousSavedTreeStateEmpty: boolean;
|
|
45
48
|
requireConfirmationOnLargeDeletion: boolean;
|
|
46
49
|
deletionConfirmationResult: "delete" | "restart" | "waiting";
|
|
@@ -59,11 +62,26 @@ export declare class Sync {
|
|
|
59
62
|
});
|
|
60
63
|
smokeTest(): Promise<void>;
|
|
61
64
|
cleanupLocalTrash(): void;
|
|
65
|
+
cleanupLocalTrashOnce(): Promise<void>;
|
|
62
66
|
initialize(): Promise<void>;
|
|
63
67
|
cleanup({ deleteLocalDbFiles }: {
|
|
64
68
|
deleteLocalDbFiles?: boolean;
|
|
65
69
|
}): Promise<void>;
|
|
66
70
|
deleteLocalSyncDbFiles(): Promise<void>;
|
|
67
71
|
private run;
|
|
72
|
+
/**
|
|
73
|
+
* Run exactly one synchronization cycle without scheduling the next one.
|
|
74
|
+
*
|
|
75
|
+
* This is the body of a single pass: error/pause gating, lock acquisition,
|
|
76
|
+
* tree diffing, delta processing, task execution and state persistence. It
|
|
77
|
+
* never throws (failures are caught and reported as a "cycleError" message)
|
|
78
|
+
* and never reschedules — {@link run} owns the self-scheduling loop. Exposed
|
|
79
|
+
* so a single cycle can be driven deterministically.
|
|
80
|
+
*
|
|
81
|
+
* @public
|
|
82
|
+
* @async
|
|
83
|
+
* @returns {Promise<void>}
|
|
84
|
+
*/
|
|
85
|
+
runCycle(): Promise<void>;
|
|
68
86
|
}
|
|
69
87
|
export default Sync;
|