@opendatalabs/personal-server-ts-server 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.
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"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"}
package/dist/bootstrap.js CHANGED
@@ -31,7 +31,7 @@ import { loadOrCreateServerAccount } from "./keys/server-account.js";
31
31
  import { createRequestSigner, createServerSigner, } from "@opendatalabs/personal-server-ts-core/signing";
32
32
  import { createGatewayLineageClient, } from "@opendatalabs/personal-server-ts-core/lineage";
33
33
  import { createSyncCursor } from "./sync-cursor.js";
34
- import { createGatewayDataPointFeed, createGatewayDeleteDataPort, createScopeDeletionTracker, createSyncManager, } from "@opendatalabs/personal-server-ts-core/sync";
34
+ import { createGatewayDataPointFeed, createGatewayDeleteDataPort, createInventoryTombstoneFinality, createScopeDeletionTracker, createSyncManager, } from "@opendatalabs/personal-server-ts-core/sync";
35
35
  import { createVanaSyncStorageAdapter, resolveVanaStorageEndpoint, } from "@opendatalabs/personal-server-ts-core/storage/adapters";
36
36
  import { createFilePendingBlobDeletionStore } from "./pending-blob-deletions.js";
37
37
  import { createApp } from "./app.js";
@@ -581,10 +581,23 @@ export async function createServer(config, options) {
581
581
  },
582
582
  });
583
583
  const pendingBlobDeletions = createFilePendingBlobDeletionStore(pendingBlobDeletionsPath);
