@syncular/server 0.0.6-158 → 0.0.6-165
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/dist/blobs/adapters/database.d.ts +26 -9
- package/dist/blobs/adapters/database.d.ts.map +1 -1
- package/dist/blobs/adapters/database.js +65 -21
- package/dist/blobs/adapters/database.js.map +1 -1
- package/dist/blobs/manager.d.ts +60 -3
- package/dist/blobs/manager.d.ts.map +1 -1
- package/dist/blobs/manager.js +227 -56
- package/dist/blobs/manager.js.map +1 -1
- package/dist/blobs/migrate.d.ts.map +1 -1
- package/dist/blobs/migrate.js +16 -8
- package/dist/blobs/migrate.js.map +1 -1
- package/dist/blobs/types.d.ts +4 -0
- package/dist/blobs/types.d.ts.map +1 -1
- package/dist/dialect/helpers.d.ts +3 -0
- package/dist/dialect/helpers.d.ts.map +1 -1
- package/dist/dialect/helpers.js +17 -0
- package/dist/dialect/helpers.js.map +1 -1
- package/dist/handlers/collection.d.ts +0 -2
- package/dist/handlers/collection.d.ts.map +1 -1
- package/dist/handlers/collection.js +5 -56
- package/dist/handlers/collection.js.map +1 -1
- package/dist/handlers/create-handler.d.ts +0 -4
- package/dist/handlers/create-handler.d.ts.map +1 -1
- package/dist/handlers/create-handler.js +6 -34
- package/dist/handlers/create-handler.js.map +1 -1
- package/dist/notify.d.ts.map +1 -1
- package/dist/notify.js +13 -37
- package/dist/notify.js.map +1 -1
- package/dist/proxy/collection.d.ts +0 -2
- package/dist/proxy/collection.d.ts.map +1 -1
- package/dist/proxy/collection.js +2 -17
- package/dist/proxy/collection.js.map +1 -1
- package/dist/proxy/handler.d.ts +1 -1
- package/dist/proxy/handler.d.ts.map +1 -1
- package/dist/proxy/handler.js +1 -2
- package/dist/proxy/handler.js.map +1 -1
- package/dist/proxy/index.d.ts +1 -1
- package/dist/proxy/index.d.ts.map +1 -1
- package/dist/proxy/index.js +1 -1
- package/dist/proxy/index.js.map +1 -1
- package/dist/proxy/oplog.d.ts.map +1 -1
- package/dist/proxy/oplog.js +1 -7
- package/dist/proxy/oplog.js.map +1 -1
- package/dist/prune.d.ts.map +1 -1
- package/dist/prune.js +1 -13
- package/dist/prune.js.map +1 -1
- package/dist/pull.d.ts.map +1 -1
- package/dist/pull.js +186 -54
- package/dist/pull.js.map +1 -1
- package/dist/push.d.ts +1 -1
- package/dist/push.d.ts.map +1 -1
- package/dist/push.js +9 -36
- package/dist/push.js.map +1 -1
- package/dist/snapshot-chunks/db-metadata.d.ts +18 -0
- package/dist/snapshot-chunks/db-metadata.d.ts.map +1 -1
- package/dist/snapshot-chunks/db-metadata.js +71 -23
- package/dist/snapshot-chunks/db-metadata.js.map +1 -1
- package/dist/snapshot-chunks.d.ts +5 -1
- package/dist/snapshot-chunks.d.ts.map +1 -1
- package/dist/snapshot-chunks.js +14 -1
- package/dist/snapshot-chunks.js.map +1 -1
- package/dist/stats.d.ts.map +1 -1
- package/dist/stats.js +1 -13
- package/dist/stats.js.map +1 -1
- package/dist/subscriptions/resolve.d.ts +1 -1
- package/dist/subscriptions/resolve.d.ts.map +1 -1
- package/dist/subscriptions/resolve.js +3 -16
- package/dist/subscriptions/resolve.js.map +1 -1
- package/dist/sync.d.ts.map +1 -1
- package/dist/sync.js +2 -4
- package/dist/sync.js.map +1 -1
- package/package.json +2 -2
- package/src/blobs/adapters/database.test.ts +7 -0
- package/src/blobs/adapters/database.ts +119 -39
- package/src/blobs/manager.ts +339 -53
- package/src/blobs/migrate.ts +16 -8
- package/src/blobs/types.ts +4 -0
- package/src/dialect/helpers.ts +19 -0
- package/src/handlers/collection.ts +17 -86
- package/src/handlers/create-handler.ts +9 -44
- package/src/notify.ts +15 -40
- package/src/proxy/collection.ts +5 -27
- package/src/proxy/handler.ts +2 -2
- package/src/proxy/index.ts +0 -2
- package/src/proxy/oplog.ts +1 -9
- package/src/prune.ts +1 -12
- package/src/pull.ts +280 -105
- package/src/push.ts +14 -43
- package/src/snapshot-chunks/db-metadata.ts +107 -27
- package/src/snapshot-chunks.ts +18 -0
- package/src/stats.ts +1 -12
- package/src/subscriptions/resolve.ts +4 -20
- package/src/sync.ts +6 -6
package/dist/blobs/manager.js
CHANGED
|
@@ -6,11 +6,69 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { parseBlobHash } from '@syncular/core';
|
|
8
8
|
import { sql } from 'kysely';
|
|
9
|
+
export const BLOB_CLEANUP_TUNING_PRESETS = {
|
|
10
|
+
server: {
|
|
11
|
+
batchSize: 500,
|
|
12
|
+
storageDeleteConcurrency: 16,
|
|
13
|
+
referenceCheckConcurrency: 24,
|
|
14
|
+
},
|
|
15
|
+
edge: {
|
|
16
|
+
batchSize: 100,
|
|
17
|
+
storageDeleteConcurrency: 4,
|
|
18
|
+
referenceCheckConcurrency: 8,
|
|
19
|
+
},
|
|
20
|
+
};
|
|
9
21
|
/**
|
|
10
22
|
* Create a blob manager for handling server-side blob operations.
|
|
11
23
|
*/
|
|
12
24
|
export function createBlobManager(options) {
|
|
13
|
-
const { db, adapter, defaultExpiresIn = 3600, uploadTtlSeconds = 86400, } = options;
|
|
25
|
+
const { db, adapter, defaultExpiresIn = 3600, uploadTtlSeconds = 86400, cleanupTuning, } = options;
|
|
26
|
+
function positiveIntOrDefault(value, fallback) {
|
|
27
|
+
if (value === undefined)
|
|
28
|
+
return fallback;
|
|
29
|
+
if (!Number.isFinite(value))
|
|
30
|
+
return fallback;
|
|
31
|
+
const normalized = Math.trunc(value);
|
|
32
|
+
return normalized > 0 ? normalized : fallback;
|
|
33
|
+
}
|
|
34
|
+
function resolvePartitionId(partitionId) {
|
|
35
|
+
return partitionId ?? 'default';
|
|
36
|
+
}
|
|
37
|
+
function toStoragePartitionOptions(partitionId) {
|
|
38
|
+
if (partitionId === 'default')
|
|
39
|
+
return {};
|
|
40
|
+
return { partitionId };
|
|
41
|
+
}
|
|
42
|
+
const CLEANUP_BATCH_SIZE = positiveIntOrDefault(cleanupTuning?.batchSize, 250);
|
|
43
|
+
const STORAGE_DELETE_CONCURRENCY = positiveIntOrDefault(cleanupTuning?.storageDeleteConcurrency, 8);
|
|
44
|
+
const REFERENCE_CHECK_CONCURRENCY = positiveIntOrDefault(cleanupTuning?.referenceCheckConcurrency, 16);
|
|
45
|
+
async function runWithConcurrency(items, concurrency, worker) {
|
|
46
|
+
if (items.length === 0)
|
|
47
|
+
return;
|
|
48
|
+
const workerCount = Math.max(1, Math.min(concurrency, items.length));
|
|
49
|
+
let nextIndex = 0;
|
|
50
|
+
async function runWorker() {
|
|
51
|
+
while (nextIndex < items.length) {
|
|
52
|
+
const index = nextIndex;
|
|
53
|
+
nextIndex += 1;
|
|
54
|
+
const item = items[index];
|
|
55
|
+
if (item === undefined)
|
|
56
|
+
continue;
|
|
57
|
+
await worker(item);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
await Promise.all(Array.from({ length: workerCount }, () => runWorker()));
|
|
61
|
+
}
|
|
62
|
+
async function deleteUploadRowsByHashes(partitionId, hashes) {
|
|
63
|
+
if (hashes.length === 0)
|
|
64
|
+
return 0;
|
|
65
|
+
const deletedResult = await sql `
|
|
66
|
+
delete from ${sql.table('sync_blob_uploads')}
|
|
67
|
+
where partition_id = ${partitionId}
|
|
68
|
+
and hash in (${sql.join(hashes)})
|
|
69
|
+
`.execute(db);
|
|
70
|
+
return Number(deletedResult.numAffectedRows ?? 0);
|
|
71
|
+
}
|
|
14
72
|
return {
|
|
15
73
|
/**
|
|
16
74
|
* Initiate a blob upload.
|
|
@@ -19,18 +77,22 @@ export function createBlobManager(options) {
|
|
|
19
77
|
*/
|
|
20
78
|
async initiateUpload(opts) {
|
|
21
79
|
const { hash, size, mimeType, actorId } = opts;
|
|
80
|
+
const partitionId = resolvePartitionId(opts.partitionId);
|
|
81
|
+
const storagePartitionOptions = toStoragePartitionOptions(partitionId);
|
|
22
82
|
// Validate hash format
|
|
23
83
|
if (!parseBlobHash(hash)) {
|
|
24
84
|
throw new BlobValidationError('Invalid blob hash format');
|
|
25
85
|
}
|
|
26
86
|
// Check if blob already exists (deduplication)
|
|
27
|
-
const exists = await adapter.exists(hash);
|
|
87
|
+
const exists = await adapter.exists(hash, storagePartitionOptions);
|
|
28
88
|
if (exists) {
|
|
29
89
|
// Also check if we have a complete upload record
|
|
30
90
|
const existingResult = await sql `
|
|
31
91
|
select status
|
|
32
92
|
from ${sql.table('sync_blob_uploads')}
|
|
33
|
-
where
|
|
93
|
+
where partition_id = ${partitionId}
|
|
94
|
+
and hash = ${hash}
|
|
95
|
+
and status = 'complete'
|
|
34
96
|
limit 1
|
|
35
97
|
`.execute(db);
|
|
36
98
|
const existing = existingResult.rows[0];
|
|
@@ -42,6 +104,7 @@ export function createBlobManager(options) {
|
|
|
42
104
|
const existsCompletedAt = new Date().toISOString();
|
|
43
105
|
await sql `
|
|
44
106
|
insert into ${sql.table('sync_blob_uploads')} (
|
|
107
|
+
partition_id,
|
|
45
108
|
hash,
|
|
46
109
|
size,
|
|
47
110
|
mime_type,
|
|
@@ -51,6 +114,7 @@ export function createBlobManager(options) {
|
|
|
51
114
|
completed_at
|
|
52
115
|
)
|
|
53
116
|
values (
|
|
117
|
+
${partitionId},
|
|
54
118
|
${hash},
|
|
55
119
|
${size},
|
|
56
120
|
${mimeType},
|
|
@@ -59,7 +123,7 @@ export function createBlobManager(options) {
|
|
|
59
123
|
${existsExpiresAt},
|
|
60
124
|
${existsCompletedAt}
|
|
61
125
|
)
|
|
62
|
-
on conflict (hash) do nothing
|
|
126
|
+
on conflict (partition_id, hash) do nothing
|
|
63
127
|
`.execute(db);
|
|
64
128
|
return { exists: true };
|
|
65
129
|
}
|
|
@@ -67,6 +131,7 @@ export function createBlobManager(options) {
|
|
|
67
131
|
const expiresAt = new Date(Date.now() + uploadTtlSeconds * 1000).toISOString();
|
|
68
132
|
await sql `
|
|
69
133
|
insert into ${sql.table('sync_blob_uploads')} (
|
|
134
|
+
partition_id,
|
|
70
135
|
hash,
|
|
71
136
|
size,
|
|
72
137
|
mime_type,
|
|
@@ -76,6 +141,7 @@ export function createBlobManager(options) {
|
|
|
76
141
|
completed_at
|
|
77
142
|
)
|
|
78
143
|
values (
|
|
144
|
+
${partitionId},
|
|
79
145
|
${hash},
|
|
80
146
|
${size},
|
|
81
147
|
${mimeType},
|
|
@@ -84,7 +150,7 @@ export function createBlobManager(options) {
|
|
|
84
150
|
${expiresAt},
|
|
85
151
|
${null}
|
|
86
152
|
)
|
|
87
|
-
on conflict (hash)
|
|
153
|
+
on conflict (partition_id, hash)
|
|
88
154
|
do update set
|
|
89
155
|
size = ${size},
|
|
90
156
|
mime_type = ${mimeType},
|
|
@@ -96,6 +162,7 @@ export function createBlobManager(options) {
|
|
|
96
162
|
// Generate presigned upload URL
|
|
97
163
|
const signed = await adapter.signUpload({
|
|
98
164
|
hash,
|
|
165
|
+
partitionId: storagePartitionOptions.partitionId,
|
|
99
166
|
size,
|
|
100
167
|
mimeType,
|
|
101
168
|
expiresIn: defaultExpiresIn,
|
|
@@ -113,22 +180,28 @@ export function createBlobManager(options) {
|
|
|
113
180
|
*
|
|
114
181
|
* Verifies the blob exists in storage and marks the upload as complete.
|
|
115
182
|
*/
|
|
116
|
-
async completeUpload(hash) {
|
|
183
|
+
async completeUpload(hash, options) {
|
|
184
|
+
const partitionId = resolvePartitionId(options?.partitionId);
|
|
185
|
+
const storagePartitionOptions = toStoragePartitionOptions(partitionId);
|
|
117
186
|
// Validate hash format
|
|
118
187
|
if (!parseBlobHash(hash)) {
|
|
119
188
|
return { ok: false, error: 'Invalid blob hash format' };
|
|
120
189
|
}
|
|
121
190
|
// Check upload record exists
|
|
122
191
|
const uploadResult = await sql `
|
|
123
|
-
select hash, size, mime_type, status, created_at
|
|
192
|
+
select hash, size, mime_type, status, actor_id, created_at
|
|
124
193
|
from ${sql.table('sync_blob_uploads')}
|
|
125
|
-
where hash = ${hash}
|
|
194
|
+
where partition_id = ${partitionId} and hash = ${hash}
|
|
126
195
|
limit 1
|
|
127
196
|
`.execute(db);
|
|
128
197
|
const upload = uploadResult.rows[0];
|
|
129
198
|
if (!upload) {
|
|
130
199
|
return { ok: false, error: 'Upload not found' };
|
|
131
200
|
}
|
|
201
|
+
if (options?.actorId !== undefined &&
|
|
202
|
+
upload.actor_id !== options.actorId) {
|
|
203
|
+
return { ok: false, error: 'FORBIDDEN' };
|
|
204
|
+
}
|
|
132
205
|
if (upload.status === 'complete') {
|
|
133
206
|
// Already complete - return metadata
|
|
134
207
|
return {
|
|
@@ -143,13 +216,13 @@ export function createBlobManager(options) {
|
|
|
143
216
|
};
|
|
144
217
|
}
|
|
145
218
|
// Verify blob exists in storage
|
|
146
|
-
const exists = await adapter.exists(hash);
|
|
219
|
+
const exists = await adapter.exists(hash, storagePartitionOptions);
|
|
147
220
|
if (!exists) {
|
|
148
221
|
return { ok: false, error: 'Blob not found in storage' };
|
|
149
222
|
}
|
|
150
223
|
// Optionally verify size matches
|
|
151
224
|
if (adapter.getMetadata) {
|
|
152
|
-
const meta = await adapter.getMetadata(hash);
|
|
225
|
+
const meta = await adapter.getMetadata(hash, storagePartitionOptions);
|
|
153
226
|
if (meta && meta.size !== upload.size) {
|
|
154
227
|
return {
|
|
155
228
|
ok: false,
|
|
@@ -162,7 +235,7 @@ export function createBlobManager(options) {
|
|
|
162
235
|
await sql `
|
|
163
236
|
update ${sql.table('sync_blob_uploads')}
|
|
164
237
|
set status = 'complete', completed_at = ${completedAt}
|
|
165
|
-
where hash = ${hash}
|
|
238
|
+
where partition_id = ${partitionId} and hash = ${hash}
|
|
166
239
|
`.execute(db);
|
|
167
240
|
return {
|
|
168
241
|
ok: true,
|
|
@@ -180,6 +253,8 @@ export function createBlobManager(options) {
|
|
|
180
253
|
*/
|
|
181
254
|
async getDownloadUrl(opts) {
|
|
182
255
|
const { hash } = opts;
|
|
256
|
+
const partitionId = resolvePartitionId(opts.partitionId);
|
|
257
|
+
const storagePartitionOptions = toStoragePartitionOptions(partitionId);
|
|
183
258
|
// Validate hash format
|
|
184
259
|
if (!parseBlobHash(hash)) {
|
|
185
260
|
throw new BlobNotFoundError('Invalid blob hash format');
|
|
@@ -188,7 +263,9 @@ export function createBlobManager(options) {
|
|
|
188
263
|
const uploadResult = await sql `
|
|
189
264
|
select hash, size, mime_type, status, created_at
|
|
190
265
|
from ${sql.table('sync_blob_uploads')}
|
|
191
|
-
where
|
|
266
|
+
where partition_id = ${partitionId}
|
|
267
|
+
and hash = ${hash}
|
|
268
|
+
and status = 'complete'
|
|
192
269
|
limit 1
|
|
193
270
|
`.execute(db);
|
|
194
271
|
const upload = uploadResult.rows[0];
|
|
@@ -198,6 +275,7 @@ export function createBlobManager(options) {
|
|
|
198
275
|
// Generate presigned download URL
|
|
199
276
|
const url = await adapter.signDownload({
|
|
200
277
|
hash,
|
|
278
|
+
partitionId: storagePartitionOptions.partitionId,
|
|
201
279
|
expiresIn: defaultExpiresIn,
|
|
202
280
|
});
|
|
203
281
|
const expiresAt = new Date(Date.now() + defaultExpiresIn * 1000).toISOString();
|
|
@@ -213,10 +291,50 @@ export function createBlobManager(options) {
|
|
|
213
291
|
},
|
|
214
292
|
};
|
|
215
293
|
},
|
|
294
|
+
/**
|
|
295
|
+
* Get upload record for a blob hash, including pending uploads.
|
|
296
|
+
*/
|
|
297
|
+
async getUploadRecord(hash, options) {
|
|
298
|
+
const partitionId = resolvePartitionId(options?.partitionId);
|
|
299
|
+
if (!parseBlobHash(hash)) {
|
|
300
|
+
return null;
|
|
301
|
+
}
|
|
302
|
+
const uploadResult = await sql `
|
|
303
|
+
select
|
|
304
|
+
partition_id,
|
|
305
|
+
hash,
|
|
306
|
+
size,
|
|
307
|
+
mime_type,
|
|
308
|
+
status,
|
|
309
|
+
actor_id,
|
|
310
|
+
created_at,
|
|
311
|
+
expires_at,
|
|
312
|
+
completed_at
|
|
313
|
+
from ${sql.table('sync_blob_uploads')}
|
|
314
|
+
where partition_id = ${partitionId} and hash = ${hash}
|
|
315
|
+
limit 1
|
|
316
|
+
`.execute(db);
|
|
317
|
+
const upload = uploadResult.rows[0];
|
|
318
|
+
if (!upload) {
|
|
319
|
+
return null;
|
|
320
|
+
}
|
|
321
|
+
return {
|
|
322
|
+
partitionId: upload.partition_id,
|
|
323
|
+
hash: upload.hash,
|
|
324
|
+
size: upload.size,
|
|
325
|
+
mimeType: upload.mime_type,
|
|
326
|
+
status: upload.status,
|
|
327
|
+
actorId: upload.actor_id,
|
|
328
|
+
createdAt: upload.created_at,
|
|
329
|
+
expiresAt: upload.expires_at,
|
|
330
|
+
completedAt: upload.completed_at,
|
|
331
|
+
};
|
|
332
|
+
},
|
|
216
333
|
/**
|
|
217
334
|
* Get blob metadata without generating a download URL.
|
|
218
335
|
*/
|
|
219
|
-
async getMetadata(hash) {
|
|
336
|
+
async getMetadata(hash, options) {
|
|
337
|
+
const partitionId = resolvePartitionId(options?.partitionId);
|
|
220
338
|
// Validate hash format
|
|
221
339
|
if (!parseBlobHash(hash)) {
|
|
222
340
|
return null;
|
|
@@ -224,7 +342,9 @@ export function createBlobManager(options) {
|
|
|
224
342
|
const uploadResult = await sql `
|
|
225
343
|
select hash, size, mime_type, status, created_at
|
|
226
344
|
from ${sql.table('sync_blob_uploads')}
|
|
227
|
-
where
|
|
345
|
+
where partition_id = ${partitionId}
|
|
346
|
+
and hash = ${hash}
|
|
347
|
+
and status = 'complete'
|
|
228
348
|
limit 1
|
|
229
349
|
`.execute(db);
|
|
230
350
|
const upload = uploadResult.rows[0];
|
|
@@ -242,13 +362,16 @@ export function createBlobManager(options) {
|
|
|
242
362
|
/**
|
|
243
363
|
* Check if a blob exists and is complete.
|
|
244
364
|
*/
|
|
245
|
-
async exists(hash) {
|
|
365
|
+
async exists(hash, options) {
|
|
366
|
+
const partitionId = resolvePartitionId(options?.partitionId);
|
|
246
367
|
if (!parseBlobHash(hash))
|
|
247
368
|
return false;
|
|
248
369
|
const rowResult = await sql `
|
|
249
370
|
select hash
|
|
250
371
|
from ${sql.table('sync_blob_uploads')}
|
|
251
|
-
where
|
|
372
|
+
where partition_id = ${partitionId}
|
|
373
|
+
and hash = ${hash}
|
|
374
|
+
and status = 'complete'
|
|
252
375
|
limit 1
|
|
253
376
|
`.execute(db);
|
|
254
377
|
return rowResult.rows.length > 0;
|
|
@@ -262,53 +385,100 @@ export function createBlobManager(options) {
|
|
|
262
385
|
*/
|
|
263
386
|
async cleanup(options) {
|
|
264
387
|
const now = new Date().toISOString();
|
|
265
|
-
|
|
266
|
-
const
|
|
267
|
-
select hash
|
|
268
|
-
from ${sql.table('sync_blob_uploads')}
|
|
269
|
-
where status = 'pending' and expires_at < ${now}
|
|
270
|
-
`.execute(db);
|
|
271
|
-
const expired = expiredResult.rows;
|
|
388
|
+
const partitionId = resolvePartitionId(options?.partitionId);
|
|
389
|
+
const storagePartitionOptions = toStoragePartitionOptions(partitionId);
|
|
272
390
|
let deleted = 0;
|
|
273
|
-
|
|
391
|
+
// Find and delete expired pending uploads in batches.
|
|
392
|
+
while (true) {
|
|
393
|
+
const expiredResult = await sql `
|
|
394
|
+
select hash
|
|
395
|
+
from ${sql.table('sync_blob_uploads')}
|
|
396
|
+
where partition_id = ${partitionId}
|
|
397
|
+
and status = 'pending'
|
|
398
|
+
and expires_at < ${now}
|
|
399
|
+
order by expires_at asc
|
|
400
|
+
limit ${CLEANUP_BATCH_SIZE}
|
|
401
|
+
`.execute(db);
|
|
402
|
+
const expiredHashes = expiredResult.rows
|
|
403
|
+
.map((row) => row.hash)
|
|
404
|
+
.filter((hash) => typeof hash === 'string');
|
|
405
|
+
if (expiredHashes.length === 0) {
|
|
406
|
+
break;
|
|
407
|
+
}
|
|
274
408
|
if (options?.deleteFromStorage) {
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
409
|
+
await runWithConcurrency(expiredHashes, STORAGE_DELETE_CONCURRENCY, async (hash) => {
|
|
410
|
+
try {
|
|
411
|
+
await adapter.delete(hash, storagePartitionOptions);
|
|
412
|
+
}
|
|
413
|
+
catch {
|
|
414
|
+
// Ignore storage errors during cleanup
|
|
415
|
+
}
|
|
416
|
+
});
|
|
417
|
+
}
|
|
418
|
+
deleted += await deleteUploadRowsByHashes(partitionId, expiredHashes);
|
|
419
|
+
if (expiredHashes.length < CLEANUP_BATCH_SIZE) {
|
|
420
|
+
break;
|
|
281
421
|
}
|
|
282
|
-
await sql `
|
|
283
|
-
delete from ${sql.table('sync_blob_uploads')}
|
|
284
|
-
where hash = ${row.hash}
|
|
285
|
-
`.execute(db);
|
|
286
|
-
deleted++;
|
|
287
422
|
}
|
|
288
423
|
// If reference check provided, also clean up unreferenced complete uploads
|
|
424
|
+
// in batches with bounded parallelism.
|
|
289
425
|
if (options?.isReferenced) {
|
|
290
|
-
const
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
426
|
+
const isReferenced = options.isReferenced;
|
|
427
|
+
let afterHash = null;
|
|
428
|
+
while (true) {
|
|
429
|
+
let completeRows;
|
|
430
|
+
if (afterHash === null) {
|
|
431
|
+
const completeResult = await sql `
|
|
432
|
+
select hash
|
|
433
|
+
from ${sql.table('sync_blob_uploads')}
|
|
434
|
+
where partition_id = ${partitionId}
|
|
435
|
+
and status = 'complete'
|
|
436
|
+
order by hash asc
|
|
437
|
+
limit ${CLEANUP_BATCH_SIZE}
|
|
438
|
+
`.execute(db);
|
|
439
|
+
completeRows = completeResult.rows;
|
|
440
|
+
}
|
|
441
|
+
else {
|
|
442
|
+
const completeResult = await sql `
|
|
443
|
+
select hash
|
|
444
|
+
from ${sql.table('sync_blob_uploads')}
|
|
445
|
+
where partition_id = ${partitionId}
|
|
446
|
+
and status = 'complete'
|
|
447
|
+
and hash > ${afterHash}
|
|
448
|
+
order by hash asc
|
|
449
|
+
limit ${CLEANUP_BATCH_SIZE}
|
|
450
|
+
`.execute(db);
|
|
451
|
+
completeRows = completeResult.rows;
|
|
452
|
+
}
|
|
453
|
+
const completeHashes = completeRows
|
|
454
|
+
.map((row) => row.hash)
|
|
455
|
+
.filter((hash) => typeof hash === 'string');
|
|
456
|
+
if (completeHashes.length === 0) {
|
|
457
|
+
break;
|
|
458
|
+
}
|
|
459
|
+
afterHash = completeHashes[completeHashes.length - 1] ?? afterHash;
|
|
460
|
+
const unreferencedHashes = [];
|
|
461
|
+
await runWithConcurrency(completeHashes, REFERENCE_CHECK_CONCURRENCY, async (hash) => {
|
|
462
|
+
const referenced = await isReferenced(hash);
|
|
463
|
+
if (!referenced) {
|
|
464
|
+
unreferencedHashes.push(hash);
|
|
465
|
+
}
|
|
466
|
+
});
|
|
467
|
+
if (unreferencedHashes.length > 0) {
|
|
299
468
|
if (options?.deleteFromStorage) {
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
469
|
+
await runWithConcurrency(unreferencedHashes, STORAGE_DELETE_CONCURRENCY, async (hash) => {
|
|
470
|
+
try {
|
|
471
|
+
await adapter.delete(hash, storagePartitionOptions);
|
|
472
|
+
}
|
|
473
|
+
catch {
|
|
474
|
+
// Ignore storage errors during cleanup
|
|
475
|
+
}
|
|
476
|
+
});
|
|
306
477
|
}
|
|
307
|
-
await
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
deleted++;
|
|
478
|
+
deleted += await deleteUploadRowsByHashes(partitionId, unreferencedHashes);
|
|
479
|
+
}
|
|
480
|
+
if (completeHashes.length < CLEANUP_BATCH_SIZE) {
|
|
481
|
+
break;
|
|
312
482
|
}
|
|
313
483
|
}
|
|
314
484
|
}
|
|
@@ -352,7 +522,7 @@ export function createBlobManager(options) {
|
|
|
352
522
|
*/
|
|
353
523
|
export function createBlobCleanupScheduler(options) {
|
|
354
524
|
const { blobManager, intervalMs = 3600000, // 1 hour
|
|
355
|
-
deleteFromStorage = true, isReferenced, onCleanup, } = options;
|
|
525
|
+
deleteFromStorage = true, isReferenced, partitionId, onCleanup, } = options;
|
|
356
526
|
let intervalId = null;
|
|
357
527
|
let isRunning = false;
|
|
358
528
|
const runCleanup = async () => {
|
|
@@ -364,6 +534,7 @@ export function createBlobCleanupScheduler(options) {
|
|
|
364
534
|
const result = await blobManager.cleanup({
|
|
365
535
|
deleteFromStorage,
|
|
366
536
|
isReferenced,
|
|
537
|
+
partitionId,
|
|
367
538
|
});
|
|
368
539
|
onCleanup?.({ deleted: result.deleted });
|
|
369
540
|
return { deleted: result.deleted };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/blobs/manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/blobs/manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/blobs/migrate.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC,OAAO,KAAK,EAAE,UAAU,EAAqB,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/blobs/migrate.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC,OAAO,KAAK,EAAE,UAAU,EAAqB,MAAM,SAAS,CAAC;AAoF7D;;;;;GAKG;AACH,wBAAsB,+BAA+B,CAAC,EAAE,SAAS,UAAU,EACzE,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,GACb,OAAO,CAAC,IAAI,CAAC,CAkBf;AAED;;;;;GAKG;AACH,wBAAsB,6BAA6B,CAAC,EAAE,SAAS,UAAU,EACvE,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,GACb,OAAO,CAAC,IAAI,CAAC,CAkBf;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,EAAE,SAAS,UAAU,EACxD,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,GACb,OAAO,CAAC,IAAI,CAAC,CAGf"}
|
package/dist/blobs/migrate.js
CHANGED
|
@@ -15,7 +15,8 @@ async function ensureBlobUploadsSchemaPostgres(db) {
|
|
|
15
15
|
await db.schema
|
|
16
16
|
.createTable('sync_blob_uploads')
|
|
17
17
|
.ifNotExists()
|
|
18
|
-
.addColumn('
|
|
18
|
+
.addColumn('partition_id', 'text', (col) => col.notNull())
|
|
19
|
+
.addColumn('hash', 'text', (col) => col.notNull())
|
|
19
20
|
.addColumn('size', 'bigint', (col) => col.notNull())
|
|
20
21
|
.addColumn('mime_type', 'text', (col) => col.notNull())
|
|
21
22
|
.addColumn('status', 'text', (col) => col.notNull())
|
|
@@ -23,18 +24,19 @@ async function ensureBlobUploadsSchemaPostgres(db) {
|
|
|
23
24
|
.addColumn('created_at', 'timestamptz', (col) => col.notNull().defaultTo(sql `now()`))
|
|
24
25
|
.addColumn('expires_at', 'timestamptz', (col) => col.notNull())
|
|
25
26
|
.addColumn('completed_at', 'timestamptz')
|
|
27
|
+
.addPrimaryKeyConstraint('pk_sync_blob_uploads', ['partition_id', 'hash'])
|
|
26
28
|
.execute();
|
|
27
29
|
await db.schema
|
|
28
30
|
.createIndex('idx_sync_blob_uploads_status')
|
|
29
31
|
.ifNotExists()
|
|
30
32
|
.on('sync_blob_uploads')
|
|
31
|
-
.columns(['status'])
|
|
33
|
+
.columns(['partition_id', 'status'])
|
|
32
34
|
.execute();
|
|
33
35
|
await db.schema
|
|
34
36
|
.createIndex('idx_sync_blob_uploads_expires_at')
|
|
35
37
|
.ifNotExists()
|
|
36
38
|
.on('sync_blob_uploads')
|
|
37
|
-
.columns(['expires_at'])
|
|
39
|
+
.columns(['partition_id', 'expires_at'])
|
|
38
40
|
.execute();
|
|
39
41
|
}
|
|
40
42
|
/**
|
|
@@ -47,7 +49,8 @@ async function ensureBlobUploadsSchemasSqlite(db) {
|
|
|
47
49
|
await db.schema
|
|
48
50
|
.createTable('sync_blob_uploads')
|
|
49
51
|
.ifNotExists()
|
|
50
|
-
.addColumn('
|
|
52
|
+
.addColumn('partition_id', 'text', (col) => col.notNull())
|
|
53
|
+
.addColumn('hash', 'text', (col) => col.notNull())
|
|
51
54
|
.addColumn('size', 'integer', (col) => col.notNull())
|
|
52
55
|
.addColumn('mime_type', 'text', (col) => col.notNull())
|
|
53
56
|
.addColumn('status', 'text', (col) => col.notNull())
|
|
@@ -55,18 +58,19 @@ async function ensureBlobUploadsSchemasSqlite(db) {
|
|
|
55
58
|
.addColumn('created_at', 'text', (col) => col.notNull().defaultTo(sql `(datetime('now'))`))
|
|
56
59
|
.addColumn('expires_at', 'text', (col) => col.notNull())
|
|
57
60
|
.addColumn('completed_at', 'text')
|
|
61
|
+
.addPrimaryKeyConstraint('pk_sync_blob_uploads', ['partition_id', 'hash'])
|
|
58
62
|
.execute();
|
|
59
63
|
await db.schema
|
|
60
64
|
.createIndex('idx_sync_blob_uploads_status')
|
|
61
65
|
.ifNotExists()
|
|
62
66
|
.on('sync_blob_uploads')
|
|
63
|
-
.columns(['status'])
|
|
67
|
+
.columns(['partition_id', 'status'])
|
|
64
68
|
.execute();
|
|
65
69
|
await db.schema
|
|
66
70
|
.createIndex('idx_sync_blob_uploads_expires_at')
|
|
67
71
|
.ifNotExists()
|
|
68
72
|
.on('sync_blob_uploads')
|
|
69
|
-
.columns(['expires_at'])
|
|
73
|
+
.columns(['partition_id', 'expires_at'])
|
|
70
74
|
.execute();
|
|
71
75
|
}
|
|
72
76
|
/**
|
|
@@ -82,11 +86,13 @@ export async function ensureBlobStorageSchemaPostgres(db) {
|
|
|
82
86
|
await db.schema
|
|
83
87
|
.createTable('sync_blobs')
|
|
84
88
|
.ifNotExists()
|
|
85
|
-
.addColumn('
|
|
89
|
+
.addColumn('partition_id', 'text', (col) => col.notNull())
|
|
90
|
+
.addColumn('hash', 'text', (col) => col.notNull())
|
|
86
91
|
.addColumn('size', 'bigint', (col) => col.notNull())
|
|
87
92
|
.addColumn('mime_type', 'text', (col) => col.notNull())
|
|
88
93
|
.addColumn('body', 'bytea', (col) => col.notNull())
|
|
89
94
|
.addColumn('created_at', 'timestamptz', (col) => col.notNull().defaultTo(sql `now()`))
|
|
95
|
+
.addPrimaryKeyConstraint('pk_sync_blobs', ['partition_id', 'hash'])
|
|
90
96
|
.execute();
|
|
91
97
|
}
|
|
92
98
|
/**
|
|
@@ -102,11 +108,13 @@ export async function ensureBlobStorageSchemaSqlite(db) {
|
|
|
102
108
|
await db.schema
|
|
103
109
|
.createTable('sync_blobs')
|
|
104
110
|
.ifNotExists()
|
|
105
|
-
.addColumn('
|
|
111
|
+
.addColumn('partition_id', 'text', (col) => col.notNull())
|
|
112
|
+
.addColumn('hash', 'text', (col) => col.notNull())
|
|
106
113
|
.addColumn('size', 'integer', (col) => col.notNull())
|
|
107
114
|
.addColumn('mime_type', 'text', (col) => col.notNull())
|
|
108
115
|
.addColumn('body', 'blob', (col) => col.notNull())
|
|
109
116
|
.addColumn('created_at', 'text', (col) => col.notNull().defaultTo(sql `(datetime('now'))`))
|
|
117
|
+
.addPrimaryKeyConstraint('pk_sync_blobs', ['partition_id', 'hash'])
|
|
110
118
|
.execute();
|
|
111
119
|
}
|
|
112
120
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/blobs/migrate.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAG7B;;;;;GAKG;AACH,KAAK,UAAU,+BAA+B,CAC5C,EAAc,EACC;IACf,MAAM,EAAE,CAAC,MAAM;SACZ,WAAW,CAAC,mBAAmB,CAAC;SAChC,WAAW,EAAE;SACb,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/blobs/migrate.ts"],"names":[],"mappings":"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"}
|