From 96f7b38e8ddafba1a322caf1f03cfd8de16419a2 Mon Sep 17 00:00:00 2001 From: Xinyu Ma Date: Tue, 23 Jan 2024 01:41:12 -0800 Subject: [PATCH] Improve workspace. Do not destroy the storage. --- package.json | 4 +-- pnpm-lock.yaml | 58 ++++++++++++++++++------------------ src/sync-agent/deliveries.ts | 2 ++ src/sync-agent/sync-agent.ts | 4 +-- src/workspace/workspace.ts | 6 +++- 5 files changed, 40 insertions(+), 34 deletions(-) diff --git a/package.json b/package.json index f332844..c9df07c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@ucla-irl/ndnts-aux", - "version": "1.0.5", + "version": "1.0.7", "description": "NDNts Auxiliary Package for Web and Deno", "scripts": { "test": "deno test", @@ -23,7 +23,7 @@ "jose": "^5.2.0", "tslib": "^2.6.2", "uuid": "^9.0.1", - "yjs": "^13.6.10" + "yjs": "^13.6.11" }, "devDependencies": { "@ndn/endpoint": "https://ndnts-nightly.ndn.today/endpoint.tgz", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 02c9eec..fde3b9f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,8 +18,8 @@ dependencies: specifier: ^9.0.1 version: 9.0.1 yjs: - specifier: ^13.6.10 - version: 13.6.10 + specifier: ^13.6.11 + version: 13.6.11 devDependencies: '@ndn/endpoint': @@ -638,8 +638,8 @@ packages: /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - /type-fest@4.9.0: - resolution: {integrity: sha512-KS/6lh/ynPGiHD/LnAobrEFq3Ad4pBzOlJ1wAnJx9N4EYoqFhMfLIBjUT2UEx4wg5ZE+cC1ob6DCSpppVo+rtg==} + /type-fest@4.10.0: + resolution: {integrity: sha512-NPaKJsb4wyJ16qc8zBQrWswLKv/YirgBFykvUQ1Iajt2wd+twC8E4hFXdlIXqiMl6kWA0zY8tUJ9ELVAdu5h7w==} engines: {node: '>=16'} dev: true @@ -705,8 +705,8 @@ packages: optional: true dev: true - /yjs@13.6.10: - resolution: {integrity: sha512-1JcyQek1vaMyrDm7Fqfa+pvHg/DURSbVo4VmeN7wjnTKB/lZrfIPhdCj7d8sboK6zLfRBJXegTjc9JlaDd8/Zw==} + /yjs@13.6.11: + resolution: {integrity: sha512-FvRRJKX9u270dOLkllGF/UDCWwmIv2Z+ucM4v1QO1TuxdmoiMnSUXH1HAcOKOrkBEhQtPTkxep7tD2DrQB+l0g==} engines: {node: '>=16.0.0', npm: '>=8.0.0'} dependencies: lib0: 0.2.88 @@ -715,7 +715,7 @@ packages: '@ndnts-nightly.ndn.today/endpoint.tgz': resolution: {tarball: https://ndnts-nightly.ndn.today/endpoint.tgz} name: '@ndn/endpoint' - version: 0.0.20240118-nightly-40058b1 + version: 0.0.20240122-nightly-4ebab5b dependencies: '@ndn/fw': '@ndnts-nightly.ndn.today/fw.tgz' '@ndn/packet': '@ndnts-nightly.ndn.today/packet.tgz' @@ -728,7 +728,7 @@ packages: '@ndnts-nightly.ndn.today/fw.tgz': resolution: {tarball: https://ndnts-nightly.ndn.today/fw.tgz} name: '@ndn/fw' - version: 0.0.20240118-nightly-40058b1 + version: 0.0.20240122-nightly-4ebab5b dependencies: '@ndn/packet': '@ndnts-nightly.ndn.today/packet.tgz' '@ndn/util': '@ndnts-nightly.ndn.today/util.tgz' @@ -745,7 +745,7 @@ packages: '@ndnts-nightly.ndn.today/keychain.tgz': resolution: {tarball: https://ndnts-nightly.ndn.today/keychain.tgz} name: '@ndn/keychain' - version: 0.0.20240118-nightly-40058b1 + version: 0.0.20240122-nightly-4ebab5b dependencies: '@ndn/naming-convention2': '@ndnts-nightly.ndn.today/naming-convention2.tgz' '@ndn/packet': '@ndnts-nightly.ndn.today/packet.tgz' @@ -762,7 +762,7 @@ packages: '@ndnts-nightly.ndn.today/l3face.tgz': resolution: {tarball: https://ndnts-nightly.ndn.today/l3face.tgz} name: '@ndn/l3face' - version: 0.0.20240118-nightly-40058b1 + version: 0.0.20240122-nightly-4ebab5b dependencies: '@ndn/fw': '@ndnts-nightly.ndn.today/fw.tgz' '@ndn/lp': '@ndnts-nightly.ndn.today/lp.tgz' @@ -775,14 +775,14 @@ packages: retry: 0.13.1 streaming-iterables: 8.0.1 tslib: 2.6.2 - type-fest: 4.9.0 + type-fest: 4.10.0 typescript-event-target: 1.1.0 dev: true '@ndnts-nightly.ndn.today/lp.tgz': resolution: {tarball: https://ndnts-nightly.ndn.today/lp.tgz} name: '@ndn/lp' - version: 0.0.20240118-nightly-40058b1 + version: 0.0.20240122-nightly-4ebab5b dependencies: '@ndn/packet': '@ndnts-nightly.ndn.today/packet.tgz' '@ndn/tlv': '@ndnts-nightly.ndn.today/tlv.tgz' @@ -794,7 +794,7 @@ packages: '@ndnts-nightly.ndn.today/naming-convention2.tgz': resolution: {tarball: https://ndnts-nightly.ndn.today/naming-convention2.tgz} name: '@ndn/naming-convention2' - version: 0.0.20240118-nightly-40058b1 + version: 0.0.20240122-nightly-4ebab5b dependencies: '@ndn/packet': '@ndnts-nightly.ndn.today/packet.tgz' '@ndn/tlv': '@ndnts-nightly.ndn.today/tlv.tgz' @@ -805,7 +805,7 @@ packages: '@ndnts-nightly.ndn.today/ndncert.tgz': resolution: {tarball: https://ndnts-nightly.ndn.today/ndncert.tgz} name: '@ndn/ndncert' - version: 0.0.20240118-nightly-40058b1 + version: 0.0.20240122-nightly-4ebab5b dependencies: '@ndn/endpoint': '@ndnts-nightly.ndn.today/endpoint.tgz' '@ndn/keychain': '@ndnts-nightly.ndn.today/keychain.tgz' @@ -822,14 +822,14 @@ packages: nodemailer: 6.9.8 p-timeout: 6.1.2 tslib: 2.6.2 - type-fest: 4.9.0 + type-fest: 4.10.0 typescript-event-target: 1.1.0 dev: true '@ndnts-nightly.ndn.today/ndnsec.tgz': resolution: {tarball: https://ndnts-nightly.ndn.today/ndnsec.tgz} name: '@ndn/ndnsec' - version: 0.0.20240118-nightly-40058b1 + version: 0.0.20240122-nightly-4ebab5b dependencies: '@ndn/keychain': '@ndnts-nightly.ndn.today/keychain.tgz' '@ndn/packet': '@ndnts-nightly.ndn.today/packet.tgz' @@ -844,7 +844,7 @@ packages: '@ndnts-nightly.ndn.today/nfdmgmt.tgz': resolution: {tarball: https://ndnts-nightly.ndn.today/nfdmgmt.tgz} name: '@ndn/nfdmgmt' - version: 0.0.20240118-nightly-40058b1 + version: 0.0.20240122-nightly-4ebab5b dependencies: '@ndn/endpoint': '@ndnts-nightly.ndn.today/endpoint.tgz' '@ndn/fw': '@ndnts-nightly.ndn.today/fw.tgz' @@ -860,12 +860,12 @@ packages: '@ndnts-nightly.ndn.today/node-transport.tgz': resolution: {tarball: https://ndnts-nightly.ndn.today/node-transport.tgz} name: '@ndn/node-transport' - version: 0.0.20240118-nightly-40058b1 + version: 0.0.20240122-nightly-4ebab5b dependencies: '@ndn/l3face': '@ndnts-nightly.ndn.today/l3face.tgz' event-iterator: 2.0.0 tslib: 2.6.2 - type-fest: 4.9.0 + type-fest: 4.10.0 url-format-lax: 2.0.0 url-parse-lax: 5.0.0 dev: true @@ -873,20 +873,20 @@ packages: '@ndnts-nightly.ndn.today/packet.tgz': resolution: {tarball: https://ndnts-nightly.ndn.today/packet.tgz} name: '@ndn/packet' - version: 0.0.20240118-nightly-40058b1 + version: 0.0.20240122-nightly-4ebab5b dependencies: '@ndn/tlv': '@ndnts-nightly.ndn.today/tlv.tgz' '@ndn/util': '@ndnts-nightly.ndn.today/util.tgz' buffer-compare: 1.1.1 mnemonist: 0.39.7 tslib: 2.6.2 - type-fest: 4.9.0 + type-fest: 4.10.0 dev: true '@ndnts-nightly.ndn.today/rdr.tgz': resolution: {tarball: https://ndnts-nightly.ndn.today/rdr.tgz} name: '@ndn/rdr' - version: 0.0.20240118-nightly-40058b1 + version: 0.0.20240122-nightly-4ebab5b dependencies: '@ndn/endpoint': '@ndnts-nightly.ndn.today/endpoint.tgz' '@ndn/naming-convention2': '@ndnts-nightly.ndn.today/naming-convention2.tgz' @@ -898,7 +898,7 @@ packages: '@ndnts-nightly.ndn.today/repo-api.tgz': resolution: {tarball: https://ndnts-nightly.ndn.today/repo-api.tgz} name: '@ndn/repo-api' - version: 0.0.20240118-nightly-40058b1 + version: 0.0.20240122-nightly-4ebab5b dependencies: '@ndn/l3face': '@ndnts-nightly.ndn.today/l3face.tgz' '@ndn/naming-convention2': '@ndnts-nightly.ndn.today/naming-convention2.tgz' @@ -919,7 +919,7 @@ packages: '@ndnts-nightly.ndn.today/segmented-object.tgz': resolution: {tarball: https://ndnts-nightly.ndn.today/segmented-object.tgz} name: '@ndn/segmented-object' - version: 0.0.20240118-nightly-40058b1 + version: 0.0.20240122-nightly-4ebab5b dependencies: '@ndn/endpoint': '@ndnts-nightly.ndn.today/endpoint.tgz' '@ndn/fw': '@ndnts-nightly.ndn.today/fw.tgz' @@ -940,7 +940,7 @@ packages: '@ndnts-nightly.ndn.today/sync.tgz': resolution: {tarball: https://ndnts-nightly.ndn.today/sync.tgz} name: '@ndn/sync' - version: 0.0.20240118-nightly-40058b1 + version: 0.0.20240122-nightly-4ebab5b dependencies: '@ndn/endpoint': '@ndnts-nightly.ndn.today/endpoint.tgz' '@ndn/naming-convention2': '@ndnts-nightly.ndn.today/naming-convention2.tgz' @@ -964,18 +964,18 @@ packages: '@ndnts-nightly.ndn.today/tlv.tgz': resolution: {tarball: https://ndnts-nightly.ndn.today/tlv.tgz} name: '@ndn/tlv' - version: 0.0.20240118-nightly-40058b1 + version: 0.0.20240122-nightly-4ebab5b dependencies: '@ndn/util': '@ndnts-nightly.ndn.today/util.tgz' mnemonist: 0.39.7 tslib: 2.6.2 - type-fest: 4.9.0 + type-fest: 4.10.0 dev: true '@ndnts-nightly.ndn.today/util.tgz': resolution: {tarball: https://ndnts-nightly.ndn.today/util.tgz} name: '@ndn/util' - version: 0.0.20240118-nightly-40058b1 + version: 0.0.20240122-nightly-4ebab5b engines: {node: ^18.18.0 || ^20.0.0 || ^21.0.0} dependencies: '@types/minimalistic-assert': 1.0.3 @@ -987,7 +987,7 @@ packages: '@ndnts-nightly.ndn.today/ws-transport.tgz': resolution: {tarball: https://ndnts-nightly.ndn.today/ws-transport.tgz} name: '@ndn/ws-transport' - version: 0.0.20240118-nightly-40058b1 + version: 0.0.20240122-nightly-4ebab5b dependencies: '@ndn/l3face': '@ndnts-nightly.ndn.today/l3face.tgz' '@types/ws': 8.5.10 diff --git a/src/sync-agent/deliveries.ts b/src/sync-agent/deliveries.ts index 40ba424..e575e74 100644 --- a/src/sync-agent/deliveries.ts +++ b/src/sync-agent/deliveries.ts @@ -219,6 +219,8 @@ export class AtLeastOnceDelivery extends SyncDelivery { override async handleSyncUpdate(update: SyncUpdate) { const prefix = getNamespace().baseName(update.id, this.syncPrefix); let lastHandled = update.loSeqNum - 1; + // Modify NDNts's segmented object fetching pipeline to fetch sequences. + // See: https://github.com/zjkmxy/ndn-cc-v3/blob/2128cd8614d8116f7d9dfb17f86f71fbac258739/src/lib/backend/main.ts#L88-L106 for (let i = update.loSeqNum; i <= update.hiSeqNum; i++) { const name = prefix.append(SequenceNum.create(i)); try { diff --git a/src/sync-agent/sync-agent.ts b/src/sync-agent/sync-agent.ts index 4ad6368..2fe7fc4 100644 --- a/src/sync-agent/sync-agent.ts +++ b/src/sync-agent/sync-agent.ts @@ -299,13 +299,13 @@ export class SyncAgent { wire = await this.persistStorage.get(key); } if (wire === undefined) { - console.warn(`A remote peer is fetching a non-existing object: ${intName.toString()}`); + // console.warn(`A remote peer is fetching a non-existing object: ${intName.toString()}`); return undefined; } try { const data = Decoder.decode(wire, Data); if (isLatestOnly && !data.name.equals(intName)) { - console.log(`A status with not existing version is requested: ${intName.toString()}`); + // console.log(`A status with not existing version is requested: ${intName.toString()}`); return undefined; } return data; diff --git a/src/workspace/workspace.ts b/src/workspace/workspace.ts index 5ea06d8..1ea0de5 100644 --- a/src/workspace/workspace.ts +++ b/src/workspace/workspace.ts @@ -75,10 +75,14 @@ export class Workspace { ); } + public fireUpdate() { + this.syncAgent.fire(); + } + public destroy() { this.syncAgent.ready = false; this.yjsSnapshotMgr.destroy(); this.syncAgent.destroy(); - this.persistStore.close(); + // persistStore is not created by workspace } }