584
+ // Blob deletes wait for the covering tombstone to be finalized, read from
585
+ // the signed version inventory (owner or registered-server signer).
586
+ const tombstoneFinality = deleteData && additionsInventorySigner
587
+ ? createInventoryTombstoneFinality(createVersionInventoryClient({
588
+ gatewayUrl: config.gateway.url,
589
+ ownerAddress: serverOwner,
590
+ ownerSigner: additionsInventorySigner,
591
+ }))
592
+ : undefined;
593
+ if (deleteData && !tombstoneFinality) {
594
+ logger.warn("No version-inventory signer: storage blobs are deleted when a tombstone is queued, before it is final");
595
+ }
584
596
  syncManager = createSyncManager(uploadDeps, downloadDeps, {
585
597
  deleteData,
586
598
  hydrateScopes: options?.hydrateScopes,
587
599
  pendingBlobDeletions,
600
+ tombstoneFinality,
588
601
  transferMode: isEnclave ? "download-only" : "upload-download",
589
602
  async canSync() {
590
603
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"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"}
@@ -130378,7 +130378,7 @@ function createGatewayDeleteDataPort(options) {
130378
130378
  }
130379
130379
  return {
130380
130380
  ...options.reservedHead ? { head: options.reservedHead } : {},
130381
- async tombstone(scope) {
130381
+ async tombstone(scope, fence) {
130382
130382
  const dataPointId = computeDataPointId(options.serverOwner, scope);
130383
130383
  const current = await currentHead(scope);
130384
130384
  if (current === null) {
@@ -130392,8 +130392,20 @@ function createGatewayDeleteDataPort(options) {
130392
130392
  deletedAt: current.deletedAt
130393
130393
  };
130394
130394
  }
130395
+ if (fence && (current.expectedVersion !== fence.head.expectedVersion || current.dataHash.toLowerCase() !== fence.head.dataHash.toLowerCase() || current.metadataHash.toLowerCase() !== fence.head.metadataHash.toLowerCase())) {
130396
+ throw new Error(`Scope head (v${current.expectedVersion}) is not the one the fenced delete saw (v${fence.head.expectedVersion})`);
130397
+ }
130398
+ let replaced = {
130399
+ expectedVersion: current.expectedVersion,
130400
+ dataHash: current.dataHash,
130401
+ metadataHash: current.metadataHash
130402
+ };
130395
130403
  let version5 = BigInt(current.expectedVersion) + 1n;
130396
130404
  let res = await sendTombstone(scope, dataPointId, version5);
130405
+ if (res.status === 409 && fence) {
130406
+ await res.body?.cancel();
130407
+ throw new Error(`Scope head is not the one the fenced delete saw (v${fence.head.expectedVersion}): another writer moved it`);
130408
+ }
130397
130409
  if (res.status === 409) {
130398
130410
  const body2 = await res.json().catch(() => null);
130399
130411
  const conflict = unwrap4(body2);
@@ -130405,6 +130417,7 @@ function createGatewayDeleteDataPort(options) {
130405
130417
  throw new Error(`Gateway error: 409 ${detailFromBody(body2, res.statusText)}`);
130406
130418
  }
130407
130419
  version5 = next;
130420
+ replaced = null;
130408
130421
  res = await sendTombstone(scope, dataPointId, version5);
130409
130422
  }
130410
130423
  if (res.status === 404) {
@@ -130438,6 +130451,7 @@ function createGatewayDeleteDataPort(options) {
130438
130451
  status: "tombstoned",
130439
130452
  dataPointId: stringField2(row, "dataPointId") ?? dataPointId,
130440
130453
  version: stringField2(row, "expectedVersion") ?? String(version5),
130454
+ replaced,
130441
130455
  deletedAt: stringField2(row, "deletedAt")
130442
130456
  };
130443
130457
  },
@@ -130548,6 +130562,19 @@ function markerId(key) {
130548
130562
  const range = key.range ? `${key.range.from}-${key.range.to}` : "";
130549
130563
  return `${key.scope}\0${key.version ?? ""}\0${range}`;
130550
130564
  }
130565
+ function normalizeHead(value) {
130566
+ if (typeof value !== "object" || value === null)
130567
+ return void 0;
130568
+ const { expectedVersion, dataHash, metadataHash } = value;
130569
+ if (typeof expectedVersion !== "string" || !/^\d+$/.test(expectedVersion) || typeof dataHash !== "string" || !/^0x[0-9a-fA-F]{64}$/.test(dataHash) || typeof metadataHash !== "string" || !/^0x[0-9a-fA-F]{64}$/.test(metadataHash)) {
130570
+ return void 0;
130571
+ }
130572
+ return {
130573
+ expectedVersion: BigInt(expectedVersion).toString(),
130574
+ dataHash: dataHash.toLowerCase(),
130575
+ metadataHash: metadataHash.toLowerCase()
130576
+ };
130577
+ }
130551
130578
  function normalizeRange(value) {
130552
130579
  if (typeof value !== "object" || value === null)
130553
130580
  return void 0;
@@ -130567,10 +130594,14 @@ function normalizePendingBlobDeletions(stored) {
130567
130594
  } else if (typeof item === "object" && item !== null && typeof item.scope === "string") {
130568
130595
  const version5 = item.version;
130569
130596
  const range = typeof version5 === "string" ? void 0 : normalizeRange(item.range);
130597
+ const gate = item.tombstoneVersion;
130598
+ const replacedHead = normalizeHead(item.replacedHead);
130570
130599
  keys.push({
130571
130600
  scope: item.scope,
130572
130601
  version: typeof version5 === "string" ? version5 : null,
130573
- ...range ? { range } : {}
130602
+ ...range ? { range } : {},
130603
+ ...typeof gate === "string" && /^\d+$/.test(gate) ? { tombstoneVersion: BigInt(gate).toString() } : {},
130604
+ ...replacedHead ? { replacedHead } : {}
130574
130605
  });
130575
130606
  }
130576
130607
  }
@@ -130604,7 +130635,9 @@ function createPendingBlobDeletionStore(kv) {
130604
130635
  next.push({
130605
130636
  scope: key.scope,
130606
130637
  version: key.version,
130607
- ...key.range ? { range: { ...key.range } } : {}
130638
+ ...key.range ? { range: { ...key.range } } : {},
130639
+ ...key.tombstoneVersion !== void 0 ? { tombstoneVersion: key.tombstoneVersion } : {},
130640
+ ...key.replacedHead ? { replacedHead: { ...key.replacedHead } } : {}
130608
130641
  });
130609
130642
  }
130610
130643
  return next;
@@ -130670,6 +130703,88 @@ function createMemoryPendingBlobDeletionStore() {
130670
130703
  });
130671
130704
  }
130672
130705
 
130706
+ // ../core/dist/sync/tombstone-resubmits.js
130707
+ var DEFAULT_TOMBSTONE_RESUBMIT_MAX_ATTEMPTS = 5;
130708
+ var DEFAULT_TOMBSTONE_RESUBMIT_BASE_DELAY_MS = 6e4;
130709
+ function createTombstoneResubmitTracker(options = {}) {
130710
+ const maxAttempts = options.maxAttempts ?? DEFAULT_TOMBSTONE_RESUBMIT_MAX_ATTEMPTS;
130711
+ const baseDelayMs = options.baseDelayMs ?? DEFAULT_TOMBSTONE_RESUBMIT_BASE_DELAY_MS;
130712
+ const now = options.now ?? Date.now;
130713
+ const states = /* @__PURE__ */ new Map();
130714
+ const view = (scope) => {
130715
+ const state = states.get(scope);
130716
+ return state ? {
130717
+ scope,
130718
+ attempts: state.attempts,
130719
+ tombstoneVersion: state.tombstoneVersion,
130720
+ lastAttemptAt: new Date(state.lastAttemptMs).toISOString(),
130721
+ ...state.reason ? { reason: state.reason } : {}
130722
+ } : null;
130723
+ };
130724
+ return {
130725
+ due(scope) {
130726
+ const state = states.get(scope);
130727
+ if (!state)
130728
+ return true;
130729
+ if (state.failedAtMs !== null || state.attempts >= maxAttempts)
130730
+ return false;
130731
+ const wait3 = baseDelayMs * 2 ** (state.attempts - 1);
130732
+ return now() - state.lastAttemptMs >= wait3;
130733
+ },
130734
+ exhausted(scope) {
130735
+ return states.get(scope)?.failedAtMs != null;
130736
+ },
130737
+ outOfAttempts(scope) {
130738
+ const state = states.get(scope);
130739
+ return state !== void 0 && state.failedAtMs === null && state.attempts >= maxAttempts;
130740
+ },
130741
+ recordAttempt(scope, tombstoneVersion2) {
130742
+ const state = states.get(scope);
130743
+ const attempts = (state?.attempts ?? 0) + 1;
130744
+ states.set(scope, {
130745
+ attempts,
130746
+ tombstoneVersion: tombstoneVersion2,
130747
+ lastAttemptMs: now(),
130748
+ failedAtMs: null
130749
+ });
130750
+ return attempts;
130751
+ },
130752
+ giveUp(scope, tombstoneVersion2, reason = "attempts-exhausted") {
130753
+ const state = states.get(scope) ?? {
130754
+ attempts: 0,
130755
+ tombstoneVersion: tombstoneVersion2,
130756
+ lastAttemptMs: now(),
130757
+ failedAtMs: null
130758
+ };
130759
+ states.set(scope, {
130760
+ ...state,
130761
+ tombstoneVersion: tombstoneVersion2,
130762
+ failedAtMs: now(),
130763
+ reason
130764
+ });
130765
+ return view(scope);
130766
+ },
130767
+ reset(scope) {
130768
+ states.delete(scope);
130769
+ },
130770
+ snapshot() {
130771
+ const retrying = [];
130772
+ const failed = [];
130773
+ for (const [scope, state] of states) {
130774
+ const entry = view(scope);
130775
+ if (state.failedAtMs === null)
130776
+ retrying.push(entry);
130777
+ else
130778
+ failed.push({
130779
+ ...entry,
130780
+ failedAt: new Date(state.failedAtMs).toISOString()
130781
+ });
130782
+ }
130783
+ return { retrying, failed };
130784
+ }
130785
+ };
130786
+ }
130787
+
130673
130788
  // ../core/dist/sync/workers/delete.js
130674
130789
  var BLOB_DELETE_BATCH_SIZE = 15;
130675
130790
  function planBlobDeletions(storage, scope, tombstoneVersionValue) {
@@ -130735,12 +130850,13 @@ async function eraseCoveredEntries(storage, scope, fence) {
130735
130850
  }
130736
130851
  return erased;
130737
130852
  }
130738
- function takeFromRange(range, count) {
130853
+ function takeFromRange(range, count, cap = null) {
130739
130854
  const from14 = BigInt(range.from);
130740
130855
  const to3 = BigInt(range.to);
130856
+ const last2 = cap !== null && cap < to3 ? cap : to3;
130741
130857
  const versions = [];
130742
130858
  let cursor = from14;
130743
- while (cursor <= to3 && versions.length < count) {
130859
+ while (cursor <= last2 && versions.length < count) {
130744
130860
  versions.push(cursor.toString());
130745
130861
  cursor += 1n;
130746
130862
  }
@@ -130764,7 +130880,7 @@ function countPendingKeys(markers) {
130764
130880
  }
130765
130881
  return total > BigInt(Number.MAX_SAFE_INTEGER) ? Number.MAX_SAFE_INTEGER : Number(total);
130766
130882
  }
130767
- async function deleteScope(deps, scope) {
130883
+ async function deleteScope(deps, scope, options = {}) {
130768
130884
  const { storage, deleteData, pendingBlobDeletions, scopeDeletions, logger } = deps;
130769
130885
  const now = deps.now ?? (() => /* @__PURE__ */ new Date());
130770
130886
  const dataPointId = deps.serverOwner ? computeDataPointId(deps.serverOwner, scope) : null;
@@ -130784,12 +130900,14 @@ async function deleteScope(deps, scope) {
130784
130900
  if (deleteData) {
130785
130901
  let tombstoneVersionValue = null;
130786
130902
  let tombstoneKnown = false;
130903
+ let replacedHead = null;
130787
130904
  try {
130788
- let outcome = await deleteData.tombstone(scope);
130905
+ const tombstone = () => options.fence ? deleteData.tombstone(scope, options.fence) : deleteData.tombstone(scope);
130906
+ let outcome = await tombstone();
130789
130907
  if (outcome.status === "not-registered") {
130790
130908
  let registry2 = await registryState(deps, scope);
130791
130909
  if (registry2.status === "live") {
130792
- outcome = await deleteData.tombstone(scope);
130910
+ outcome = await tombstone();
130793
130911
  registry2 = await registryState(deps, scope);
130794
130912
  }
130795
130913
  if (outcome.status === "not-registered" && registry2.status !== "deleted-or-absent") {
@@ -130800,6 +130918,9 @@ async function deleteScope(deps, scope) {
130800
130918
  result.steps.gateway = { status: "skipped", reason: "not-registered" };
130801
130919
  } else {
130802
130920
  tombstoneKnown = true;
130921
+ if (outcome.status === "tombstoned") {
130922
+ replacedHead = outcome.replaced ?? null;
130923
+ }
130803
130924
  tombstoneVersionValue = outcome.version === null ? null : tombstoneVersion({ expectedVersion: outcome.version });
130804
130925
  result.steps.gateway = {
130805
130926
  status: "ok",
@@ -130813,6 +130934,7 @@ async function deleteScope(deps, scope) {
130813
130934
  deletedAt: outcome.deletedAt ?? now().toISOString(),
130814
130935
  version: outcome.version
130815
130936
  }, "local-delete");
130937
+ deps.tombstoneFinality?.recheckNow?.(scope);
130816
130938
  }
130817
130939
  result.durable = true;
130818
130940
  } catch (err2) {
@@ -130833,7 +130955,12 @@ async function deleteScope(deps, scope) {
130833
130955
  }
130834
130956
  }
130835
130957
  const plan = planBlobDeletions(storage, scope, tombstoneVersionValue);
130836
- const storageStep = await deleteScopeBlobs({ deleteData, pendingBlobDeletions, logger }, scope, plan, tombstoneKnown && tombstoneVersionValue === null);
130958
+ const storageStep = await deleteScopeBlobs({
130959
+ deleteData,
130960
+ pendingBlobDeletions,
130961
+ tombstoneFinality: deps.tombstoneFinality,
130962
+ logger
130963
+ }, scope, plan, tombstoneKnown && tombstoneVersionValue === null, options.storagePass ?? true, replacedHead);
130837
130964
  result.steps.storage = storageStep.step;
130838
130965
  result.pendingBlobDeletion = storageStep.pending > 0;
130839
130966
  }
@@ -130868,7 +130995,7 @@ async function resumePoint(store, scope, markers) {
130868
130995
  }
130869
130996
  return through;
130870
130997
  }
130871
- function unplannedWork(scope, plan, through) {
130998
+ function unplannedWork(scope, plan, through, replacedHead = null) {
130872
130999
  const work = plan.keys.map((version5) => ({
130873
131000
  scope,
130874
131001
  version: version5
@@ -130881,7 +131008,8 @@ function unplannedWork(scope, plan, through) {
130881
131008
  work.push({
130882
131009
  scope,
130883
131010
  version: null,
130884
- range: { from: from14.toString(), to: plan.range.to }
131011
+ range: { from: from14.toString(), to: plan.range.to },
131012
+ ...replacedHead ? { replacedHead } : {}
130885
131013
  });
130886
131014
  }
130887
131015
  }
@@ -130893,11 +131021,80 @@ async function recordPlannedWork(store, scope, work, through) {
130893
131021
  else
130894
131022
  await store.add(work);
130895
131023
  }
130896
- async function drainOnePass(deleteData, store, markers) {
131024
+ function sameHead(a10, b10) {
131025
+ return a10.expectedVersion === b10.expectedVersion && a10.dataHash.toLowerCase() === b10.dataHash.toLowerCase() && a10.metadataHash.toLowerCase() === b10.metadataHash.toLowerCase();
131026
+ }
131027
+ function markerGate(marker) {
131028
+ if (marker.tombstoneVersion !== void 0) {
131029
+ return marker.version !== null || marker.range ? BigInt(marker.tombstoneVersion) : null;
131030
+ }
131031
+ if (marker.version !== null)
131032
+ return BigInt(marker.version);
131033
+ if (marker.range)
131034
+ return BigInt(marker.range.to);
131035
+ return null;
131036
+ }
131037
+ async function releasableMarkers(finality, markers, logger) {
131038
+ const rolledBack = /* @__PURE__ */ new Map();
131039
+ const converged = /* @__PURE__ */ new Set();
131040
+ if (!finality) {
131041
+ return {
131042
+ released: markers.map((marker) => ({ marker, through: null })),
131043
+ rolledBack,
131044
+ converged
131045
+ };
131046
+ }
131047
+ const lowestGate = /* @__PURE__ */ new Map();
131048
+ for (const marker of markers) {
131049
+ const gate = markerGate(marker);
131050
+ if (gate === null)
131051
+ continue;
131052
+ const lowest = lowestGate.get(marker.scope);
131053
+ if (lowest === void 0 || gate < lowest) {
131054
+ lowestGate.set(marker.scope, gate);
131055
+ }
131056
+ }
131057
+ const finalized = /* @__PURE__ */ new Map();
131058
+ for (const [scope, lowest] of lowestGate) {
131059
+ try {
131060
+ const state = await finality.tombstoneState(scope, lowest.toString());
131061
+ finalized.set(scope, state.finalized === null ? null : BigInt(state.finalized));
131062
+ if (state.rolledBack !== null)
131063
+ rolledBack.set(scope, state.rolledBack);
131064
+ else if (state.finalized !== null && !state.settling)
131065
+ converged.add(scope);
131066
+ } catch (err2) {
131067
+ finalized.set(scope, null);
131068
+ logger.warn({ scope, error: errorMessage2(err2) }, "Could not read tombstone finality; blob deletions wait for a later pass");
131069
+ }
131070
+ }
131071
+ const released = [];
131072
+ const held = /* @__PURE__ */ new Map();
131073
+ for (const marker of markers) {
131074
+ const gate = markerGate(marker);
131075
+ if (gate === null)
131076
+ continue;
131077
+ const through = finalized.get(marker.scope) ?? null;
131078
+ const lowestKey = marker.version !== null ? BigInt(marker.version) : BigInt(marker.range.from);
131079
+ if (through !== null && lowestKey <= through) {
131080
+ released.push({ marker, through: marker.range ? through : null });
131081
+ }
131082
+ const highestKey = marker.version !== null ? BigInt(marker.version) : BigInt(marker.range.to);
131083
+ if (through === null || highestKey > through) {
131084
+ held.set(marker.scope, (held.get(marker.scope) ?? 0) + 1);
131085
+ }
131086
+ }
131087
+ for (const [scope, count] of held) {
131088
+ logger.info({ scope, markers: count }, "Blob deletions wait until the covering tombstone is finalized");
131089
+ }
131090
+ return { released, rolledBack, converged };
131091
+ }
131092
+ async function drainOnePass(deleteData, store, released) {
130897
131093
  let budget = BLOB_DELETE_BATCH_SIZE;
130898
131094
  const byScope = /* @__PURE__ */ new Map();
130899
131095
  const queued = /* @__PURE__ */ new Set();
130900
131096
  const exactOrigin = /* @__PURE__ */ new Set();
131097
+ const rangeGate = /* @__PURE__ */ new Map();
130901
131098
  const advancedRanges = [];
130902
131099
  const keyOf = (scope, version5) => `${scope}\0${version5}`;
130903
131100
  const take = (scope, version5) => {
@@ -130910,7 +131107,7 @@ async function drainOnePass(deleteData, store, markers) {
130910
131107
  byScope.set(scope, versions);
130911
131108
  return true;
130912
131109
  };
130913
- for (const marker of markers) {
131110
+ for (const { marker } of released) {
130914
131111
  if (budget === 0)
130915
131112
  break;
130916
131113
  if (marker.version !== null) {
@@ -130919,18 +131116,27 @@ async function drainOnePass(deleteData, store, markers) {
130919
131116
  budget -= 1;
130920
131117
  }
130921
131118
  }
130922
- for (const marker of markers) {
131119
+ for (const { marker, through } of released) {
130923
131120
  if (budget === 0)
130924
131121
  break;
130925
131122
  if (marker.version === null && marker.range) {
130926
- const taken = takeFromRange(marker.range, budget);
131123
+ const taken = takeFromRange(marker.range, budget, through);
131124
+ const gate = marker.tombstoneVersion ?? marker.range.to;
130927
131125
  for (const version5 of taken.versions) {
130928
- if (take(marker.scope, version5))
131126
+ if (take(marker.scope, version5)) {
130929
131127
  budget -= 1;
131128
+ rangeGate.set(keyOf(marker.scope, version5), gate);
131129
+ }
130930
131130
  }
130931
131131
  advancedRanges.push({
130932
131132
  old: marker,
130933
- next: taken.rest ? { scope: marker.scope, version: null, range: taken.rest } : null
131133
+ next: taken.rest ? {
131134
+ scope: marker.scope,
131135
+ version: null,
131136
+ range: taken.rest,
131137
+ ...marker.tombstoneVersion !== void 0 ? { tombstoneVersion: marker.tombstoneVersion } : {},
131138
+ ...marker.replacedHead ? { replacedHead: marker.replacedHead } : {}
131139
+ } : null
130934
131140
  });
130935
131141
  }
130936
131142
  }
@@ -130951,7 +131157,14 @@ async function drainOnePass(deleteData, store, markers) {
130951
131157
  const completed = [...outcome.deleted, ...outcome.missing].filter((version5) => exactOrigin.has(keyOf(scope, version5))).map((version5) => ({ scope, version: version5 }));
130952
131158
  if (completed.length > 0)
130953
131159
  await store.remove(completed);
130954
- const failedFromRange = outcome.failed.filter(({ version: version5 }) => !exactOrigin.has(keyOf(scope, version5))).map(({ version: version5 }) => ({ scope, version: version5 }));
131160
+ const failedFromRange = outcome.failed.filter(({ version: version5 }) => !exactOrigin.has(keyOf(scope, version5))).map(({ version: version5 }) => {
131161
+ const gate = rangeGate.get(keyOf(scope, version5));
131162
+ return {
131163
+ scope,
131164
+ version: version5,
131165
+ ...gate !== void 0 ? { tombstoneVersion: gate } : {}
131166
+ };
131167
+ });
130955
131168
  if (failedFromRange.length > 0)
130956
131169
  await store.add(failedFromRange);
130957
131170
  }
@@ -130962,10 +131175,10 @@ async function drainOnePass(deleteData, store, markers) {
130962
131175
  }
130963
131176
  return outcomes;
130964
131177
  }
130965
- async function deleteScopeBlobs(deps, scope, plan, versionUnknown) {
131178
+ async function deleteScopeBlobs(deps, scope, plan, versionUnknown, storagePass, replacedHead) {
130966
131179
  const { deleteData, logger } = deps;
130967
131180
  const withUnknown = (work2) => versionUnknown ? [...work2, { scope, version: null }] : work2;
130968
- let work = withUnknown(unplannedWork(scope, plan, null));
131181
+ let work = withUnknown(unplannedWork(scope, plan, null, replacedHead));
130969
131182
  let store = deps.pendingBlobDeletions ?? null;
130970
131183
  let queuedBefore = [];
130971
131184
  if (store) {
@@ -130973,7 +131186,7 @@ async function deleteScopeBlobs(deps, scope, plan, versionUnknown) {
130973
131186
  const markers = await store.list();
130974
131187
  queuedBefore = markers.filter((m10) => m10.scope === scope);
130975
131188
  const through = await resumePoint(store, scope, markers);
130976
- work = withUnknown(unplannedWork(scope, plan, through));
131189
+ work = withUnknown(unplannedWork(scope, plan, through, replacedHead));
130977
131190
  await recordPlannedWork(store, scope, work, plan.range?.to ?? null);
130978
131191
  } catch (markerErr) {
130979
131192
  logger.error({ scope, error: errorMessage2(markerErr), keys: countPendingKeys(work) }, "Could not record pending blob deletion markers");
@@ -130988,7 +131201,7 @@ async function deleteScopeBlobs(deps, scope, plan, versionUnknown) {
130988
131201
  let outcome;
130989
131202
  let remainingKeys;
130990
131203
  try {
130991
- const queued = (await passStore.list()).filter((m10) => m10.scope === scope);
131204
+ const { released: queued } = storagePass ? await releasableMarkers(deps.tombstoneFinality, (await passStore.list()).filter((m10) => m10.scope === scope), logger) : { released: [] };
130992
131205
  outcome = (await drainOnePass(deleteData, passStore, queued)).get(scope) ?? { deleted: [], missing: [], failed: [] };
130993
131206
  remainingKeys = countPendingKeys((await passStore.list()).filter((m10) => m10.scope === scope));
130994
131207
  } catch (markerErr) {
@@ -131067,7 +131280,8 @@ async function retryPendingBlobDeletions(deps) {
131067
131280
  await pendingBlobDeletions.remove([marker]);
131068
131281
  }
131069
131282
  markers = await pendingBlobDeletions.list();
131070
- const outcomes = await drainOnePass(deleteData, pendingBlobDeletions, markers);
131283
+ const decision = await releasableMarkers(deps.tombstoneFinality, markers, logger);
131284
+ const outcomes = await drainOnePass(deleteData, pendingBlobDeletions, decision.released);
131071
131285
  for (const [scope, outcome] of outcomes) {
131072
131286
  result.completed.push(...[...outcome.deleted, ...outcome.missing].map((version5) => ({ scope, version: version5 })));
131073
131287
  for (const failure of outcome.failed) {
@@ -131088,9 +131302,90 @@ async function retryPendingBlobDeletions(deps) {
131088
131302
  }, "Pending blob deletion failed again");
131089
131303
  }
131090
131304
  }
131091
- result.remaining = (await pendingBlobDeletions.list()).length;
131305
+ for (const [scope, rollback] of decision.rolledBack) {
131306
+ await resubmitRolledBackDeletion(deps, scope, rollback, markers.filter((marker) => marker.scope === scope));
131307
+ }
131308
+ const left = await pendingBlobDeletions.list();
131309
+ if (deps.tombstoneResubmits) {
131310
+ const waiting = new Set(left.map((marker) => marker.scope));
131311
+ const tracked = deps.tombstoneResubmits.snapshot();
131312
+ for (const { scope } of [...tracked.retrying, ...tracked.failed]) {
131313
+ if (!waiting.has(scope) || decision.converged.has(scope)) {
131314
+ deps.tombstoneResubmits.reset(scope);
131315
+ }
131316
+ }
131317
+ }
131318
+ result.remaining = left.length;
131092
131319
  return result;
131093
131320
  }
131321
+ async function resubmitRolledBackDeletion(deps, scope, rollback, scopeMarkers) {
131322
+ const { logger, tombstoneResubmits: tracker } = deps;
131323
+ const failedVersion = rollback.tombstoneVersion;
131324
+ if (!deps.resubmitDeletion || !tracker) {
131325
+ logger.warn({ scope, tombstoneVersion: failedVersion }, "Scope tombstone failed and the scope is live again; its storage copies stay until the scope is deleted again");
131326
+ return;
131327
+ }
131328
+ const remembered = scopeMarkers.find((marker) => marker.version === null && marker.range && BigInt(marker.range.to) === BigInt(failedVersion) && marker.replacedHead)?.replacedHead;
131329
+ if (readdedLocally(deps.storage, scope, failedVersion)) {
131330
+ logger.info({ scope, tombstoneVersion: failedVersion }, "Scope tombstone failed, but the scope was re-added after the delete; not deleting it again");
131331
+ return;
131332
+ }
131333
+ if (tracker.exhausted(scope))
131334
+ return;
131335
+ if (!remembered || !sameHead(remembered, rollback.head)) {
131336
+ const state = tracker.giveUp(scope, failedVersion, "head-changed");
131337
+ logger.error({
131338
+ scope,
131339
+ tombstoneVersion: failedVersion,
131340
+ head: rollback.head.expectedVersion,
131341
+ remembered: remembered?.expectedVersion ?? null
131342
+ }, "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.");
131343
+ deps.onDeletionAbandoned?.(state);
131344
+ return;
131345
+ }
131346
+ if (tracker.outOfAttempts(scope)) {
131347
+ const state = tracker.giveUp(scope, failedVersion);
131348
+ logger.error({
131349
+ scope,
131350
+ attempts: state.attempts,
131351
+ tombstoneVersion: failedVersion
131352
+ }, "Scope deletion did not complete: every gateway tombstone failed and the scope is live again. Delete it again to retry.");
131353
+ deps.onDeletionAbandoned?.(state);
131354
+ return;
131355
+ }
131356
+ if (!tracker.due(scope))
131357
+ return;
131358
+ const attempt = tracker.recordAttempt(scope, failedVersion);
131359
+ logger.warn({ scope, tombstoneVersion: failedVersion, attempt }, "Scope tombstone failed and the scope is live again; re-submitting the user's delete");
131360
+ try {
131361
+ const outcome = await deps.resubmitDeletion(scope, {
131362
+ fence: { head: rollback.head },
131363
+ storagePass: false
131364
+ });
131365
+ if (outcome.steps.gateway.status === "failed") {
131366
+ logger.warn({ scope, attempt, error: outcome.steps.gateway.error }, "Re-submitted scope delete was refused by the gateway; will retry");
131367
+ }
131368
+ } catch (err2) {
131369
+ logger.warn({ scope, attempt, error: errorMessage2(err2) }, "Re-submitted scope delete failed; will retry");
131370
+ }
131371
+ }
131372
+ function readdedLocally(storage, scope, failedVersion) {
131373
+ if (!storage)
131374
+ return true;
131375
+ const failed = BigInt(failedVersion);
131376
+ const PAGE_SIZE = 500;
131377
+ for (let offset = 0; ; offset += PAGE_SIZE) {
131378
+ const entries = storage.listVersions(scope, { limit: PAGE_SIZE, offset });
131379
+ for (const entry of entries) {
131380
+ if (entry.dataPointId === null)
131381
+ return true;
131382
+ if (BigInt(entry.version) >= failed)
131383
+ return true;
131384
+ }
131385
+ if (entries.length < PAGE_SIZE)
131386
+ return false;
131387
+ }
131388
+ }
131094
131389
  async function registryState(deps, scope) {
131095
131390
  if (isGatewayReservedScope(scope) && deps.deleteData?.head && deps.serverOwner) {
131096
131391
  let head;
@@ -131167,6 +131462,7 @@ function createSyncManager(uploadDeps, downloadDeps, options) {
131167
131462
  let needsStartupHydration = startupHydrateScopes.length > 0;
131168
131463
  const hydratedScopes = /* @__PURE__ */ new Set();
131169
131464
  const downloadRetryMemory = createDownloadRetryMemory();
131465
+ const tombstoneResubmits = createTombstoneResubmitTracker();
131170
131466
  const dataPointFeed = downloadDeps.dataPointFeed ?? uploadDeps.dataPointFeed;
131171
131467
  const scopeDeletions = uploadDeps.scopeDeletions ?? downloadDeps.scopeDeletions;
131172
131468
  const workerUploadDeps = {
@@ -131259,15 +131555,54 @@ function createSyncManager(uploadDeps, downloadDeps, options) {
131259
131555
  cycleInFlight = null;
131260
131556
  }
131261
131557
  }
131558
+ function deleteScopeDeps() {
131559
+ return {
131560
+ storage: uploadDeps.storage,
131561
+ serverOwner: uploadDeps.serverOwner,
131562
+ deleteData: options?.deleteData,
131563
+ pendingBlobDeletions: options?.pendingBlobDeletions,
131564
+ tombstoneFinality: options?.tombstoneFinality,
131565
+ scopeDeletions,
131566
+ dataPointFeed,
131567
+ logger: uploadDeps.logger
131568
+ };
131569
+ }
131570
+ function deleteAdditionsAfter(scope) {
131571
+ const additions = uploadDeps.additions;
131572
+ if (!additions)
131573
+ return;
131574
+ void mutationQueue.then(() => additions.deleteScope(scope)).catch((err2) => {
131575
+ uploadDeps.logger.warn({ scope, error: err2.message }, "Could not delete the additions ledger of a re-deleted scope");
131576
+ });
131577
+ }
131262
131578
  async function runUploadCycle() {
131263
131579
  try {
131264
131580
  await retryPendingBlobDeletions({
131265
131581
  deleteData: options?.deleteData,
131266
131582
  pendingBlobDeletions: options?.pendingBlobDeletions,
131583
+ tombstoneFinality: options?.tombstoneFinality,
131267
131584
  dataPointFeed,
131268
131585
  serverOwner: uploadDeps.serverOwner,
131269
131586
  storage: uploadDeps.storage,
131270
- logger: uploadDeps.logger
131587
+ logger: uploadDeps.logger,
131588
+ ...options?.tombstoneFinality && options.deleteData ? {
131589
+ tombstoneResubmits,
131590
+ // Already inside the mutation queue: call the worker directly.
131591
+ async resubmitDeletion(scope, resubmit) {
131592
+ const result = await deleteScope(deleteScopeDeps(), scope, resubmit);
131593
+ if (result.durable)
131594
+ deleteAdditionsAfter(scope);
131595
+ return result;
131596
+ },
131597
+ onDeletionAbandoned(state) {
131598
+ pushError({
131599
+ fileId: null,
131600
+ scope: state.scope,
131601
+ message: state.reason === "head-changed" ? `Deletion of ${state.scope} did not complete: the gateway tombstone failed and the data is live again. Delete it again to retry.` : `Deletion of ${state.scope} did not complete: the gateway tombstone failed ${state.attempts + 1} times and the data is live again. Delete it again to retry.`,
131602
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
131603
+ });
131604
+ }
131605
+ } : {}
131271
131606
  });
131272
131607
  } catch (err2) {
131273
131608
  uploadDeps.logger.warn({ error: err2.message }, "Pending blob deletion retry failed");
@@ -131372,7 +131707,8 @@ function createSyncManager(uploadDeps, downloadDeps, options) {
131372
131707
  lastProcessedTimestamp,
131373
131708
  pendingFiles,
131374
131709
  hydratedScopes: [...hydratedScopes],
131375
- errors: [...errors]
131710
+ errors: [...errors],
131711
+ deletions: tombstoneResubmits.snapshot()
131376
131712
  };
131377
131713
  },
131378
131714
  hydrateScopes(scopes) {
@@ -131392,15 +131728,10 @@ function createSyncManager(uploadDeps, downloadDeps, options) {
131392
131728
  scheduleNotifiedCycle();
131393
131729
  },
131394
131730
  async deleteScope(scope) {
131395
- const result = await exclusive(() => deleteScope({
131396
- storage: uploadDeps.storage,
131397
- serverOwner: uploadDeps.serverOwner,
131398
- deleteData: options?.deleteData,
131399
- pendingBlobDeletions: options?.pendingBlobDeletions,
131400
- scopeDeletions,
131401
- dataPointFeed,
131402
- logger: uploadDeps.logger
131403
- }, scope));
131731
+ const result = await exclusive(() => {
131732
+ tombstoneResubmits.reset(scope);
131733
+ return deleteScope(deleteScopeDeps(), scope);
131734
+ });
131404
131735
  if (result.durable && uploadDeps.additions)
131405
131736
  await uploadDeps.additions.deleteScope(scope);
131406
131737
  return result;
@@ -131409,6 +131740,107 @@ function createSyncManager(uploadDeps, downloadDeps, options) {
131409
131740
  return manager;
131410
131741
  }
131411
131742
 
131743
+ // ../core/dist/sync/tombstone-finality.js
131744
+ var PAGE_LIMIT = 1e3;
131745
+ var MAX_PAGES = 20;
131746
+ var SETTLED = /* @__PURE__ */ new Set(["finalized", "failed"]);
131747
+ function createInventoryTombstoneFinality(inventory, options = {}) {
131748
+ const now = options.now ?? Date.now;
131749
+ const minRecheck = options.minRecheckMs ?? 6e4;
131750
+ const maxRecheck = options.maxRecheckMs ?? 15 * 6e4;
131751
+ const recheck = /* @__PURE__ */ new Map();
131752
+ const idle = {
131753
+ finalized: null,
131754
+ settling: false,
131755
+ rolledBack: null
131756
+ };
131757
+ async function read(scope, from14) {
131758
+ let after = (from14 > 0n ? from14 - 1n : 0n).toString();
131759
+ let finalized = null;
131760
+ let settling = false;
131761
+ let top = null;
131762
+ let head = null;
131763
+ let complete = false;
131764
+ for (let count = 0; count < MAX_PAGES; count++) {
131765
+ const result = await inventory.page(scope, { after, limit: PAGE_LIMIT });
131766
+ head = result.data.head ?? null;
131767
+ for (const version5 of result.data.versions) {
131768
+ const value = BigInt(version5.expectedVersion);
131769
+ if (value < from14)
131770
+ continue;
131771
+ if (top === null || value > top.version) {
131772
+ top = {
131773
+ version: value,
131774
+ failedTombstone: version5.isTombstone && version5.status === "failed"
131775
+ };
131776
+ }
131777
+ if (!version5.isTombstone)
131778
+ continue;
131779
+ if (version5.status === "finalized") {
131780
+ if (finalized === null || value > finalized)
131781
+ finalized = value;
131782
+ } else if (!SETTLED.has(version5.status)) {
131783
+ settling = true;
131784
+ }
131785
+ }
131786
+ if (!result.pagination.hasMore) {
131787
+ complete = true;
131788
+ break;
131789
+ }
131790
+ const next = result.pagination.nextAfter;
131791
+ if (next === null)
131792
+ break;
131793
+ after = next;
131794
+ }
131795
+ if (head !== null && (head.deletedAt !== null || isTombstoneRecord(head))) {
131796
+ const value = BigInt(head.expectedVersion);
131797
+ if (head.status === "finalized") {
131798
+ if (finalized === null || value > finalized)
131799
+ finalized = value;
131800
+ } else if (!SETTLED.has(head.status)) {
131801
+ settling = true;
131802
+ }
131803
+ }
131804
+ let rolledBack = null;
131805
+ if (complete && !settling && top?.failedTombstone) {
131806
+ const restored = head !== null && head.deletedAt === null && !isTombstoneRecord(head) && BigInt(head.expectedVersion) < top.version ? head : null;
131807
+ if (restored) {
131808
+ rolledBack = {
131809
+ tombstoneVersion: top.version.toString(),
131810
+ head: {
131811
+ expectedVersion: restored.expectedVersion,
131812
+ dataHash: restored.dataHash,
131813
+ metadataHash: restored.metadataHash
131814
+ }
131815
+ };
131816
+ }
131817
+ }
131818
+ return {
131819
+ finalized: finalized === null ? null : finalized.toString(),
131820
+ settling,
131821
+ rolledBack
131822
+ };
131823
+ }
131824
+ return {
131825
+ async tombstoneState(scope, atOrAbove) {
131826
+ const waiting = recheck.get(scope);
131827
+ if (waiting && now() < waiting.at)
131828
+ return idle;
131829
+ const state = await read(scope, BigInt(atOrAbove));
131830
+ if (state.finalized !== null || state.settling) {
131831
+ recheck.delete(scope);
131832
+ return state;
131833
+ }
131834
+ const interval = waiting ? Math.min(waiting.interval * 2, maxRecheck) : minRecheck;
131835
+ recheck.set(scope, { at: now() + interval, interval });
131836
+ return state;
131837
+ },
131838
+ recheckNow(scope) {
131839
+ recheck.delete(scope);
131840
+ }
131841
+ };
131842
+ }
131843
+
131412
131844
  // ../core/dist/replication/door.js
131413
131845
  var ReplicationRefusedError = class extends Error {
131414
131846
  reason;
@@ -138165,6 +138597,8 @@ function createVersionInventoryClient(options) {
138165
138597
  const current = (await page(scope, { limit: 1, signal })).data.head;
138166
138598
  return current ? {
138167
138599
  expectedVersion: current.expectedVersion,
138600
+ dataHash: current.dataHash,
138601
+ metadataHash: current.metadataHash,
138168
138602
  deletedAt: current.deletedAt
138169
138603
  } : null;
138170
138604
  }
@@ -172488,6 +172922,16 @@ async function createPsLiteSyncManager(options) {
172488
172922
  }
172489
172923
  });
172490
172924
  const pendingBlobDeletions = createPsLitePendingBlobDeletionStore(options.stateStore);
172925
+ const tombstoneFinality = createInventoryTombstoneFinality(createVersionInventoryClient({
172926
+ gatewayUrl: options.config.gateway.url,
172927
+ ownerAddress: serverOwner,
172928
+ ownerSigner: ownerRequestSigner ?? {
172929
+ signRequest: (params) => buildWeb3SignedHeader({
172930
+ ...params,
172931
+ signMessage: (message) => syncAccount.signMessage(message)
172932
+ })
172933
+ }
172934
+ }));
172491
172935
  const downloadDiagnostics = options.diagnostics ? buildDownloadDiagnosticsHook(options.diagnostics) : void 0;
172492
172936
  const syncManager = createSyncManager({
172493
172937
  additions,
@@ -172516,6 +172960,7 @@ async function createPsLiteSyncManager(options) {
172516
172960
  }, {
172517
172961
  deleteData,
172518
172962
  pendingBlobDeletions,
172963
+ tombstoneFinality,
172519
172964
  async canSync() {
172520
172965
  if (options.ownerSyncSigner)
172521
172966
  return { ok: true };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opendatalabs/personal-server-ts-server",
3
- "version": "1.35.2",
3
+ "version": "1.35.3",
4
4
  "description": "Hono HTTP server for the Vana Personal Server — routes, middleware, composition root",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -55,8 +55,8 @@
55
55
  },
56
56
  "dependencies": {
57
57
  "@hono/node-server": "^1.19.17",
58
- "@opendatalabs/personal-server-ts-core": "1.35.2",
59
- "@opendatalabs/personal-server-ts-lite": "1.35.2",
58
+ "@opendatalabs/personal-server-ts-core": "1.35.3",
59
+ "@opendatalabs/personal-server-ts-lite": "1.35.3",
60
60
  "@opendatalabs/vana-sdk": "3.23.0-pr.211.36da1d8",
61
61
  "ajv": "^8.20.0",
62
62
  "better-sqlite3": "^12.11.1",