@opendatalabs/personal-server-ts-core 1.35.2 → 1.35.3
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/additions/version-inventory.d.ts +2 -0
- package/dist/additions/version-inventory.d.ts.map +1 -1
- package/dist/additions/version-inventory.js +2 -0
- package/dist/additions/version-inventory.js.map +1 -1
- package/dist/ports/index.d.ts +79 -1
- package/dist/ports/index.d.ts.map +1 -1
- package/dist/ports/index.js.map +1 -1
- package/dist/sync/delete-data-port.d.ts +2 -0
- package/dist/sync/delete-data-port.d.ts.map +1 -1
- package/dist/sync/delete-data-port.js +22 -1
- package/dist/sync/delete-data-port.js.map +1 -1
- package/dist/sync/engine/sync-manager.d.ts +6 -1
- package/dist/sync/engine/sync-manager.d.ts.map +1 -1
- package/dist/sync/engine/sync-manager.js +62 -9
- package/dist/sync/engine/sync-manager.js.map +1 -1
- package/dist/sync/index.d.ts +1 -0
- package/dist/sync/index.d.ts.map +1 -1
- package/dist/sync/index.js +1 -0
- package/dist/sync/index.js.map +1 -1
- package/dist/sync/pending-blob-deletions.d.ts.map +1 -1
- package/dist/sync/pending-blob-deletions.js +28 -0
- package/dist/sync/pending-blob-deletions.js.map +1 -1
- package/dist/sync/tombstone-finality.d.ts +36 -0
- package/dist/sync/tombstone-finality.d.ts.map +1 -0
- package/dist/sync/tombstone-finality.js +142 -0
- package/dist/sync/tombstone-finality.js.map +1 -0
- package/dist/sync/tombstone-resubmits.d.ts +61 -0
- package/dist/sync/tombstone-resubmits.d.ts.map +1 -0
- package/dist/sync/tombstone-resubmits.js +85 -0
- package/dist/sync/tombstone-resubmits.js.map +1 -0
- package/dist/sync/types.d.ts +8 -0
- package/dist/sync/types.d.ts.map +1 -1
- package/dist/sync/workers/delete.d.ts +54 -5
- package/dist/sync/workers/delete.d.ts.map +1 -1
- package/dist/sync/workers/delete.js +278 -44
- package/dist/sync/workers/delete.js.map +1 -1
- package/package.json +1 -1
|
@@ -2,6 +2,7 @@ import { withScopeLock } from "../../additions/scope-lock.js";
|
|
|
2
2
|
import { computeDataPointId } from "../data-point-id.js";
|
|
3
3
|
import { isGatewayReservedScope } from "../delete-data-port.js";
|
|
4
4
|
import { createMemoryPendingBlobDeletionStore } from "../pending-blob-deletions.js";
|
|
5
|
+
import { DEFAULT_TOMBSTONE_RESUBMIT_MAX_ATTEMPTS, } from "../tombstone-resubmits.js";
|
|
5
6
|
import { deletionTimestamp, isEntryCoveredByTombstone, tombstoneVersion, } from "../scope-deletions.js";
|
|
6
7
|
/**
|
|
7
8
|
* Exact blob deletes sent per pass. vana-storage allows 30 DELETE requests
|
|
@@ -99,12 +100,13 @@ async function eraseCoveredEntries(storage, scope, fence) {
|
|
|
99
100
|
return erased;
|
|
100
101
|
}
|
|
101
102
|
/** Take up to `count` versions from the head of a range; `rest` is what remains. */
|
|
102
|
-
function takeFromRange(range, count) {
|
|
103
|
+
function takeFromRange(range, count, cap = null) {
|
|
103
104
|
const from = BigInt(range.from);
|
|
104
105
|
const to = BigInt(range.to);
|
|
106
|
+
const last = cap !== null && cap < to ? cap : to;
|
|
105
107
|
const versions = [];
|
|
106
108
|
let cursor = from;
|
|
107
|
-
while (cursor <=
|
|
109
|
+
while (cursor <= last && versions.length < count) {
|
|
108
110
|
versions.push(cursor.toString());
|
|
109
111
|
cursor += 1n;
|
|
110
112
|
}
|
|
@@ -134,29 +136,7 @@ function countPendingKeys(markers) {
|
|
|
134
136
|
? Number.MAX_SAFE_INTEGER
|
|
135
137
|
: Number(total);
|
|
136
138
|
}
|
|
137
|
-
|
|
138
|
-
* Durable scope deletion, in the only order that cannot resurrect data:
|
|
139
|
-
*
|
|
140
|
-
* 1. gateway tombstone (owner-signed AddData at current + 1; the fact)
|
|
141
|
-
* 2. storage blobs (exact keys of every version the tombstone covers)
|
|
142
|
-
* 3. local copy (index rows + files + sidecars)
|
|
143
|
-
*
|
|
144
|
-
* The local delete never runs before the gateway has acknowledged: until the
|
|
145
|
-
* registry says "deleted", the next sync cycle would re-pull the point from
|
|
146
|
-
* the still-live row. Step 2 deletes exact per-version keys, never the scope
|
|
147
|
-
* prefix, so a re-add another replica lands at any time keeps its ciphertext
|
|
148
|
-
* (it is registered above the tombstone version and stored under that key).
|
|
149
|
-
* Keys that could not be deleted in this pass are queued as exact retry
|
|
150
|
-
* markers; step 3 does not wait for them because the tombstone already makes
|
|
151
|
-
* the deletion stick.
|
|
152
|
-
*
|
|
153
|
-
* Not serialised here: the sync manager runs this under the same lock as its
|
|
154
|
-
* upload/download cycles so a delete cannot interleave with an upload of the
|
|
155
|
-
* same scope on this replica (see engine/sync-manager.ts). Uploads racing on
|
|
156
|
-
* another replica are handled by the upload worker's deletion guard and the
|
|
157
|
-
* download worker's reconcile.
|
|
158
|
-
*/
|
|
159
|
-
export async function deleteScope(deps, scope) {
|
|
139
|
+
export async function deleteScope(deps, scope, options = {}) {
|
|
160
140
|
const { storage, deleteData, pendingBlobDeletions, scopeDeletions, logger } = deps;
|
|
161
141
|
const now = deps.now ?? (() => new Date());
|
|
162
142
|
const dataPointId = deps.serverOwner
|
|
@@ -188,8 +168,12 @@ export async function deleteScope(deps, scope) {
|
|
|
188
168
|
// local delete that sync silently undoes.
|
|
189
169
|
let tombstoneVersionValue = null;
|
|
190
170
|
let tombstoneKnown = false;
|
|
171
|
+
let replacedHead = null;
|
|
191
172
|
try {
|
|
192
|
-
|
|
173
|
+
const tombstone = () => options.fence
|
|
174
|
+
? deleteData.tombstone(scope, options.fence)
|
|
175
|
+
: deleteData.tombstone(scope);
|
|
176
|
+
let outcome = await tombstone();
|
|
193
177
|
if (outcome.status === "not-registered") {
|
|
194
178
|
// "Nothing to tombstone" is only durable if the registry still has
|
|
195
179
|
// no row. A registration racing our lookup would otherwise survive
|
|
@@ -198,7 +182,7 @@ export async function deleteScope(deps, scope) {
|
|
|
198
182
|
// registry cannot be asked, refuse rather than delete on a guess.
|
|
199
183
|
let registry = await registryState(deps, scope);
|
|
200
184
|
if (registry.status === "live") {
|
|
201
|
-
outcome = await
|
|
185
|
+
outcome = await tombstone();
|
|
202
186
|
registry = await registryState(deps, scope);
|
|
203
187
|
}
|
|
204
188
|
if (outcome.status === "not-registered" &&
|
|
@@ -213,6 +197,9 @@ export async function deleteScope(deps, scope) {
|
|
|
213
197
|
}
|
|
214
198
|
else {
|
|
215
199
|
tombstoneKnown = true;
|
|
200
|
+
if (outcome.status === "tombstoned") {
|
|
201
|
+
replacedHead = outcome.replaced ?? null;
|
|
202
|
+
}
|
|
216
203
|
tombstoneVersionValue =
|
|
217
204
|
outcome.version === null
|
|
218
205
|
? null
|
|
@@ -233,6 +220,9 @@ export async function deleteScope(deps, scope) {
|
|
|
233
220
|
deletedAt: outcome.deletedAt ?? now().toISOString(),
|
|
234
221
|
version: outcome.version,
|
|
235
222
|
}, "local-delete");
|
|
223
|
+
// A tombstone was just queued (or re-confirmed): read its finality
|
|
224
|
+
// on the next pass instead of waiting out an earlier backoff.
|
|
225
|
+
deps.tombstoneFinality?.recheckNow?.(scope);
|
|
236
226
|
}
|
|
237
227
|
result.durable = true;
|
|
238
228
|
}
|
|
@@ -264,7 +254,12 @@ export async function deleteScope(deps, scope) {
|
|
|
264
254
|
}
|
|
265
255
|
}
|
|
266
256
|
const plan = planBlobDeletions(storage, scope, tombstoneVersionValue);
|
|
267
|
-
const storageStep = await deleteScopeBlobs({
|
|
257
|
+
const storageStep = await deleteScopeBlobs({
|
|
258
|
+
deleteData,
|
|
259
|
+
pendingBlobDeletions,
|
|
260
|
+
tombstoneFinality: deps.tombstoneFinality,
|
|
261
|
+
logger,
|
|
262
|
+
}, scope, plan, tombstoneKnown && tombstoneVersionValue === null, options.storagePass ?? true, replacedHead);
|
|
268
263
|
result.steps.storage = storageStep.step;
|
|
269
264
|
result.pendingBlobDeletion = storageStep.pending > 0;
|
|
270
265
|
}
|
|
@@ -320,7 +315,11 @@ async function resumePoint(store, scope, markers) {
|
|
|
320
315
|
* above `through`. Keys at or below `through` are already deleted or still
|
|
321
316
|
* queued, so planning them again would only re-send confirmed deletes.
|
|
322
317
|
*/
|
|
323
|
-
function unplannedWork(scope, plan, through) {
|
|
318
|
+
function unplannedWork(scope, plan, through, replacedHead = null) {
|
|
319
|
+
// A range is gated by its own `range.to`, the tombstone that covers it.
|
|
320
|
+
// The exact keys lie above that tombstone (or no tombstone exists), so
|
|
321
|
+
// their slots are still open: each is gated by its own version and waits
|
|
322
|
+
// for a finalized tombstone at or above it.
|
|
324
323
|
const work = plan.keys.map((version) => ({
|
|
325
324
|
scope,
|
|
326
325
|
version,
|
|
@@ -334,6 +333,7 @@ function unplannedWork(scope, plan, through) {
|
|
|
334
333
|
scope,
|
|
335
334
|
version: null,
|
|
336
335
|
range: { from: from.toString(), to: plan.range.to },
|
|
336
|
+
...(replacedHead ? { replacedHead } : {}),
|
|
337
337
|
});
|
|
338
338
|
}
|
|
339
339
|
}
|
|
@@ -346,6 +346,100 @@ async function recordPlannedWork(store, scope, work, through) {
|
|
|
346
346
|
else
|
|
347
347
|
await store.add(work);
|
|
348
348
|
}
|
|
349
|
+
function sameHead(a, b) {
|
|
350
|
+
return (a.expectedVersion === b.expectedVersion &&
|
|
351
|
+
a.dataHash.toLowerCase() === b.dataHash.toLowerCase() &&
|
|
352
|
+
a.metadataHash.toLowerCase() === b.metadataHash.toLowerCase());
|
|
353
|
+
}
|
|
354
|
+
/**
|
|
355
|
+
* The tombstone version whose finality frees a marker's keys: its recorded
|
|
356
|
+
* gate, else a range's upper bound, else an exact key's own version (a key at
|
|
357
|
+
* or below a finalized tombstone can never be registered again). Null for an
|
|
358
|
+
* unexpanded marker, which is never sent.
|
|
359
|
+
*/
|
|
360
|
+
function markerGate(marker) {
|
|
361
|
+
if (marker.tombstoneVersion !== undefined) {
|
|
362
|
+
return marker.version !== null || marker.range
|
|
363
|
+
? BigInt(marker.tombstoneVersion)
|
|
364
|
+
: null;
|
|
365
|
+
}
|
|
366
|
+
if (marker.version !== null)
|
|
367
|
+
return BigInt(marker.version);
|
|
368
|
+
if (marker.range)
|
|
369
|
+
return BigInt(marker.range.to);
|
|
370
|
+
return null;
|
|
371
|
+
}
|
|
372
|
+
/**
|
|
373
|
+
* The markers whose keys may be sent now. Without a finality port, all of
|
|
374
|
+
* them (keys go on the tombstone's acknowledgement). With one, only markers
|
|
375
|
+
* gated at or below the scope's highest finalized tombstone: one inventory
|
|
376
|
+
* read per scope that has work. A read that fails holds the scope's markers
|
|
377
|
+
* for a later pass; holding a key only delays its deletion. Scopes whose
|
|
378
|
+
* deletion the registry rolled back are reported for re-submission.
|
|
379
|
+
*/
|
|
380
|
+
async function releasableMarkers(finality, markers, logger) {
|
|
381
|
+
const rolledBack = new Map();
|
|
382
|
+
const converged = new Set();
|
|
383
|
+
if (!finality) {
|
|
384
|
+
return {
|
|
385
|
+
released: markers.map((marker) => ({ marker, through: null })),
|
|
386
|
+
rolledBack,
|
|
387
|
+
converged,
|
|
388
|
+
};
|
|
389
|
+
}
|
|
390
|
+
const lowestGate = new Map();
|
|
391
|
+
for (const marker of markers) {
|
|
392
|
+
const gate = markerGate(marker);
|
|
393
|
+
if (gate === null)
|
|
394
|
+
continue;
|
|
395
|
+
const lowest = lowestGate.get(marker.scope);
|
|
396
|
+
if (lowest === undefined || gate < lowest) {
|
|
397
|
+
lowestGate.set(marker.scope, gate);
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
const finalized = new Map();
|
|
401
|
+
for (const [scope, lowest] of lowestGate) {
|
|
402
|
+
try {
|
|
403
|
+
const state = await finality.tombstoneState(scope, lowest.toString());
|
|
404
|
+
finalized.set(scope, state.finalized === null ? null : BigInt(state.finalized));
|
|
405
|
+
if (state.rolledBack !== null)
|
|
406
|
+
rolledBack.set(scope, state.rolledBack);
|
|
407
|
+
else if (state.finalized !== null && !state.settling)
|
|
408
|
+
converged.add(scope);
|
|
409
|
+
}
|
|
410
|
+
catch (err) {
|
|
411
|
+
finalized.set(scope, null);
|
|
412
|
+
logger.warn({ scope, error: errorMessage(err) }, "Could not read tombstone finality; blob deletions wait for a later pass");
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
// A key at or below a finalized tombstone is free (see the safety argument
|
|
416
|
+
// on `TombstoneFinalityPort`): exact keys by their own version, ranges up
|
|
417
|
+
// to the finalized version, the rest of the range staying queued.
|
|
418
|
+
const released = [];
|
|
419
|
+
const held = new Map();
|
|
420
|
+
for (const marker of markers) {
|
|
421
|
+
const gate = markerGate(marker);
|
|
422
|
+
if (gate === null)
|
|
423
|
+
continue;
|
|
424
|
+
const through = finalized.get(marker.scope) ?? null;
|
|
425
|
+
const lowestKey = marker.version !== null
|
|
426
|
+
? BigInt(marker.version)
|
|
427
|
+
: BigInt(marker.range.from);
|
|
428
|
+
if (through !== null && lowestKey <= through) {
|
|
429
|
+
released.push({ marker, through: marker.range ? through : null });
|
|
430
|
+
}
|
|
431
|
+
const highestKey = marker.version !== null
|
|
432
|
+
? BigInt(marker.version)
|
|
433
|
+
: BigInt(marker.range.to);
|
|
434
|
+
if (through === null || highestKey > through) {
|
|
435
|
+
held.set(marker.scope, (held.get(marker.scope) ?? 0) + 1);
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
for (const [scope, count] of held) {
|
|
439
|
+
logger.info({ scope, markers: count }, "Blob deletions wait until the covering tombstone is finalized");
|
|
440
|
+
}
|
|
441
|
+
return { released, rolledBack, converged };
|
|
442
|
+
}
|
|
349
443
|
/**
|
|
350
444
|
* Send one rate-limited batch taken from `markers` (exact keys first, then
|
|
351
445
|
* range heads, in stored order) and reconcile the store: acknowledged exact
|
|
@@ -353,11 +447,13 @@ async function recordPlannedWork(store, scope, work, through) {
|
|
|
353
447
|
* exact marker, and each consumed range is advanced in place. A key queued
|
|
354
448
|
* twice (an exact marker inside a range) is sent once.
|
|
355
449
|
*/
|
|
356
|
-
async function drainOnePass(deleteData, store,
|
|
450
|
+
async function drainOnePass(deleteData, store, released) {
|
|
357
451
|
let budget = BLOB_DELETE_BATCH_SIZE;
|
|
358
452
|
const byScope = new Map();
|
|
359
453
|
const queued = new Set();
|
|
360
454
|
const exactOrigin = new Set();
|
|
455
|
+
// Gate of each key taken from a range, so a failed key keeps it.
|
|
456
|
+
const rangeGate = new Map();
|
|
361
457
|
const advancedRanges = [];
|
|
362
458
|
const keyOf = (scope, version) => `${scope}\u0000${version}`;
|
|
363
459
|
const take = (scope, version) => {
|
|
@@ -370,7 +466,7 @@ async function drainOnePass(deleteData, store, markers) {
|
|
|
370
466
|
byScope.set(scope, versions);
|
|
371
467
|
return true;
|
|
372
468
|
};
|
|
373
|
-
for (const marker of
|
|
469
|
+
for (const { marker } of released) {
|
|
374
470
|
if (budget === 0)
|
|
375
471
|
break;
|
|
376
472
|
if (marker.version !== null) {
|
|
@@ -379,19 +475,32 @@ async function drainOnePass(deleteData, store, markers) {
|
|
|
379
475
|
budget -= 1;
|
|
380
476
|
}
|
|
381
477
|
}
|
|
382
|
-
for (const marker of
|
|
478
|
+
for (const { marker, through } of released) {
|
|
383
479
|
if (budget === 0)
|
|
384
480
|
break;
|
|
385
481
|
if (marker.version === null && marker.range) {
|
|
386
|
-
const taken = takeFromRange(marker.range, budget);
|
|
482
|
+
const taken = takeFromRange(marker.range, budget, through);
|
|
483
|
+
const gate = marker.tombstoneVersion ?? marker.range.to;
|
|
387
484
|
for (const version of taken.versions) {
|
|
388
|
-
if (take(marker.scope, version))
|
|
485
|
+
if (take(marker.scope, version)) {
|
|
389
486
|
budget -= 1;
|
|
487
|
+
rangeGate.set(keyOf(marker.scope, version), gate);
|
|
488
|
+
}
|
|
390
489
|
}
|
|
391
490
|
advancedRanges.push({
|
|
392
491
|
old: marker,
|
|
393
492
|
next: taken.rest
|
|
394
|
-
? {
|
|
493
|
+
? {
|
|
494
|
+
scope: marker.scope,
|
|
495
|
+
version: null,
|
|
496
|
+
range: taken.rest,
|
|
497
|
+
...(marker.tombstoneVersion !== undefined
|
|
498
|
+
? { tombstoneVersion: marker.tombstoneVersion }
|
|
499
|
+
: {}),
|
|
500
|
+
...(marker.replacedHead
|
|
501
|
+
? { replacedHead: marker.replacedHead }
|
|
502
|
+
: {}),
|
|
503
|
+
}
|
|
395
504
|
: null,
|
|
396
505
|
});
|
|
397
506
|
}
|
|
@@ -422,7 +531,14 @@ async function drainOnePass(deleteData, store, markers) {
|
|
|
422
531
|
// exact marker simply stays.
|
|
423
532
|
const failedFromRange = outcome.failed
|
|
424
533
|
.filter(({ version }) => !exactOrigin.has(keyOf(scope, version)))
|
|
425
|
-
.map(({ version }) =>
|
|
534
|
+
.map(({ version }) => {
|
|
535
|
+
const gate = rangeGate.get(keyOf(scope, version));
|
|
536
|
+
return {
|
|
537
|
+
scope,
|
|
538
|
+
version,
|
|
539
|
+
...(gate !== undefined ? { tombstoneVersion: gate } : {}),
|
|
540
|
+
};
|
|
541
|
+
});
|
|
426
542
|
if (failedFromRange.length > 0)
|
|
427
543
|
await store.add(failedFromRange);
|
|
428
544
|
}
|
|
@@ -443,10 +559,10 @@ async function drainOnePass(deleteData, store, markers) {
|
|
|
443
559
|
* the scope's queue and report what is still owed. A first delete and a
|
|
444
560
|
* repeat of it run the same path, so a repeat resumes where the queue stands.
|
|
445
561
|
*/
|
|
446
|
-
async function deleteScopeBlobs(deps, scope, plan, versionUnknown) {
|
|
562
|
+
async function deleteScopeBlobs(deps, scope, plan, versionUnknown, storagePass, replacedHead) {
|
|
447
563
|
const { deleteData, logger } = deps;
|
|
448
564
|
const withUnknown = (work) => versionUnknown ? [...work, { scope, version: null }] : work;
|
|
449
|
-
let work = withUnknown(unplannedWork(scope, plan, null));
|
|
565
|
+
let work = withUnknown(unplannedWork(scope, plan, null, replacedHead));
|
|
450
566
|
let store = deps.pendingBlobDeletions ?? null;
|
|
451
567
|
// This scope's markers already in the durable store before this call.
|
|
452
568
|
let queuedBefore = [];
|
|
@@ -455,7 +571,7 @@ async function deleteScopeBlobs(deps, scope, plan, versionUnknown) {
|
|
|
455
571
|
const markers = await store.list();
|
|
456
572
|
queuedBefore = markers.filter((m) => m.scope === scope);
|
|
457
573
|
const through = await resumePoint(store, scope, markers);
|
|
458
|
-
work = withUnknown(unplannedWork(scope, plan, through));
|
|
574
|
+
work = withUnknown(unplannedWork(scope, plan, through, replacedHead));
|
|
459
575
|
await recordPlannedWork(store, scope, work, plan.range?.to ?? null);
|
|
460
576
|
}
|
|
461
577
|
catch (markerErr) {
|
|
@@ -475,7 +591,9 @@ async function deleteScopeBlobs(deps, scope, plan, versionUnknown) {
|
|
|
475
591
|
let outcome;
|
|
476
592
|
let remainingKeys;
|
|
477
593
|
try {
|
|
478
|
-
const
|
|
594
|
+
const { released: queued } = storagePass
|
|
595
|
+
? await releasableMarkers(deps.tombstoneFinality, (await passStore.list()).filter((m) => m.scope === scope), logger)
|
|
596
|
+
: { released: [] };
|
|
479
597
|
outcome = (await drainOnePass(deleteData, passStore, queued)).get(scope) ?? { deleted: [], missing: [], failed: [] };
|
|
480
598
|
remainingKeys = countPendingKeys((await passStore.list()).filter((m) => m.scope === scope));
|
|
481
599
|
}
|
|
@@ -527,8 +645,12 @@ async function deleteScopeBlobs(deps, scope, plan, versionUnknown) {
|
|
|
527
645
|
* are expanded from the registry first; if the registry shows the scope live
|
|
528
646
|
* again the old tombstone's version is unknowable, so the marker is dropped
|
|
529
647
|
* and the pre-tombstone ciphertext stays (owner-decryptable only) until the
|
|
530
|
-
* next delete of that scope.
|
|
648
|
+
* next delete of that scope. With `tombstoneFinality` wired, a key is sent
|
|
649
|
+
* only once a tombstone at or above its gate is finalized; a failed
|
|
650
|
+
* tombstone's keys stay queued (the deletion did not happen) until a later
|
|
651
|
+
* deletion of the scope is finalized.
|
|
531
652
|
*/
|
|
653
|
+
export const TOMBSTONE_RESUBMIT_MAX_ATTEMPTS = DEFAULT_TOMBSTONE_RESUBMIT_MAX_ATTEMPTS;
|
|
532
654
|
export async function retryPendingBlobDeletions(deps) {
|
|
533
655
|
const { deleteData, pendingBlobDeletions, logger } = deps;
|
|
534
656
|
const result = {
|
|
@@ -574,8 +696,10 @@ export async function retryPendingBlobDeletions(deps) {
|
|
|
574
696
|
await pendingBlobDeletions.remove([marker]);
|
|
575
697
|
}
|
|
576
698
|
markers = await pendingBlobDeletions.list();
|
|
577
|
-
// One rate-limited batch in stored order: exact keys, then range heads
|
|
578
|
-
|
|
699
|
+
// One rate-limited batch in stored order: exact keys, then range heads,
|
|
700
|
+
// taken only from markers whose covering tombstone is final.
|
|
701
|
+
const decision = await releasableMarkers(deps.tombstoneFinality, markers, logger);
|
|
702
|
+
const outcomes = await drainOnePass(deleteData, pendingBlobDeletions, decision.released);
|
|
579
703
|
for (const [scope, outcome] of outcomes) {
|
|
580
704
|
result.completed.push(...[...outcome.deleted, ...outcome.missing].map((version) => ({ scope, version })));
|
|
581
705
|
for (const failure of outcome.failed) {
|
|
@@ -596,9 +720,119 @@ export async function retryPendingBlobDeletions(deps) {
|
|
|
596
720
|
}, "Pending blob deletion failed again");
|
|
597
721
|
}
|
|
598
722
|
}
|
|
599
|
-
|
|
723
|
+
for (const [scope, rollback] of decision.rolledBack) {
|
|
724
|
+
await resubmitRolledBackDeletion(deps, scope, rollback, markers.filter((marker) => marker.scope === scope));
|
|
725
|
+
}
|
|
726
|
+
const left = await pendingBlobDeletions.list();
|
|
727
|
+
// A scope with nothing left to free has converged; forget its attempts.
|
|
728
|
+
if (deps.tombstoneResubmits) {
|
|
729
|
+
const waiting = new Set(left.map((marker) => marker.scope));
|
|
730
|
+
const tracked = deps.tombstoneResubmits.snapshot();
|
|
731
|
+
for (const { scope } of [...tracked.retrying, ...tracked.failed]) {
|
|
732
|
+
if (!waiting.has(scope) || decision.converged.has(scope)) {
|
|
733
|
+
deps.tombstoneResubmits.reset(scope);
|
|
734
|
+
}
|
|
735
|
+
}
|
|
736
|
+
}
|
|
737
|
+
result.remaining = left.length;
|
|
600
738
|
return result;
|
|
601
739
|
}
|
|
740
|
+
/**
|
|
741
|
+
* The user deleted `scope`, its tombstone failed to settle, and the gateway
|
|
742
|
+
* shows the scope live again (the finality port only reports a rollback when
|
|
743
|
+
* no newer version of the scope exists). Re-submit the delete through the
|
|
744
|
+
* ordinary delete path, but only over exactly the head the user's tombstone
|
|
745
|
+
* replaced: the queued range marker remembers that head, the inventory read
|
|
746
|
+
* reports the restored one, and the port refuses any other. A different
|
|
747
|
+
* restored head is reported once as a failed delete instead. A write that
|
|
748
|
+
* recovered a failed slot below the tombstone, or that lands between the read
|
|
749
|
+
* and the re-submission, is therefore never deleted. This replica's own
|
|
750
|
+
* index is checked too: any unsynced entry (written after the delete erased
|
|
751
|
+
* the covered ones), or a synced one at or above the failed tombstone, is a
|
|
752
|
+
* re-add, and a re-add is never deleted again.
|
|
753
|
+
*
|
|
754
|
+
* Bounded by the tracker: attempts back off exponentially, and after the
|
|
755
|
+
* last one the scope is logged as an error and reported in the tracker's
|
|
756
|
+
* `failed` list. Its markers stay queued (nothing is freed while the scope
|
|
757
|
+
* is live) and drain if a later delete of the scope becomes final.
|
|
758
|
+
*/
|
|
759
|
+
async function resubmitRolledBackDeletion(deps, scope, rollback, scopeMarkers) {
|
|
760
|
+
const { logger, tombstoneResubmits: tracker } = deps;
|
|
761
|
+
const failedVersion = rollback.tombstoneVersion;
|
|
762
|
+
if (!deps.resubmitDeletion || !tracker) {
|
|
763
|
+
logger.warn({ scope, tombstoneVersion: failedVersion }, "Scope tombstone failed and the scope is live again; its storage copies stay until the scope is deleted again");
|
|
764
|
+
return;
|
|
765
|
+
}
|
|
766
|
+
const remembered = scopeMarkers.find((marker) => marker.version === null &&
|
|
767
|
+
marker.range &&
|
|
768
|
+
BigInt(marker.range.to) === BigInt(failedVersion) &&
|
|
769
|
+
marker.replacedHead)?.replacedHead;
|
|
770
|
+
if (readdedLocally(deps.storage, scope, failedVersion)) {
|
|
771
|
+
logger.info({ scope, tombstoneVersion: failedVersion }, "Scope tombstone failed, but the scope was re-added after the delete; not deleting it again");
|
|
772
|
+
return;
|
|
773
|
+
}
|
|
774
|
+
if (tracker.exhausted(scope))
|
|
775
|
+
return;
|
|
776
|
+
if (!remembered || !sameHead(remembered, rollback.head)) {
|
|
777
|
+
// The user's delete did not happen and the scope is live again, but the
|
|
778
|
+
// restored head may be newer data, so it is not deleted automatically.
|
|
779
|
+
// Report it once, so no surface shows the scope as deleted.
|
|
780
|
+
const state = tracker.giveUp(scope, failedVersion, "head-changed");
|
|
781
|
+
logger.error({
|
|
782
|
+
scope,
|
|
783
|
+
tombstoneVersion: failedVersion,
|
|
784
|
+
head: rollback.head.expectedVersion,
|
|
785
|
+
remembered: remembered?.expectedVersion ?? null,
|
|
786
|
+
}, "Scope deletion did not complete: the gateway tombstone failed and the restored head is not the one the delete replaced, so it is not deleted again automatically. Delete it again to retry.");
|
|
787
|
+
deps.onDeletionAbandoned?.(state);
|
|
788
|
+
return;
|
|
789
|
+
}
|
|
790
|
+
if (tracker.outOfAttempts(scope)) {
|
|
791
|
+
const state = tracker.giveUp(scope, failedVersion);
|
|
792
|
+
logger.error({
|
|
793
|
+
scope,
|
|
794
|
+
attempts: state.attempts,
|
|
795
|
+
tombstoneVersion: failedVersion,
|
|
796
|
+
}, "Scope deletion did not complete: every gateway tombstone failed and the scope is live again. Delete it again to retry.");
|
|
797
|
+
deps.onDeletionAbandoned?.(state);
|
|
798
|
+
return;
|
|
799
|
+
}
|
|
800
|
+
if (!tracker.due(scope))
|
|
801
|
+
return;
|
|
802
|
+
const attempt = tracker.recordAttempt(scope, failedVersion);
|
|
803
|
+
logger.warn({ scope, tombstoneVersion: failedVersion, attempt }, "Scope tombstone failed and the scope is live again; re-submitting the user's delete");
|
|
804
|
+
try {
|
|
805
|
+
const outcome = await deps.resubmitDeletion(scope, {
|
|
806
|
+
fence: { head: rollback.head },
|
|
807
|
+
storagePass: false,
|
|
808
|
+
});
|
|
809
|
+
if (outcome.steps.gateway.status === "failed") {
|
|
810
|
+
logger.warn({ scope, attempt, error: outcome.steps.gateway.error }, "Re-submitted scope delete was refused by the gateway; will retry");
|
|
811
|
+
}
|
|
812
|
+
}
|
|
813
|
+
catch (err) {
|
|
814
|
+
logger.warn({ scope, attempt, error: errorMessage(err) }, "Re-submitted scope delete failed; will retry");
|
|
815
|
+
}
|
|
816
|
+
}
|
|
817
|
+
/** Whether this replica holds data of `scope` the failed delete did not cover. */
|
|
818
|
+
function readdedLocally(storage, scope, failedVersion) {
|
|
819
|
+
// Without a local index nothing proves the scope was not re-added.
|
|
820
|
+
if (!storage)
|
|
821
|
+
return true;
|
|
822
|
+
const failed = BigInt(failedVersion);
|
|
823
|
+
const PAGE_SIZE = 500;
|
|
824
|
+
for (let offset = 0;; offset += PAGE_SIZE) {
|
|
825
|
+
const entries = storage.listVersions(scope, { limit: PAGE_SIZE, offset });
|
|
826
|
+
for (const entry of entries) {
|
|
827
|
+
if (entry.dataPointId === null)
|
|
828
|
+
return true;
|
|
829
|
+
if (BigInt(entry.version) >= failed)
|
|
830
|
+
return true;
|
|
831
|
+
}
|
|
832
|
+
if (entries.length < PAGE_SIZE)
|
|
833
|
+
return false;
|
|
834
|
+
}
|
|
835
|
+
}
|
|
602
836
|
/**
|
|
603
837
|
* What the registry currently says about `scope`. "live" means a row exists
|
|
604
838
|
* that is not a tombstone; "deleted" carries the tombstone's version;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../src/sync/workers/delete.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../src/sync/workers/delete.ts"],"names":[],"mappings":"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"}
|