From fe4e82938130223f4000cd2d9d0e0b9be88236b0 Mon Sep 17 00:00:00 2001 From: Brian Warner Date: Tue, 29 Mar 2022 23:57:34 -0700 Subject: [PATCH] fix(swingset): abandon/delete most non-durables during stopVat() This deletes most non-durable data during upgrade. stopVat() delegates to a new function `releaseOldState()`, which makes an incomplete effort to drop everything. The portions which are complete are: * find all locally-decided promises and rejects them * find all exported Remotables and virtual objects, and abandons them * simulate finalizers for all in-RAM Presences and Representatives * use collectionManager to delete all virtual collections * perform a bringOutYourDead to clean up resulting dead references After that, `deleteVirtualObjectsWithoutDecref` walks the vatstore and deletes the data from all virtual objects, without attempting to decref the things they pointed to. This fails to release durables and imports which were referenced by those virtual objects (e.g. cycles that escaped the earlier purge). Code is written, but not yet complete, to decref those objects properly. A later update to this file will activate that (and update the tests to confirm it works). The new unit test constructs a large object graph and examines it afterwards to make sure everything was deleted appropriately. The test knows about the limitations of `deleteVirtualObjectsWithoutDecref`, as well as bug #5053 which causes some other objects to be retained incorrectly. refs #1848 --- .../src/liveslots/collectionManager.js | 26 +- packages/SwingSet/src/liveslots/liveslots.js | 66 +-- packages/SwingSet/src/liveslots/stop-vat.js | 393 ++++++++++++++++++ .../src/liveslots/virtualReferences.js | 1 + .../test/upgrade/bootstrap-upgrade.js | 90 +++- packages/SwingSet/test/upgrade/num-sensors.js | 1 + .../SwingSet/test/upgrade/object-graph.pdf | Bin 0 -> 263316 bytes .../SwingSet/test/upgrade/test-upgrade.js | 181 +++++++- packages/SwingSet/test/upgrade/vat-ulrik-1.js | 138 +++++- packages/SwingSet/test/upgrade/vat-ulrik-2.js | 38 +- 10 files changed, 873 insertions(+), 61 deletions(-) create mode 100644 packages/SwingSet/src/liveslots/stop-vat.js create mode 100644 packages/SwingSet/test/upgrade/num-sensors.js create mode 100644 packages/SwingSet/test/upgrade/object-graph.pdf diff --git a/packages/SwingSet/src/liveslots/collectionManager.js b/packages/SwingSet/src/liveslots/collectionManager.js index da1683beaa5b..b04b724eb1bf 100644 --- a/packages/SwingSet/src/liveslots/collectionManager.js +++ b/packages/SwingSet/src/liveslots/collectionManager.js @@ -31,6 +31,7 @@ export function makeCollectionManager( serialize, unserialize, ) { + const allVirtualCollectionObjIDs = new Set(); const storeKindIDToName = new Map(); const storeKindInfo = { @@ -125,6 +126,10 @@ export function makeCollectionManager( return storeKindInfo[kindName].kindID; } + function collectionExists(collectionID) { + return !!syscall.vatstoreGet(prefixc(collectionID, '|nextOrdinal')); + } + // Not that it's only used for this purpose, what should it be called? // TODO Should we be using the new encodeBigInt scheme instead, anyway? const BIGINT_TAG_LEN = 10; @@ -552,8 +557,15 @@ export function makeCollectionManager( function deleteCollection(vobjID) { const { id, subid } = parseVatSlot(vobjID); + if (!collectionExists(subid)) { + return false; // already deleted + } const kindName = storeKindIDToName.get(`${id}`); const collection = summonCollectionInternal(false, 'GC', subid, kindName); + const { durable } = storeKindInfo[kindName]; + if (!durable) { + allVirtualCollectionObjIDs.delete(vobjID); + } const doMoreGC = collection.clearInternal(true); let priorKey = ''; @@ -568,6 +580,14 @@ export function makeCollectionManager( return doMoreGC; } + function deleteAllVirtualCollections() { + const vobjIDs = Array.from(allVirtualCollectionObjIDs).sort(); + for (const vobjID of vobjIDs) { + deleteCollection(vobjID); + allVirtualCollectionObjIDs.delete(vobjID); + } + } + function makeCollection(label, kindName, keySchema, valueSchema) { assert.typeof(label, 'string'); assert(storeKindInfo[kindName]); @@ -582,7 +602,10 @@ export function makeCollectionManager( const vobjID = `o+${kindID}/${collectionID}`; syscall.vatstoreSet(prefixc(collectionID, '|nextOrdinal'), '1'); - const { hasWeakKeys } = storeKindInfo[kindName]; + const { durable, hasWeakKeys } = storeKindInfo[kindName]; + if (!durable) { + allVirtualCollectionObjIDs.add(vobjID); + } if (!hasWeakKeys) { syscall.vatstoreSet(prefixc(collectionID, '|entryCount'), '0'); } @@ -828,6 +851,7 @@ export function makeCollectionManager( return harden({ initializeStoreKindInfo, + deleteAllVirtualCollections, makeScalarBigMapStore, makeScalarBigWeakMapStore, makeScalarBigSetStore, diff --git a/packages/SwingSet/src/liveslots/liveslots.js b/packages/SwingSet/src/liveslots/liveslots.js index 87eb951e7965..f074ce4a43d1 100644 --- a/packages/SwingSet/src/liveslots/liveslots.js +++ b/packages/SwingSet/src/liveslots/liveslots.js @@ -16,6 +16,7 @@ import { insistMessage } from '../lib/message.js'; import { makeVirtualReferenceManager } from './virtualReferences.js'; import { makeVirtualObjectManager } from './virtualObjectManager.js'; import { makeCollectionManager } from './collectionManager.js'; +import { releaseOldState } from './stop-vat.js'; const DEFAULT_VIRTUAL_OBJECT_CACHE_SIZE = 3; // XXX ridiculously small value to force churn for testing @@ -1265,32 +1266,6 @@ function build( vom.insistAllDurableKindsReconnected(); } - /** - * @returns { Promise } - */ - async function stopVat() { - assert(didStartVat); - assert(!didStopVat); - didStopVat = true; - - // Pretend that userspace rejected all non-durable promises. We - // basically do the same thing that `thenReject(p, - // vpid)(rejection)` would have done, but we skip ahead to the - // syscall.resolve part. The real `thenReject` also does - // pRec.reject(), which would give control to userspace (who might - // have re-imported the promise and attached a .then to it), and - // stopVat() must not allow userspace to gain agency. - - const rejectCapData = m.serialize('vat upgraded'); - const vpids = Array.from(deciderVPIDs.keys()).sort(); - const rejections = vpids.map(vpid => [vpid, true, rejectCapData]); - if (rejections.length) { - syscall.resolve(rejections); - } - // eslint-disable-next-line no-use-before-define - await bringOutYourDead(); - } - /** * @param { VatDeliveryObject } delivery * @returns { void | Promise } @@ -1330,10 +1305,6 @@ function build( result = startVat(vpCapData); break; } - case 'stopVat': { - result = stopVat(); - break; - } default: assert.fail(X`unknown delivery type ${type}`); } @@ -1354,6 +1325,37 @@ function build( return undefined; } + /** + * @returns { Promise } + */ + async function stopVat() { + assert(didStartVat); + assert(!didStopVat); + didStopVat = true; + + try { + await releaseOldState({ + m, + deciderVPIDs, + syscall, + exportedRemotables, + addToPossiblyDeadSet, + slotToVal, + valToSlot, + dropExports, + retireExports, + vrm, + collectionManager, + bringOutYourDead, + vreffedObjectRegistry, + }); + } catch (e) { + console.log(`-- error during stopVat()`); + console.log(e); + throw e; + } + } + /** * Do things that should be done (such as flushing caches to disk) after a * dispatch has completed and user code has relinquished agency. @@ -1402,9 +1404,11 @@ function build( */ async function dispatch(delivery) { // We must short-circuit dispatch to bringOutYourDead here because it has to - // be async + // be async, same for stopVat if (delivery[0] === 'bringOutYourDead') { return meterControl.runWithoutMeteringAsync(bringOutYourDead); + } else if (delivery[0] === 'stopVat') { + return meterControl.runWithoutMeteringAsync(stopVat); } else { // Start user code running, record any internal liveslots errors. We do // *not* directly wait for the userspace function to complete, nor for diff --git a/packages/SwingSet/src/liveslots/stop-vat.js b/packages/SwingSet/src/liveslots/stop-vat.js new file mode 100644 index 000000000000..0c6ed95a95c4 --- /dev/null +++ b/packages/SwingSet/src/liveslots/stop-vat.js @@ -0,0 +1,393 @@ +import { makeVatSlot, parseVatSlot } from '../lib/parseVatSlots.js'; + +// This file has tools to run during the last delivery of the old vat +// version, `dispatch.stopVat()`, just before an upgrade. It is +// responsible for deleting as much of the non-retained data as +// possible. The primary function is `releaseOldState()`, at the end; +// everything else is a helper function. + +// The only data that should be retained are those durable objects and +// collections which are transitively reachable from two sets of +// roots: the durable objects exported to other vats, and the +// "baggage" collection. All other durable objects, and *all* +// merely-virtual objects (regardless of export status) should be +// deleted. All imports which were kept alive by dropped object should +// also be dropped. + +// However, the possibility of cycles within durable storage means +// that a full cleanup requires a mark+sweep pass through all durable +// objects, which I think is too expensive for right now. + +// So instead, I'm going to settle on a cheaper `stopVat` which +// correctly drops durable objects and imports that were only kept +// alive by 1: RAM, 2: non-durable exports, or 3: non-durable +// objects/collections. It will require a walk through all non-durable +// objects and collections, but not a mark+sweep through all durable +// objects. + +// This cheaper form may leak some imports and storage, but should not +// allow the new vat to access anything it shouldn't, nor allow other +// vats to cause confusion in the new version (by referencing exports +// which the vat no longer remembers). + +const rootSlot = makeVatSlot('object', true, BigInt(0)); + +function rejectAllPromises({ m, deciderVPIDs, syscall }) { + // Pretend that userspace rejected all non-durable promises. We + // basically do the same thing that `thenReject(p, vpid)(rejection)` + // would have done, but we skip ahead to the syscall.resolve + // part. The real `thenReject` also does pRec.reject(), which would + // give control to userspace (who might have re-imported the promise + // and attached a .then to it), and stopVat() must not allow + // userspace to gain agency. + + const rejectCapData = m.serialize('vat upgraded'); + const vpids = Array.from(deciderVPIDs.keys()).sort(); + const rejections = vpids.map(vpid => [vpid, true, rejectCapData]); + if (rejections.length) { + syscall.resolve(rejections); + } +} + +function identifyExportedRemotables( + vrefSet, + { exportedRemotables, valToSlot }, +) { + // Find all exported "Remotables": precious in-RAM objects declared + // with Far and sent as message argument or promise resolution. + // These are all doomed, except for the root object (which the new + // version will rebind). We'll pretend the kernel drops these in a + // minute. + + for (const r of exportedRemotables) { + const vref = valToSlot.get(r); + if (vref === rootSlot) { + // We know the new version can/will reattach a new root + // object, so if the kernel is still watching it, don't + // abandon it. We don't simulate a dispatch.dropExports, to + // preserve any vdata that might be keyed by it. But we do + // drop it from RAM, so we can collect any Presences or + // Representatives the Remotable had captured. + exportedRemotables.delete(r); + } else { + vrefSet.add(vref); + } + } +} + +function identifyExportedFacets(vrefSet, { syscall, vrm }) { + // Find all exported (non-durable) virtual object facets, which are + // doomed because merely-virtual objects don't survive upgrade. We + // walk the "export status" (vom.es.) portion of the DB to find the + // ones that are reachable ('r') by the kernel, ignoring the ones + // that are merely recognizable ('s'). We'll pretend the kernel + // drops these in a minute. + + const prefix = 'vom.es.'; + let [key, value] = syscall.vatstoreGetAfter('', prefix); + while (key) { + const baseRef = key.slice(prefix.length); + const parsed = parseVatSlot(baseRef); + assert(parsed.virtual && parsed.baseRef === baseRef, baseRef); + if (!vrm.isDurableKind(parsed.id)) { + if (value.length === 1) { + // single-facet + if (value === 'r') { + const vref = baseRef; + vrefSet.add(vref); + } + } else { + // multi-facet + for (let i = 0; i < value.length; i += 1) { + if (value[i] === 'r') { + const vref = `${baseRef}:${i}`; + vrefSet.add(vref); + } + } + } + } + [key, value] = syscall.vatstoreGetAfter(key, prefix); + } +} + +function abandonExports(vrefSet, tools) { + // Pretend the kernel dropped everything in the set. The Remotables + // will be removed from exportedRemotables. If the export was the + // only pillar keeping them alive, the objects will be deleted, + // decrefs will happen, and a bunch of stuff will be pushed onto + // possiblyDeadSet. The virtual objects will lose their export + // pillar, which may do the same. + + const { dropExports, retireExports, syscall } = tools; + const abandonedVrefs = Array.from(vrefSet).sort(); + dropExports(abandonedVrefs); + // also pretend the kernel retired them, so we retire them ourselves + retireExports(abandonedVrefs); + + // Now that we think they're gone, abandon them so the kernel agrees + syscall.abandonExports(abandonedVrefs); +} + +// eslint-disable-next-line no-unused-vars +function finalizeEverything(tools) { + const { slotToVal, addToPossiblyDeadSet, vreffedObjectRegistry } = tools; + + // The liveslots tables which might keep userspace objects alive + // are: + // * exportedRemotables + // * importedDevices + // * importedPromisesByPromiseID + // * pendingPromises + // * vrm.remotableRefCounts + // * vrm.vrefRecognizers (which points to virtualObjectMap which + // is a strong Map whose values might be + // Presences or Representatives) + + // Use slotToVal to find all the Presences, Remotables, and + // Representatives, and simulate the finalizer calls. This doesn't + // remove those objects from RAM, but it makes liveslots + // decref/drop/retire things as if they were. + + for (const baseRef of slotToVal.keys()) { + const p = parseVatSlot(baseRef); + if (p.type === 'object' && baseRef !== rootSlot) { + const wr = slotToVal.get(baseRef); + const val = wr.deref(); + if (val) { + // the object is still around, so pretend it went away + addToPossiblyDeadSet(baseRef); + // and remove it, else scanForDeadObjects() will think it was + // reintroduced + slotToVal.delete(baseRef); + // stop the real finalizer from firing + vreffedObjectRegistry.unregister(val); + } + // if !wr.deref(), there should already be a finalizer call queued + } + } +} + +function deleteVirtualObjectsWithoutDecref({ vrm, syscall }) { + // delete the data of all non-durable virtual objects, without + // attempting to decrement the refcounts of the surviving + // imports/durable-objects they might point to + + const prefix = 'vom.o+'; + let [key, _value] = syscall.vatstoreGetAfter('', prefix); + while (key) { + const baseRef = key.slice('vom.'.length); + const p = parseVatSlot(baseRef); + if (!vrm.isDurableKind(p.id)) { + syscall.vatstoreDelete(key); + } + [key, _value] = syscall.vatstoreGetAfter(key, prefix); + } +} + +// BEGIN: the following functions aren't ready for use yet + +// eslint-disable-next-line no-unused-vars +function deleteVirtualObjectsWithDecref({ syscall, vrm }) { + // Delete the data of all non-durable objects, building up a list of + // decrefs to apply to possibly-surviving imports and durable + // objects that the late virtual objects pointed to. We don't need + // to tell the kernel that we're deleting these: we already + // abandoned any that were exported. + + const durableDecrefs = new Map(); // baseRef -> count + const importDecrefs = new Map(); // baseRef -> count + const prefix = 'vom.o+'; + + let [key, value] = syscall.vatstoreGetAfter('', prefix); + while (key) { + const baseRef = key.slice('vom.'.length); + const p = parseVatSlot(baseRef); + if (!vrm.isDurableKind(p.id)) { + const raw = JSON.parse(value); + for (const capdata of Object.values(raw)) { + for (const vref of capdata.slots) { + const p2 = parseVatSlot(vref); + if (p2.virtual && vrm.isDurableKind(p2.id)) { + const count = durableDecrefs.get(p2.baseRef) || 0; + durableDecrefs.set(p2.baseRef, count + 1); + } + if (!p2.allocatedByVat) { + const count = importDecrefs.get(p2.baseRef) || 0; + importDecrefs.set(p2.baseRef, count + 1); + } + } + } + syscall.vatstoreDelete(key); + } + [key, value] = syscall.vatstoreGetAfter(key, prefix); + } + + // now decrement the DOs and imports that were held by the VOs, + // applying the whole delta at once (instead of doing multiple + // single decrefs) + const durableBaserefs = Array.from(durableDecrefs.keys()).sort(); + for (const baseRef of durableBaserefs) { + vrm.decRefCount(baseRef, durableBaserefs.get(baseRef)); + } + + const importVrefs = Array.from(importDecrefs.keys()).sort(); + for (const baseRef of importVrefs) { + vrm.decRefCount(baseRef, importDecrefs.get(baseRef)); + } +} + +// eslint-disable-next-line no-unused-vars +function deleteCollectionsWithDecref({ syscall, vrm }) { + // TODO this is not ready yet + + // Delete all items of all non-durable collections, counting up how + // many references their values had to imports and durable objects, + // so we can decref them in a large chunk at the end. + + // Walk prefix='vc.', extract vc.NN., look up whether collectionID + // NN is durable or not, skip the durables, delete the vc.NN.| + // metadata keys, walk the remaining vc.NN. keys, JSON.parse each, + // extract slots, update decrefcounts, delete + + // TODO: vrefs used as keys may maintain a refcount, and need to be + // handled specially. This code will probably get confused by such + // entries. + + const durableDecrefs = new Map(); // baseRef -> count + const importDecrefs = new Map(); // baseRef -> count + const prefix = 'vom.vc.'; + + let [key, value] = syscall.vatstoreGetAfter('', prefix); + while (key) { + const subkey = key.slice(prefix.length); // '2.|meta' or '2.ENCKEY' + const collectionID = subkey.slice(0, subkey.index('.')); // string + const subsubkey = subkey.slice(collectionID.length); // '|meta' or 'ENCKEY' + const isMeta = subsubkey.slice(0, 1) === '|'; + const isDurable = 'TODO'; // ask collectionManager about collectionID + if (!isDurable && !isMeta) { + for (const vref of JSON.parse(value).slots) { + const p = parseVatSlot(vref); + if (p.virtual && vrm.isDurableKind(p.id)) { + const count = durableDecrefs.get(p.baseRef) || 0; + durableDecrefs.set(p.baseRef, count + 1); + } + if (!p.allocatedByVat) { + const count = importDecrefs.get(p.baseRef) || 0; + importDecrefs.set(p.baseRef, count + 1); + } + } + } + syscall.vatstoreDelete(key); + + [key, value] = syscall.vatstoreGetAfter(key, prefix); + } + const durableBaserefs = Array.from(durableDecrefs.keys()).sort(); + for (const baseRef of durableBaserefs) { + vrm.decRefCount(baseRef, durableBaserefs.get(baseRef)); + } + + const importVrefs = Array.from(importDecrefs.keys()).sort(); + for (const baseRef of importVrefs) { + vrm.decRefCount(baseRef, importDecrefs.get(baseRef)); + } +} + +// END: the preceding functions aren't ready for use yet + +export async function releaseOldState(tools) { + // First, pretend that userspace has rejected all non-durable + // promises, so we'll resolve them into the kernel (and retire their + // IDs). + + rejectAllPromises(tools); + + // The next step is to pretend that the kernel has dropped all + // non-durable exports: both the in-RAM Remotables and the on-disk + // virtual objects (but not the root object). This will trigger + // refcount decrements which may drop some virtuals from the DB. It + // might also drop some objects from RAM. + + const abandonedVrefSet = new Set(); + identifyExportedRemotables(abandonedVrefSet, tools); + identifyExportedFacets(abandonedVrefSet, tools); + abandonExports(abandonedVrefSet, tools); + + // Then we pretend userspace RAM has dropped all the vref-based + // objects that it was holding onto. + finalizeEverything(tools); + + // Now we ask collectionManager for help with deleting all + // non-durable collections. This will delete all the DB entries + // (including the metadata), decref everything they point to, + // including imports and DOs, and add to possiblyDeadSet. There + // might still be a Presence for the collection in RAM, but if/when + // it is deleted, the collectionManager will tolerate (ignore) the + // resulting attempt to free all the entries a second time. + + tools.collectionManager.deleteAllVirtualCollections(); + + // Now we'll have finalizers pending and `possiblyDeadSet` will be + // populated with our simulated drops, so a `bringOutYourDead` will + // release a lot. + + // eslint-disable-next-line no-use-before-define + await tools.bringOutYourDead(); + + // possiblyDeadSet is now empty + + // NOTE: instead of using deleteAllVirtualCollections() above (which + // does a lot of decref work we don't really care about), we might + // use deleteCollectionsWithDecref() here, once it's ready. It + // should be faster because it doesn't need to care about refcounts + // of virtual objects or Remotables, only those of imports and + // durables. But it bypasses the usual refcounting code, so it + // should probably be called after the last BOYD. + // + // deleteCollectionsWithDecref(tools); + + // The remaining data is virtual objects which participate in cycles + // (although not through virtual collections, which were deleted + // above), durable objects held by [those virtual objects, durable + // object cycles, exports, or baggage], and imports held by all of + // those. + + // eslint-disable-next-line no-constant-condition + if (1) { + // We delete the data of all merely-virtual objects. For now, we + // don't attempt to decrement the refcounts of things they point + // to (which might allow us to drop some imports and a subset of + // the durable objects). + deleteVirtualObjectsWithoutDecref(tools); + + // The remaining data is durable objects which were held by + // virtual-object cycles, or are still held by durable-object + // cycles or exports or baggage, and imports held by all of those. + + // At this point we declare sufficient victory and return. + } else { + // We delete the data of all merely-virtual objects, and + // accumulate counts of the deleted references to durable objects + // and imports (ignoring references to Remotables and other + // virtual objects). After deletion, we apply the decrefs, which + // may cause some durable objects and imports to be added to + // possiblyDeadSet. + deleteVirtualObjectsWithDecref(tools); + + // possiblyDeadSet will now have baserefs for durable objects and + // imports (the ones that were only kept alive by virtual-object + // cycles). There won't be any virtual-object baserefs in + // possiblyDeadSet because we didn't apply any of those + // decrefs. So our `bringOutYourDead` won't try to read or modify + // any of the on-disk refcounts for VOs (which would fail because + // we deleted everything). + + // eslint-disable-next-line no-use-before-define + await tools.bringOutYourDead(); + + // The remaining data is durable objects which are held by a + // durable-object cycle, exports, or baggage, and imports held by + // all of those. + + // At this point we declare sufficient victory and return. + } +} diff --git a/packages/SwingSet/src/liveslots/virtualReferences.js b/packages/SwingSet/src/liveslots/virtualReferences.js index dd7bc9e2ce17..44f9196b01e4 100644 --- a/packages/SwingSet/src/liveslots/virtualReferences.js +++ b/packages/SwingSet/src/liveslots/virtualReferences.js @@ -586,6 +586,7 @@ export function makeVirtualReferenceManager( return harden({ droppedCollectionRegistry, isDurable, + isDurableKind, registerKind, rememberFacetNames, reanimate, diff --git a/packages/SwingSet/test/upgrade/bootstrap-upgrade.js b/packages/SwingSet/test/upgrade/bootstrap-upgrade.js index b32b9c08f723..d55e88b62f43 100644 --- a/packages/SwingSet/test/upgrade/bootstrap-upgrade.js +++ b/packages/SwingSet/test/upgrade/bootstrap-upgrade.js @@ -3,13 +3,38 @@ import { Far } from '@endo/marshal'; import { assert } from '@agoric/assert'; import { makePromiseKit } from '@endo/promise-kit'; +import { NUM_SENSORS } from './num-sensors.js'; + +function insistMissing(ref, isCollection = false) { + let p; + if (isCollection) { + p = E(ref).set(1, 2); + } else { + p = E(ref).get(); + } + return p.then( + () => { + throw Error('ref should be missing'); + }, + err => { + assert.equal(err.message, 'vat terminated'); + }, + ); +} + export function buildRootObject() { let vatAdmin; let ulrikRoot; let ulrikAdmin; const marker = Far('marker', {}); + // sensors are numbered from '1' to match the vobj o+N/1.. vrefs + const importSensors = ['skip0']; + for (let i = 1; i < NUM_SENSORS + 1; i += 1) { + importSensors.push(Far(`import-${i}`, {})); + } const { promise, resolve } = makePromiseKit(); let dur; + let retain; return Far('root', { async bootstrap(vats, devices) { @@ -20,6 +45,10 @@ export function buildRootObject() { return marker; }, + getImportSensors() { + return importSensors; + }, + async buildV1() { // build Ulrik, the upgrading vat const bcap = await E(vatAdmin).getNamedBundleCap('ulrik1'); @@ -34,17 +63,21 @@ export function buildRootObject() { const m2 = await E(ulrikRoot).getPresence(); assert.equal(m2, marker); const data = await E(ulrikRoot).getData(); - dur = await E(ulrikRoot).getDurandal('d1'); + + retain = await E(ulrikRoot).getExports(importSensors); + + dur = await E(ulrikRoot).getDurandal({ d1: 'd1' }); const d1arg = await E(dur).get(); - assert.equal(d1arg, 'd1'); + assert.equal(d1arg.d1, 'd1'); - // give v1 a promise that won't be resolved until v2 + // give ver1 a promise that won't be resolved until ver2 await E(ulrikRoot).acceptPromise(promise); const { p1 } = await E(ulrikRoot).getEternalPromise(); p1.catch(() => 'hush'); const p2 = E(ulrikRoot).returnEternalPromise(); // never resolves p2.catch(() => 'hush'); - return { version, data, p1, p2, ...parameters }; + + return { version, data, p1, p2, retain, ...parameters }; }, async upgradeV2() { @@ -56,10 +89,55 @@ export function buildRootObject() { const m2 = await E(ulrikRoot).getPresence(); assert.equal(m2, marker); const data = await E(ulrikRoot).getData(); + + // marshal splats a bunch of log messages when it serializes + // 'remoerr' at the end of this function, warn the human + console.log(`note: expect one 'vat terminated' error logged below`); + let remoerr; // = Error('foo'); + await E(retain.rem1) + .get() + .catch(err => (remoerr = err)); + const d1arg = await E(dur).get(); - assert.equal(d1arg, 'new d1'); // durable object still works, in new way + assert.equal(d1arg.d1, 'd1'); // durable object still works + assert.equal(d1arg.new, 'new'); // in the new way + + // the durables we retained should still be viable + const doget = obj => + E(obj) + .get() + .then(res => res.name); + assert.equal(await doget(retain.dur1), 'd1', 'retain.dur1 broken'); + + const dc4entries = await E(ulrikRoot).getEntries(retain.dc4); + assert.equal(dc4entries.length, 2); + const dur28 = await E(retain.dc4).get(importSensors[28]); + const imp28 = await E(dur28).getImport(); + assert.equal(imp28, importSensors[28], 'retain.dc4 broken'); + + // the durables retained by the vat in baggage should still be viable + const baggageImps = await E(ulrikRoot).checkBaggage( + importSensors[32], + importSensors[36], + ); + const { imp33, imp35, imp37, imp38 } = baggageImps; + assert.equal(imp33, importSensors[33]); + assert.equal(imp35, importSensors[35]); + assert.equal(imp37, importSensors[37]); + assert.equal(imp38, importSensors[38]); + + // all Remotable and merely-virtual objects are gone + await insistMissing(retain.vir2); + await insistMissing(retain.vir5); + await insistMissing(retain.vir7); + await insistMissing(retain.vc1, true); + await insistMissing(retain.vc3, true); + await insistMissing(retain.rem1); + await insistMissing(retain.rem2); + await insistMissing(retain.rem3); + resolve(`message for your predecessor, don't freak out`); - return { version, data, ...parameters }; + return { version, data, remoerr, ...parameters }; }, async buildV1WithLostKind() { diff --git a/packages/SwingSet/test/upgrade/num-sensors.js b/packages/SwingSet/test/upgrade/num-sensors.js new file mode 100644 index 000000000000..289eea593e8c --- /dev/null +++ b/packages/SwingSet/test/upgrade/num-sensors.js @@ -0,0 +1 @@ +export const NUM_SENSORS = 38; diff --git a/packages/SwingSet/test/upgrade/object-graph.pdf b/packages/SwingSet/test/upgrade/object-graph.pdf new file mode 100644 index 0000000000000000000000000000000000000000..72b3a55f96e8bda8743c7b9a358a6e7cde9bb2d3 GIT binary patch literal 263316 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

%s77ERdCSH-neQaxZL`GGXG$e6@so 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 G^M3)SPvrjq literal 0 HcmV?d00001 diff --git a/packages/SwingSet/test/upgrade/test-upgrade.js b/packages/SwingSet/test/upgrade/test-upgrade.js index 183089ca36c2..5fc374f7d467 100644 --- a/packages/SwingSet/test/upgrade/test-upgrade.js +++ b/packages/SwingSet/test/upgrade/test-upgrade.js @@ -4,10 +4,15 @@ import { test } from '../../tools/prepare-test-env-ava.js'; // eslint-disable-next-line import/order import { assert } from '@agoric/assert'; import { parse } from '@endo/marshal'; +import { getAllState } from '@agoric/swing-store'; import { provideHostStorage } from '../../src/controller/hostStorage.js'; +import { parseReachableAndVatSlot } from '../../src/kernel/state/reachable.js'; +import { parseVatSlot } from '../../src/lib/parseVatSlots.js'; import { initializeSwingset, makeSwingsetController } from '../../src/index.js'; import { capargs, capdataOneSlot } from '../util.js'; +import { NUM_SENSORS } from './num-sensors.js'; + function bfile(name) { return new URL(name, import.meta.url).pathname; } @@ -21,11 +26,41 @@ function get(capdata, propname) { return value; } +function getRetained(capdata, propname) { + const body = JSON.parse(capdata.body); + const value = body.retain[propname]; + if (typeof value === 'object' && value['@qclass'] === 'slot') { + return ['slot', capdata.slots[value.index]]; + } + return value; +} + +function getImportSensorKref(impcapdata, i) { + const body = JSON.parse(impcapdata.body); + const value = body[i]; + if (typeof value === 'object' && value['@qclass'] === 'slot') { + return ['slot', impcapdata.slots[value.index]]; + } + return value; +} + +// eslint-disable-next-line no-unused-vars +function dumpState(hostStorage, vatID) { + const s = getAllState(hostStorage).kvStuff; + const keys = Array.from(Object.keys(s)).sort(); + for (const k of keys) { + if (k.startsWith(`${vatID}.vs.`)) { + console.log(k, s[k]); + } + } +} + async function testUpgrade(t, defaultManagerType) { const config = { defaultManagerType, bootstrap: 'bootstrap', - defaultReapInterval: 'never', + // defaultReapInterval: 'never', + // defaultReapInterval: 1, vats: { bootstrap: { sourceSpec: bfile('bootstrap-upgrade.js') }, }, @@ -36,8 +71,13 @@ async function testUpgrade(t, defaultManagerType) { }; const hostStorage = provideHostStorage(); + const { kvStore } = hostStorage; await initializeSwingset(config, [], hostStorage); - const c = await makeSwingsetController(hostStorage); + const c = await makeSwingsetController( + hostStorage, + {}, + { slogFile: 's.slog' }, + ); c.pinVatRoot('bootstrap'); await c.run(); @@ -55,6 +95,16 @@ async function testUpgrade(t, defaultManagerType) { const markerKref = mcd[1].slots[0]; // probably ko26 t.deepEqual(mcd[1], capdataOneSlot(markerKref, 'marker')); + // fetch all the "importSensors": exported by bootstrap, imported by + // the upgraded vat. We'll determine their krefs and later query the + // upgraded vat to see if it's still importing them or not + const [impstatus, impcapdata] = await run('getImportSensors', []); + t.is(impstatus, 'fulfilled'); + const impKrefs = ['skip0']; + for (let i = 1; i < NUM_SENSORS + 1; i += 1) { + impKrefs.push(getImportSensorKref(impcapdata, i)[1]); + } + // create initial version const [v1status, v1capdata] = await run('buildV1', []); t.is(v1status, 'fulfilled'); @@ -68,19 +118,144 @@ async function testUpgrade(t, defaultManagerType) { t.is(get(v1capdata, 'p2')[0], 'slot'); const v1p2Kref = get(v1capdata, 'p2')[1]; - // upgrade should work + // grab exports to deduce durable/virtual vrefs + t.is(getRetained(v1capdata, 'dur1')[0], 'slot'); + const dur1Kref = getRetained(v1capdata, 'dur1')[1]; + t.is(getRetained(v1capdata, 'vir2')[0], 'slot'); + const vir2Kref = getRetained(v1capdata, 'vir2')[1]; + const vir5Kref = getRetained(v1capdata, 'vir5')[1]; + const vir7Kref = getRetained(v1capdata, 'vir7')[1]; + + const vatID = kvStore.get(`${dur1Kref}.owner`); // probably v6 + function getVref(kref) { + const s = kvStore.get(`${vatID}.c.${kref}`); + return parseReachableAndVatSlot(s).vatSlot; + } + function krefReachable(kref) { + const s = kvStore.get(`${vatID}.c.${kref}`); + return !!(s && parseReachableAndVatSlot(s).isReachable); + } + // We look in the vat's vatstore to see if the virtual/durable + // object exists or not (as a state record). + function vomHas(vref) { + return kvStore.has(`${vatID}.vs.vom.${vref}`); + } + + // dumpState(hostStorage, vatID); + + // deduce exporter vrefs for all durable/virtual objects, and assert + // that they're still in DB + const dur1Vref = getVref(dur1Kref); + t.is(parseVatSlot(dur1Vref).subid, 1n); + const durBase = dur1Vref.slice(0, dur1Vref.length - 2); + function durVref(i) { + return `${durBase}/${i}`; + } + const vir2Vref = getVref(vir2Kref); + t.is(parseVatSlot(vir2Vref).subid, 2n); + const virBase = vir2Vref.slice(0, vir2Vref.length - 2); + function virVref(i) { + return `${virBase}/${i}`; + } + + t.true(vomHas(durVref(1))); + t.true(vomHas(virVref(2))); + t.false(vomHas(virVref(1))); // deleted before upgrade + t.false(vomHas(durVref(2))); // deleted before upgrade + + // remember krefs for the exported objects so we can check their + // abandonment + const retainedNames = 'dur1 vir2 vir5 vir7 vc1 vc3 dc4 rem1 rem2 rem3'; + const retainedKrefs = {}; + for (const name of retainedNames.split(' ')) { + const d = getRetained(v1capdata, name); + t.is(d[0], 'slot'); + retainedKrefs[name] = d[1]; + } + + // now perform the upgrade + // console.log(`-- starting upgradeV2`); + const [v2status, v2capdata] = await run('upgradeV2', []); t.is(v2status, 'fulfilled'); t.deepEqual(get(v2capdata, 'version'), 'v2'); t.deepEqual(get(v2capdata, 'youAre'), 'v2'); t.deepEqual(get(v2capdata, 'marker'), ['slot', markerKref]); t.deepEqual(get(v2capdata, 'data'), ['some', 'data']); + const remoerr = parse(JSON.stringify(get(v2capdata, 'remoerr'))); + t.deepEqual(remoerr, Error('vat terminated')); // the old version's non-durable promises should be rejected t.is(c.kpStatus(v1p1Kref), 'rejected'); t.deepEqual(c.kpResolution(v1p1Kref), capargs('vat upgraded')); t.is(c.kpStatus(v1p2Kref), 'rejected'); t.deepEqual(c.kpResolution(v1p2Kref), capargs('vat upgraded')); + + // dumpState(hostStorage, vatID); + + // all the merely-virtual exports should be gone + for (let i = 1; i < NUM_SENSORS + 1; i += 1) { + t.false(vomHas(virVref(i))); + } + + // of the durables, only these survive + const survivingDurables = [ + 1, 16, 17, 18, 19, 20, 26, 27, 28, 33, 34, 35, 36, 37, + ]; + // and these imports (imp38 is held by baggage) + const survivingImported = [ + 1, 16, 17, 18, 19, 20, 26, 27, 28, 33, 34, 35, 36, 37, 38, + ]; + + // but implementation limitations/bugs cause the following unwanted + // effects (these adjustments should be deleted as we fix them): + + // stopVat() uses deleteVirtualObjectsWithoutDecref, rather than + // deleteVirtualObjectsWithDecref, which means lingering virtual + // objects (i.e. cycles) don't drop their referenced objects as we + // delete them + survivingDurables.push(9); + survivingImported.push(7); + survivingImported.push(8); + survivingImported.push(9); + + // When a virtual collection is deleted, the loop that deletes all + // entries will re-instantiate all the keys, but doesn't set + // doMoreGC, so processDeadSet doesn't redo the gcAndFinalize, and + // the virtual object cache is probably still holding onto the new + // Representative anyways. This retains the durables that were held + // by deleted collections (dur10/dur13/dur23, depending on the cache + // size, just dur23 if size=0) and the imports they hold. Bug #5053 + // is about fixing clearInternal to avoid this, when that's fixed + // these should be removed. + survivingDurables.push(10); + survivingImported.push(10); + survivingDurables.push(13); + survivingImported.push(13); + survivingDurables.push(23); + survivingImported.push(23); + + for (let i = 1; i < NUM_SENSORS + 1; i += 1) { + const vref = durVref(i); + const impKref = impKrefs[i]; + const expD = survivingDurables.includes(i); + const expI = survivingImported.includes(i); + const reachable = krefReachable(impKref); + t.is(vomHas(vref), expD, `dur[${i}] not ${expD}`); + t.is(reachable, expI, `imp[${i}] not ${expI}`); + // const abb = (b) => b.toString().slice(0,1).toUpperCase(); + // const vomS = `vom: ${abb(expD)} ${abb(vomHas(vref))}`; + // const reachS = `${abb(expI)} ${abb(reachable)}`; + // const match = (expD === vomHas(vref)) && (expI === reachable); + // const matchS = `${match ? 'true' : 'FALSE'}`; + // const s = kvStore.get(`${vatID}.c.${impKref}`); + // console.log(`${i}: ${vomS} imp: ${reachS} ${matchS} ${impKref} ${s}`); + } + + // check koNN.owner to confirm the exported virtuals (2/5/7) are abandoned + t.false(kvStore.has(`${vir2Kref}.owner`)); + t.false(kvStore.has(`${vir5Kref}.owner`)); + t.false(kvStore.has(`${vir7Kref}.owner`)); } test('vat upgrade - local', async t => { diff --git a/packages/SwingSet/test/upgrade/vat-ulrik-1.js b/packages/SwingSet/test/upgrade/vat-ulrik-1.js index 52a4b6f7994b..3e9684caf960 100644 --- a/packages/SwingSet/test/upgrade/vat-ulrik-1.js +++ b/packages/SwingSet/test/upgrade/vat-ulrik-1.js @@ -1,28 +1,137 @@ /* global VatData */ import { Far } from '@endo/marshal'; import { makePromiseKit } from '@endo/promise-kit'; +import { NUM_SENSORS } from './num-sensors.js'; + // import { makeKindHandle, defineDurableKind } from '@agoric/vat-data'; -const { makeKindHandle, defineDurableKind } = VatData; +const { makeKindHandle, defineDurableKind, defineKind } = VatData; +const { makeScalarBigMapStore, makeScalarBigWeakMapStore } = VatData; const durandalHandle = makeKindHandle('durandal'); -function initializeDurandal(arg) { - return { arg }; +function initialize(name, imp, value) { + return harden({ name, imp, value }); } -const durandalBehavior = { +const behavior = { get({ state }) { - return state.arg; + return state.value; }, - set({ state }, arg) { - state.arg = arg; + set({ state }, value) { + state.value = value; }, }; -const makeDurandal = defineDurableKind( - durandalHandle, - initializeDurandal, - durandalBehavior, -); +const makeDurandal = defineDurableKind(durandalHandle, initialize, behavior); +const makeVir = defineKind('virtual', initialize, behavior); +const makeDummy = defineKind('dummy', initialize, behavior); + +// TODO: explore 'export modRetains' +// eslint-disable-next-line no-unused-vars +let modRetains; + +// we set up a lot of virtual and durable objects to test what gets +// deleted vs retained (see object-graph.pdf for the test plan) + +function makeRemotable(name, held) { + return Far(name, { get: () => held }); +} + +function buildExports(baggage, imp) { + // each virtual/durable object has a unique import, some of which + // should be dropped during upgrade + + // start these at '1' to match the vrefs (o+10/1 .. /5) for debugging + const vir = ['skip0']; + const dur = ['skip0']; + for (let i = 1; i < NUM_SENSORS + 1; i += 1) { + vir.push(makeVir(`v${i}`, imp[i], { name: `v${i}` })); + dur.push(makeDurandal(`d${i}`, imp[i], { name: `d${i}` })); + } + + // vc1+vc2 form a cycle, as do vir[7]+vir[8], and our lack of + // cycle-collection means we don't GC it during the lifetime of the + // vat, however they'll be deleted during upgrade because stopVat() + // deletes all virtual data independent of refcounts + + const vc1 = makeScalarBigMapStore('vc1'); + const vc2 = makeScalarBigMapStore('vc2'); + const vc3 = makeScalarBigMapStore('vc3'); + + // dc1+dc2 form an unreferenced cycle, as do dur[16]+dur[17], which + // stick around (even after upgrade) because we don't yet have + // cycle-collecting virtual/durable-object GC. dc3 is dropped (only + // held by an abandoned Remotable), dc4 is retained by an export, + // dc5+dc6 are retained by baggage + + const dc1 = makeScalarBigMapStore('dc1', { durable: true }); + const dc2 = makeScalarBigMapStore('dc2', { durable: true }); + const dc3 = makeScalarBigMapStore('dc3', { durable: true }); + const dc4 = makeScalarBigMapStore('dc4', { durable: true }); + const dc5 = makeScalarBigWeakMapStore('dc5', { durable: true }); + const dc6 = makeScalarBigMapStore('dc6', { durable: true }); + + // these Remotables are both exported and held by module-level pins, + // but will still be abandoned + const rem1 = makeRemotable('rem1', [imp[4], vir[5], vir[7], vc1, vc3]); + const rem2 = makeRemotable('rem2', [dur[21], dc3]); + const rem3 = makeRemotable('rem3', [dur[29], imp[30], vir[31]]); + modRetains = { rem1, rem2, rem3 }; + + // now wire them up according to the diagram + vir[2].set(dur[3]); + vir[5].set(dur[6]); + vir[7].set(vir[8]); + vir[8].set(harden([vir[7], dur[9]])); + vc1.init('vc2', vc2); + vc2.init('vc1', vc1); + vc2.init(dur[10], dur[11]); + vc2.init(imp[12], dur[12]); + vc3.init(dur[13], dur[14]); + vc3.init(imp[15], dur[15]); + dur[16].set(dur[17]); + dur[17].set(dur[16]); + dc1.init('dc2', dc2); + dc2.init('dc1', dc1); + dc2.init(dur[18], dur[19]); + dc2.init(imp[20], dur[20]); + dur[21].set(dur[22]); + dc3.init(dur[23], dur[24]); + dc3.init(imp[25], dur[25]); + dc4.init(dur[26], dur[27]); + dc4.init(imp[28], dur[28]); + dc5.init(imp[32], dur[33]); // imp[32] exported+held by bootstrap + dc6.init(dur[34], dur[35]); + dc6.init(imp[36], dur[36]); + baggage.init('dc5', dc5); + baggage.init('dc6', dc6); + baggage.init('dur37', dur[37]); + baggage.init('imp38', imp[38]); + + // We set virtualObjectCacheSize=0 to ensure all data writes are + // made promptly, But the cache will still retain the last + // Representative, which inhibits GC. So the last thing we do here + // should be to create/deserialize a throwaway object, to make sure + // all the ones we're measuring are collected as we expect. + + makeDummy(); // knock the last dur/vir/vc/dc out of the cache + + // we share dur1/vir2 with the test harness so it can glean the + // baserefs and interpolate the full vrefs for everything else + // without holding a GC pin on them + + return { + dur1: dur[1], + vir2: vir[2], + vir5: vir[5], + vir7: vir[7], + vc1, + vc3, + dc4, + rem1, + rem2, + rem3, + }; +} export function buildRootObject(_vatPowers, vatParameters, baggage) { const { promise: p1 } = makePromiseKit(); @@ -50,7 +159,10 @@ export function buildRootObject(_vatPowers, vatParameters, baggage) { return baggage.get('data'); }, getDurandal(arg) { - return makeDurandal(arg); + return makeDurandal('durandal', 0, arg); + }, + getExports(imp) { + return buildExports(baggage, imp); }, acceptPromise(p) { diff --git a/packages/SwingSet/test/upgrade/vat-ulrik-2.js b/packages/SwingSet/test/upgrade/vat-ulrik-2.js index 5ac945ba235b..d53f683fa17f 100644 --- a/packages/SwingSet/test/upgrade/vat-ulrik-2.js +++ b/packages/SwingSet/test/upgrade/vat-ulrik-2.js @@ -1,24 +1,28 @@ /* global VatData */ import { Far } from '@endo/marshal'; +import { assert } from '@agoric/assert'; // import { defineDurableKind } from '@agoric/vat-data'; const { defineDurableKind } = VatData; -function initializeDurandal(arg) { - return { arg }; +function initialize(name, imp, value) { + return harden({ name, imp, value }); } -const durandalBehavior = { +const behavior = { get({ state }) { - return `new ${state.arg}`; + return { new: 'new', ...state.value }; }, - set({ state }, arg) { - state.arg = arg; + getImport({ state }) { + return state.imp; + }, + set({ state }, value) { + state.value = value; }, }; export function buildRootObject(_vatPowers, vatParameters, baggage) { const durandalHandle = baggage.get('durandalHandle'); - defineDurableKind(durandalHandle, initializeDurandal, durandalBehavior); + defineDurableKind(durandalHandle, initialize, behavior); return Far('root', { getVersion() { @@ -33,5 +37,25 @@ export function buildRootObject(_vatPowers, vatParameters, baggage) { getData() { return baggage.get('data'); }, + getEntries(collection) { + return Array.from(collection.entries()); + }, + checkBaggage(imp32, imp36) { + // console.log(`baggage:`, Array.from(baggage.keys())); + const dc5 = baggage.get('dc5'); + const dc6 = baggage.get('dc6'); + const imp33 = dc5.get(imp32).getImport(); + let dur34; + for (const key of dc6.keys()) { + if (key !== imp36) { + dur34 = key; + } + } + const imp35 = dc6.get(dur34).getImport(); + assert.equal(imp36, dc6.get(imp36).getImport()); + const imp37 = baggage.get('dur37').getImport(); + const imp38 = baggage.get('imp38'); + return { imp33, imp35, imp37, imp38 }; + }, }); }