-
Notifications
You must be signed in to change notification settings - Fork 214
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
v43-walletFactory heap is large and still growing #10706
Comments
I made a new graph where date is the x-axis, which shows that the bytes-per-second is in fact higher now: (this graph doesn't include all the same datapoints as above: I manually extracted a handful of samples, and only went as far back as april-2024 and the end of the upgrade-13 era, but I think it still accurately reflects the growth rate-vs-time for the last eight months) |
That growth rate is about 9.5MB/day |
Here's some information I got by dumping a recent v43-walletFactory heap snapshot. The procedure:
import sys, re, gzip
# Use 'xsnap -d SNAPSHOT.xss' to dump an XS heap snapshot into a text file,
# then feed that text file into my stdin, along with a prefix. I will create
# ten files with names like "prefix-XS_M.gz" and "prefix-HEAP.gz", each with
# one section of the snapshot dump. This makes it easier to search for specific
# e.g. slots by their index number.
sections = [
"XS_M",
"VERS",
"SIGN",
"CREA", # sizes and creation parameters
"BLOC", # the chunks table
"HEAP", # the slots table
"STAC",
"KEYS", # maps ID_nnn to the property-key name
"NAME", # helps map property-named keys, somehow
"SYMB", # helps map symbol-named keys
]
prefix = sys.argv[1]
fn = None
count = 0
for line in sys.stdin:
if sections and line.startswith(sections[0]):
if fn:
print(" finished %s (%d lines)" % (section, count))
fn.close()
count = 0
section = sections.pop(0)
fn = gzip.open("%s-%s.gz" % (prefix, section), "w")
fn.write(line.encode("utf-8"))
else:
fn.write(line.encode("utf-8"))
count += 1
I used
The In XS speak, this is probably part of a Map whose keys are locally-allocated promise vref strings (aka "VPID"s), and whose values are WeakRefs whose targets are empty. I'm guessing that means the targets have been garbage collected, but the WeakRef itself is still reachable. That would mean any call to I count 3,776,863 -BLOC strings of the form These are almost certainly entries of the liveslots The idea is that liveslots needs to know when userspace drops the Presence/etc, so it can decrement refcounts and maybe inform the kernel that we're dropping the vref. The WeakRef lets us translate vrefs to objects (e.g. when deserializing the arguments of an inbound For objects, the expected sequence is:
Note that we have modified XS to not empty out the WeakRefs or call finalizers during "organic" GC (the kind triggered when the engine exhausts the free-slot table, and does GC first in the hopes of avoiding We also put Promises in these WeakRefs, for consistency in our My current hypothesis is that these are entries for promises that have been resolved, and dropped by both userspace and liveslots, and collected in a BOYD delivery. But the code in I see a check for
We don't use virtual objects very much (we mostly use durable), so we should look for code in v43-walletFactory which creates non-durable BigMapStores or the like. The fix is likely to be code in |
v43-walletFactory has no instances of any merely-virtual Kinds (virtual-object vrefs like |
I sorted the
It looks like the vpid appeared as the key of vc.4 (as a string, not a serialized Promise), which must be the The vat also uses this VPID as a string key of vc.11975, with a body that looks like a curious marshalling of the same promise (using Then, later in the same delivery, the vat does a The vat then deletes both the @mhofman I'm guessing this is Vows code, watching the Promise somehow. Who is doing the serialization? |
Oh, this isn't Vows, it's just liveslot's /**
* virtual Store (not durable) mapping vpid to Promise objects, to
* maintain the slotToVal registration until resolution. Without
* this, slotToVal would forget local Promises that aren't exported.
*
* @type {MapStore<string, Promise<unknown>>}
*/
let promiseRegistrations;
...
promiseRegistrations = makeScalarBigMapStore('promiseRegistrations'); Every time userspace calls /**
* Map of all Remotables which are reachable by our virtualized data, e.g.
* `makeScalarWeakMapStore().set(key, remotable)` or `virtualObject.state.foo =
* remotable`. The serialization process stores the Remotable's vref to disk,
* but doesn't actually retain the Remotable. To correctly unserialize that
* offline data later, we must ensure the Remotable remains alive. This Map
* keeps a strong reference to the Remotable along with its (virtual) refcount.
*/
/** @type {Map<object, number>} Remotable->refcount */
const remotableRefCounts = new Map();
...
function addReachableVref(vref) {
...
} else if (type === 'promise') {
// need to track promises too, maybe in remotableRefCounts
const p = requiredValForSlot(vref);
const oldRefCount = remotableRefCounts.get(p) || 0;
remotableRefCounts.set(p, oldRefCount + 1);
} The promise has (at least) two So it comes down to a race between two callbacks on the same promise. If the I think that explains the growth. It doesn't explain the increased rate of growth that we've seen in recent incarnations. We reload the watchedPromise table from durable storage at |
An easy mitigation might be to change // Ensure that this vat's promises are rejected at termination.
if (maybeExportPromise(vpid)) {
syscall.subscribe(vpid);
}
promiseRegistrations.init(vpid, p);
pseudoThen(p, vpid); we do: promiseRegistrations.init(vpid, p);
pseudoThen(p, vpid);
// Ensure that this vat's promises are rejected at termination.
if (maybeExportPromise(vpid)) {
syscall.subscribe(vpid);
} If that's enough to get the engine to call the I'd also want to seriously consider changing The deeper fix would be to change |
FYI the increase in slopes are from 13->14 & 16->17, which respectively corresponds to the introduction of |
Liveslots has a bug (#10757) which leaks slotToVal entries when a tracked Promise is still being held in virtual data (e.g. a merely-virtual MapStore) at the time it becomes settled. This is triggered by `watchPromise` because of the order in which we attach two handlers: one which notices the resolution and is inhibited from deleting the slotToVal entry, and a second which removes the Promise from the (virtual) `promiseRegistrations` collection (thus enabling the deletion). For any watched Promise that is resolved, we leave a `slotToVal` entry (with an empty WeakRef) in RAM until the end of the incarnation. This PR does not fix the underlying bug, but it rearranges the handler order to avoid triggering it. The attached unit test fails with the original handler order (`slotToVal.size` grows), and passes with the swapped order (`slotToVal.size` remains constant). closes #10756 refs #10706
Liveslots has a bug (#10757) which leaks slotToVal entries when a tracked Promise is still being held in virtual data (e.g. a merely-virtual MapStore) at the time it becomes settled. This is triggered by `watchPromise` because of the order in which we attach two handlers: one which notices the resolution and is inhibited from deleting the slotToVal entry, and a second which removes the Promise from the (virtual) `promiseRegistrations` collection (thus enabling the deletion). For any watched Promise that is resolved, we leave a `slotToVal` entry (with an empty WeakRef) in RAM until the end of the incarnation. This PR does not fix the underlying bug, but it rearranges the handler order to avoid triggering it. closes #10756 refs #10706
) Liveslots has a bug (#10757) which leaks slotToVal entries when a tracked Promise is still being held in virtual data (e.g. a merely-virtual MapStore) at the time it becomes settled. This is triggered by `watchPromise` because of the order in which we attach two handlers: one which notices the resolution and is inhibited from deleting the slotToVal entry, and a second which removes the Promise from the (virtual) `promiseRegistrations` collection (thus enabling the deletion). For any watched Promise that is resolved, we leave a `slotToVal` entry (with an empty WeakRef) in RAM until the end of the incarnation. This PR does not fix the underlying bug, but it rearranges the handler order to avoid triggering it. The attached unit test fails with the original handler order (`slotToVal.size` grows), and passes with the swapped order (`slotToVal.size` remains constant). closes #10756 refs #10706
## Description Created as per instructions in MAINTAINERS.md. Includes an additional step to update yarn.lock for multichain-testing, a3p-integration/proposals/s:stake-bld and a3p-integration/proposals/z:acceptance ## Changes - @agoric/[email protected] - @agoric/[email protected] - @agoric/[email protected] - @agoric/[email protected] - [email protected] - @agoric/[email protected] - @agoric/[email protected] - @agoric/[email protected] - @agoric/[email protected] - @agoric/[email protected] - @agoric/[email protected] - @agoric/[email protected] - @agoric/[email protected] - @agoric/[email protected] - @agoric/[email protected] - @agoric/[email protected] - @agoric/[email protected] - @agoric/[email protected] - @agoric/[email protected] - @agoric/[email protected] - @agoric/[email protected] - @agoric/[email protected] - @agoric/[email protected] - @agoric/[email protected] - @agoric/[email protected] - @agoric/[email protected] - @agoric/[email protected] - @agoric/[email protected] - @agoric/[email protected] - @agoric/[email protected] - @agoric/[email protected] - @agoric/[email protected] - @agoric/[email protected] - @agoric/[email protected] - @agoric/[email protected] - @agoric/[email protected] - @agoric/[email protected] - @agoric/[email protected] - @agoric/[email protected] - @agoric/[email protected] - @agoric/[email protected] - @agoric/[email protected] - @agoric/[email protected] - @agoric/[email protected] - @agoric/[email protected] - @agoric/[email protected] - @agoric/[email protected] - @agoric/[email protected] - @agoric/[email protected] - @agoric/[email protected] ## Packages that have NEWS.md updates ```diff --- a/golang/cosmos/CHANGELOG.md +++ b/golang/cosmos/CHANGELOG.md @@ -3,6 +3,32 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.35.0-u18.5](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-24) + + +### Features + +* **cosmos:** Support arbitrary core eval builder arguments ([#10767](#10767)) ([a944f4c](a944f4c)), closes [#10752](#10752) [#10752](#10752) +* **cosmos:** use `x/vbank` ConsensusVersion to upgrade monitoring ([0e367d3](0e367d3)) +* migrate upgrade of v7-board from upgrade 19 to upgrade 18 ([#10761](#10761)) ([837776e](837776e)), closes [#10760](#10760) +* upgrade v7-board and test it ([#10516](#10516)) ([d8a109e](d8a109e)), closes [#10394](#10394) +* **vbank:** new param `allowed_monitoring_accounts` ([5ac4c52](5ac4c52)) +* **vtransfer:** extract base address from parameterized address ([3d44b53](3d44b53)) +* **vtransfer:** port some `address-hooks.js` functions to Go ([159098b](159098b)) +* **x/swingset:** Add parameters for controlling vat cleanup budget ([02c8138](02c8138)), closes [#8928](#8928) +* **x/swingset:** Define default vat cleanup budget as { default: 5, kv: 50 } ([d86ee6d](d86ee6d)) +* **x/swingset:** Read beansPerUnit in each message handler and pass down to helpers ([55b9b49](55b9b49)) +* **x/swingset:** Require a non-empty vat cleanup budget to include `default` ([28c4d8b](28c4d8b)) + + +### Bug Fixes + +* **agd:** upgrade all orchestration vats to new liveslots ([59fa82c](59fa82c)) +* **cosmos:** return an error if version is unsupported ([d17e55b](d17e55b)) +* **x/swingset:** Let migration see incomplete Params structs ([315cdd5](315cdd5)) + + + ## [0.35.0-u18.4](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-17) **Note:** Version bump only for package @agoric/cosmos --- a/packages/ERTP/CHANGELOG.md +++ b/packages/ERTP/CHANGELOG.md @@ -3,6 +3,16 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +### [0.16.3-u18.1](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-24) + + +### Bug Fixes + +* **ertp:** remove unneeded ertp type imports ([#10467](#10467)) ([e96ff82](e96ff82)), closes [#10456](#10456) +* **orchestration:** harden exported patterns ([#10470](#10470)) ([47bebb8](47bebb8)), closes [#10456](#10456) + + + ### [0.16.3-u18.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-10-31) --- a/packages/SwingSet/CHANGELOG.md +++ b/packages/SwingSet/CHANGELOG.md @@ -3,6 +3,21 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.33.0-u18.1](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-24) + + +### Features + +* **internal:** Introduce deepCopyJsonable ([f875bb0](f875bb0)) + + +### Bug Fixes + +* **orchestration:** harden exported patterns ([#10470](#10470)) ([47bebb8](47bebb8)), closes [#10456](#10456) +* **SwingSet:** Introduce a termination-dedicated "VatUndertaker" analog to "VatKeeper" ([b786414](b786414)) + + + ## [0.33.0-u18.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-10-31) --- a/packages/agoric-cli/CHANGELOG.md +++ b/packages/agoric-cli/CHANGELOG.md @@ -3,6 +3,37 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.22.0-u18.6](https://github.com/Agoric/agoric-sdk/compare/[email protected]@0.22.0-u18.6) (2024-12-24) + + +### ⚠ BREAKING CHANGES + +* remove agoricNames from VstorageKit + +### Features + +* **agoric-cli:** Add `agoric wallet send` gas limit options ([21a03f8](21a03f8)) +* **agoric-cli:** Block `agoric wallet send` on tx inclusion ([0389a21](0389a21)) +* client-utils package ([50af71f](50af71f)) +* export cli lib ([0d2d4aa](0d2d4aa)) +* fetchEnvNetworkConfig ([9bdba57](9bdba57)) +* makeWalletUtils wo/spawn ([bc10509](bc10509)) +* makeWalletUtils wo/spawn ([20083ae](20083ae)) +* VstorageKit ([71486d7](71486d7)) + + +### Bug Fixes + +* **agoric-cli:** use readPublished consistently in agops oracle ([e8f6de2](e8f6de2)) +* proposeParamChange options ([202ba1e](202ba1e)) + + +### Miscellaneous Chores + +* remove agoricNames from VstorageKit ([1c69d39](1c69d39)) + + + ## [0.22.0-u18.5](https://github.com/Agoric/agoric-sdk/compare/[email protected]@0.22.0-u18.5) (2024-12-17) **Note:** Version bump only for package agoric --- a/packages/boot/CHANGELOG.md +++ b/packages/boot/CHANGELOG.md @@ -3,6 +3,27 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.2.0-u18.6](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-24) + + +### Features + +* add `bech32Prefix?: string` to `CosmosChainInfo` ([cb9e1ee](cb9e1ee)) +* consistent publishTxnRecord (record) ([dbf3934](dbf3934)) +* **fast-usdc:** publish feeConfig to vstorage ([08b2e13](08b2e13)) +* **fast-usdc:** support risk assessment arg ([ff6737a](ff6737a)) +* **fast-usdc:** write chain policies to vstorage ([#10532](#10532)) ([9d6cff1](9d6cff1)) +* **fast-usdc:** write status updates to vstorage ([#10552](#10552)) ([419df4e](419df4e)) +* **internal:** Introduce deepCopyJsonable ([f875bb0](f875bb0)) +* publish OBSERVED with first evidence ([7e62d8f](7e62d8f)) +* readPublished in SwingsetTestKit ([0b383c9](0b383c9)) +* record instances that will be replaced so we can manage them ([c883c39](c883c39)) +* send-anywhere inits chainHub ([2fa2f75](2fa2f75)) +* **types:** TransactionRecord ([ccb9e28](ccb9e28)) +* vstorage status --> txns ([aebb4d7](aebb4d7)) + + + ## [0.2.0-u18.5](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-17) **Note:** Version bump only for package @agoric/boot --- a/packages/builders/CHANGELOG.md +++ b/packages/builders/CHANGELOG.md @@ -3,6 +3,41 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.2.0-u18.6](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-24) + + +### Features + +* `ForwardOpts` accepts `intermediateRecipient` ([eb975f1](eb975f1)) +* `ForwardOptsShape` ([50b1717](50b1717)) +* add `bech32Prefix?: string` to `CosmosChainInfo` ([cb9e1ee](cb9e1ee)) +* advancer with fees ([087f3a8](087f3a8)) +* assetInfo as array of entries ([51e7a9c](51e7a9c)) +* **builders:** --noNoble option for init-fast-usdc ([508a3e0](508a3e0)) +* **builders:** fast-usdc builder w/CLI config ([9f45a05](9f45a05)) +* **builders:** fast-usdc oracleSet option for MAINNET, ... ([3bf01a2](3bf01a2)) +* **builders:** fast-usdc policy update builder ([8ded3d8](8ded3d8)) +* chain-capabilities.js constants ([52ff70a](52ff70a)) +* export `DenomDetailShape` ([2dfddb3](2dfddb3)) +* export `OrchestrationPowersShape` ([34b61ea](34b61ea)) +* **fast-usdc:** write chain policies to vstorage ([#10532](#10532)) ([9d6cff1](9d6cff1)) +* fusdc assetInfo and chainInfo by netname ([afb4f34](afb4f34)) +* parameterize fusdc with chainInfo and assetInfo ([e5a8b64](e5a8b64)) +* record instances that will be replaced so we can manage them ([c883c39](c883c39)) +* register interchain bank assets proposal ([0e20707](0e20707)) +* registerChainsAndAssets ([e72782d](e72782d)) +* save the outgoing EC Charter instance and kit ([c2c9be3](c2c9be3)) +* send-anywhere inits chainHub ([2fa2f75](2fa2f75)) +* upgrade v7-board and test it ([#10516](#10516)) ([d8a109e](d8a109e)), closes [#10394](#10394) + + +### Bug Fixes + +* **agd:** upgrade all orchestration vats to new liveslots ([59fa82c](59fa82c)) +* **orchestration:** denomAmounts must be non-negative ([#10458](#10458)) ([40e0e4e](40e0e4e)) + + + ## [0.2.0-u18.5](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-17) **Note:** Version bump only for package @agoric/builders --- a/packages/casting/CHANGELOG.md +++ b/packages/casting/CHANGELOG.md @@ -3,6 +3,15 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +### [0.4.3-u18.5](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-24) + + +### Features + +* makeTendermintRpcClient ([129516a](129516a)) + + + ### [0.4.3-u18.4](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-17) **Note:** Version bump only for package @agoric/casting --- a/packages/client-utils/CHANGELOG.md +++ b/packages/client-utils/CHANGELOG.md @@ -1 +1,41 @@ +# Change Log + +All notable changes to this project will be documented in this file. +See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## 0.2.0-u18.0 (2024-12-24) + + +### ⚠ BREAKING CHANGES + +* remove agoricNames from VstorageKit + +### Features + +* client-utils package ([50af71f](50af71f)) +* export makeStargateClient ([186d268](186d268)) +* fetchEnvNetworkConfig ([9bdba57](9bdba57)) +* getCurrentWalletRecord ([2740748](2740748)) +* makeWalletUtils wo/spawn ([20083ae](20083ae)) +* ocap makeStargateClient ([c8f7407](c8f7407)) +* one marshaller per WalletUtils ([b141ce6](b141ce6)) +* **sync-tools:** add method to wait until offer exited ([c9370f2](c9370f2)) +* **types:** TypedPublished ([88939bf](88939bf)) +* vstorage without instance binding ([2c4e2e3](2c4e2e3)) +* VstorageKit ([71486d7](71486d7)) +* VstorageKit readPublished ([e48c53c](e48c53c)) + + +### Bug Fixes + +* **client-utils:** only call `fetch` as a function, not a method ([#10671](#10671)) ([fbae24c](fbae24c)), closes [/github.com/endojs/endo/issues/31#issuecomment-1255624116](https://github.com/Agoric//github.com/endojs/endo/issues/31/issues/issuecomment-1255624116) +* **client-utils:** Retry at least every other interval ([fd9394b](fd9394b)) + + +### Miscellaneous Chores + +* remove agoricNames from VstorageKit ([1c69d39](1c69d39)) + + + # Change Log --- a/packages/cosmic-proto/CHANGELOG.md +++ b/packages/cosmic-proto/CHANGELOG.md @@ -3,6 +3,21 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.5.0-u18.5](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-24) + + +### Features + +* **vats:** first cut of Address Hooks in JS ([dbad30b](dbad30b)) + + +### Bug Fixes + +* **address-hooks:** throw if the version is unsupported ([e3c2665](e3c2665)) +* **address-hooks:** use `harden` (or `freeze`) ([80fee60](80fee60)) + + + ## [0.5.0-u18.4](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-17) **Note:** Version bump only for package @agoric/cosmic-proto --- a/packages/cosmic-swingset/CHANGELOG.md +++ b/packages/cosmic-swingset/CHANGELOG.md @@ -3,6 +3,25 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.42.0-u18.6](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-24) + + +### Features + +* **cosmic-swingset:** Add support for testing blocks of a mock chain ([48b6405](48b6405)) +* **cosmic-swingset:** Allow `launch` to accept an already-open swingStore ([c65e5b1](c65e5b1)) +* **cosmic-swingset:** Update parseParams to read and validate vat cleanup budget data ([80bcca0](80bcca0)), closes [#8928](#8928) +* **cosmic-swingset:** Use vat cleanup budget values to allow slow cleanup ([508ea8e](508ea8e)), closes [#8928](#8928) +* **internal:** Introduce deepCopyJsonable ([f875bb0](f875bb0)) +* **x/swingset:** Define default vat cleanup budget as { default: 5, kv: 50 } ([d86ee6d](d86ee6d)) + + +### Bug Fixes + +* **cosmic-swingset:** expect chain --halt-height exit status > 1 ([c025cb7](c025cb7)) + + + ## [0.42.0-u18.5](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-17) --- a/packages/fast-usdc/CHANGELOG.md +++ b/packages/fast-usdc/CHANGELOG.md @@ -3,6 +3,128 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## 0.2.0-u18.0 (2024-12-24) + + +### Features + +* error on conflicting evidence ([cd2a40c](cd2a40c)) +* **fast-usdc:** add FastLP/ufastlp to vbank ([ae1963e](ae1963e)) +* **fast-usdc:** detect transfer completion in cli ([2828444](2828444)) +* **fast-usdc:** support risk assessment arg ([ff6737a](ff6737a)) +* operator majority logic ([bc28201](bc28201)) +* record fee split in transaction ([8846972](8846972)) + +## 0.35.0-u18.4 (2024-12-17) + + +### ⚠ BREAKING CHANGES + +* remove agoricNames from VstorageKit + +### Features + +* consistent publishTxnRecord (record) ([dbf3934](dbf3934)) +* deleteCompletedTxs ([f0078ee](f0078ee)) +* **fast-usdc:** cli for lp deposit and withdraw ([4c0c372](4c0c372)) +* **fast-usdc:** limited operation before connecting to noble ([eb82ae3](eb82ae3)) +* include 'sender' in CctpTxEvidence ([f99e7b8](f99e7b8)) +* publish CctpTxEvidence ([2916c8f](2916c8f)) +* publish OBSERVED with first evidence ([7e62d8f](7e62d8f)) +* simplify seenTxs key ([fd05a7e](fd05a7e)) +* **types:** TransactionRecord ([ccb9e28](ccb9e28)) +* vstorage status --> txns ([aebb4d7](aebb4d7)) + + +### Bug Fixes + +* do not stringify logs ([d04c5ea](d04c5ea)) +* vstorage fastUsdc path ([1f47164](1f47164)) + + +### Miscellaneous Chores + +* remove agoricNames from VstorageKit ([1c69d39](1c69d39)) + +## 0.35.0-u18.3 (2024-12-09) + + +### ⚠ BREAKING CHANGES + +* `getAsset` and `getDenomInfo` require `srcChainName` param + +### Features + +* `getAsset` and `getDenomInfo` require `srcChainName` param ([fc802ad](fc802ad)) +* assetInfo as array of entries ([51e7a9c](51e7a9c)) +* **fast-usdc:** core-eval to update feed policy ([db283e1](db283e1)) +* **fast-usdc:** operator attest cli command ([448aa3a](448aa3a)) +* **fast-usdc:** publish feeConfig to vstorage ([08b2e13](08b2e13)) +* **fast-usdc:** settler disburses or forwards funds ([17b0423](17b0423)) +* **fast-usdc:** write chain policies to vstorage ([#10532](#10532)) ([9d6cff1](9d6cff1)) +* **fast-usdc:** write status updates to vstorage ([#10552](#10552)) ([419df4e](419df4e)) +* operator accept cmd ([ae2cf1e](ae2cf1e)) +* parameterize fusdc with chainInfo and assetInfo ([e5a8b64](e5a8b64)) +* scaffold operator commands ([36375fd](36375fd)) + + +### Bug Fixes + +* `brandKey` not part of `DenomDetail` ([9a65478](9a65478)) + +## 0.35.0-u18.2 (2024-11-21) + + +### Features + +* `Advancer` uses `borrower` facet ([35eb7ad](35eb7ad)) +* integrate `Advancer` with contract ([c5d67af](c5d67af)) +* liquidity pool borrower and repayer facets ([3117eef](3117eef)) + +## 0.35.0-u18.1 (2024-11-19) + + +### Features + +* `Advancer` exo behaviors ([4cd2f3f](4cd2f3f)), closes [#10390](#10390) +* `CctpTxEvidenceShape`, `PendingTxShape` typeGuards ([5a7b3d2](5a7b3d2)) +* `getQueryParams` takes shape parameter ([99707ef](99707ef)) +* `StatusManager` scaffold ([980463f](980463f)) +* `StatusManager` tracks `seenTxs` ([f3d1e36](f3d1e36)) +* `TxStatus` const for `StatusManager` states ([1376020](1376020)) +* advancer with fees ([087f3a8](087f3a8)) +* defineInertInvitation ([f756412](f756412)) +* **fast-usdc:** .start.js core-eval w/oracle invitations ([7b6820a](7b6820a)) +* **fast-usdc:** add cli config and args for deposit and withdraw ([#10487](#10487)) ([fb2d05c](fb2d05c)) +* **fast-usdc:** deposit, withdraw liquidity in exchange for shares ([5ae543d](5ae543d)) +* **fast-usdc:** implement config cli command ([d121e1d](d121e1d)) +* **fast-usdc:** implement transfer cli command ([504818f](504818f)) +* **fast-usdc:** stub config cli command ([81e14b2](81e14b2)) +* **fast-usdc:** stub transfer cli command ([1b64d82](1b64d82)) +* feed access controls ([8f4a66d](8f4a66d)) +* makeTestPushInvitation handles evidence ([7e99cfa](7e99cfa)) +* minimal `addressTools` for query param parsing ([6f97e13](6f97e13)) +* operators evidence flows through feed ([2161a6f](2161a6f)) +* publish when all oracle operators agree ([d06ae2b](d06ae2b)) +* TransactionFeedKit ([8eb7dee](8eb7dee)) +* uniform configuration with LegibleCapData ([968903a](968903a)) + + +### Bug Fixes + +* **fast-usdc:** ensure cli non-zero exit code on failure ([6c0e77b](6c0e77b)) +* **fast-usdc:** fix url encoding ([d46cefd](d46cefd)) +* **fast-usdc:** use correct address format in cli ([d225974](d225974)) + +## 0.35.0-u18.0 (2024-10-31) + + +### Features + +* add CLI for fast-usdc package ([92bc5b1](92bc5b1)) + + + ### [0.1.1-u18.5](https://github.com/Agoric/agoric-sdk/compare/[email protected]@0.1.1-u18.5) (2024-12-17) **Note:** Version bump only for package fast-usdc --- a/packages/governance/CHANGELOG.md +++ b/packages/governance/CHANGELOG.md @@ -3,6 +3,15 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +### [0.10.4-u18.1](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-24) + + +### Bug Fixes + +* **orchestration:** harden exported patterns ([#10470](#10470)) ([47bebb8](47bebb8)), closes [#10456](#10456) + + + ### [0.10.4-u18.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-10-31) --- a/packages/inter-protocol/CHANGELOG.md +++ b/packages/inter-protocol/CHANGELOG.md @@ -3,6 +3,23 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.17.0-u18.6](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-24) + + +### Features + +* add an accessor for the vaultDirector's parameters ([32f1398](32f1398)) +* record instances that will be replaced so we can manage them ([c883c39](c883c39)) +* save the outgoing EC Charter instance and kit ([c2c9be3](c2c9be3)) + + +### Bug Fixes + +* makeReserveTerms ([27ce0b0](27ce0b0)) +* remove addInstance call from add-auction.js ([d16781f](d16781f)) + + + ## [0.17.0-u18.5](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-17) **Note:** Version bump only for package @agoric/inter-protocol --- a/packages/internal/CHANGELOG.md +++ b/packages/internal/CHANGELOG.md @@ -3,6 +3,21 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.4.0-u18.1](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-24) + + +### Features + +* consistent publishTxnRecord (record) ([dbf3934](dbf3934)) +* defaultSerializer util ([19d5e03](19d5e03)) +* getValues for sequence nodes ([b5698ce](b5698ce)) +* **internal:** Introduce deepCopyJsonable ([f875bb0](f875bb0)) +* pureDataMarshaller ([6df7f1f](6df7f1f)) +* showValue option for documentStorageSchema ([07d12d4](07d12d4)) +* storage-test-utils report missing data ([02c111b](02c111b)) + + + ## [0.4.0-u18.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-10-31) --- a/packages/orchestration/CHANGELOG.md +++ b/packages/orchestration/CHANGELOG.md @@ -3,6 +3,48 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.2.0-u18.5](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-24) + + +### ⚠ BREAKING CHANGES + +* `getAsset` and `getDenomInfo` require `srcChainName` param + +### Features + +* `assetOn` `DenomDetail` helper ([05fe515](05fe515)) +* `chainHub.makeTransferRoute` ([0215b6f](0215b6f)) +* `ForwardOpts` accepts `intermediateRecipient` ([eb975f1](eb975f1)) +* `ForwardOptsShape` ([50b1717](50b1717)) +* `getAsset` and `getDenomInfo` require `srcChainName` param ([fc802ad](fc802ad)) +* `withOrchestration` returns `baggage` ([e4a6c6d](e4a6c6d)) +* add `bech32Prefix?: string` to `CosmosChainInfo` ([cb9e1ee](cb9e1ee)) +* assetInfo as array of entries ([51e7a9c](51e7a9c)) +* chain-capabilities.js constants ([52ff70a](52ff70a)) +* **chainHub:** `getChainInfoByAddress` helper ([d6c487c](d6c487c)) +* **cosmos-orch-account:** expose `.executeEncodedTx` ([9d10be1](9d10be1)) +* CosmosChainInfo includes `pfmEnabled?: boolean` ([e1c35da](e1c35da)) +* export `DenomDetailShape` ([2dfddb3](2dfddb3)) +* export `OrchestrationPowersShape` ([34b61ea](34b61ea)) +* **local-orchestration-account:** support multi-hop pfm transfers ([c35fac7](c35fac7)) +* registerChainsAndAssets ([e72782d](e72782d)) +* send-anywhere inits chainHub ([2fa2f75](2fa2f75)) + + +### Bug Fixes + +* `brandKey` not part of `DenomDetail` ([9a65478](9a65478)) +* `convertChainInfo` connection sorting ([8ba4699](8ba4699)) +* do not stringify logs ([d04c5ea](d04c5ea)) +* **orchestration:** denomAmounts must be non-negative ([#10458](#10458)) ([40e0e4e](40e0e4e)) +* **orchestration:** harden exported patterns ([#10470](#10470)) ([47bebb8](47bebb8)), closes [#10456](#10456) +* **orchestration:** harden result of reverseConnInfo ([5c1219c](5c1219c)) +* subscribeToTransfers atomically ([7b77993](7b77993)) +* use `asVow` in case `owned()` throws ([e67e86b](e67e86b)) +* yarn codegen script ([9eea3fd](9eea3fd)) + + + ## [0.2.0-u18.4](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-17) **Note:** Version bump only for package @agoric/orchestration --- a/packages/solo/CHANGELOG.md +++ b/packages/solo/CHANGELOG.md @@ -3,6 +3,15 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.11.0-u18.6](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-24) + + +### Features + +* **internal:** Introduce deepCopyJsonable ([f875bb0](f875bb0)) + + + ## [0.11.0-u18.5](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-17) **Note:** Version bump only for package @agoric/solo --- a/packages/swing-store/CHANGELOG.md +++ b/packages/swing-store/CHANGELOG.md @@ -3,6 +3,15 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.10.0-u18.1](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-24) + + +### Features + +* **cosmic-swingset:** Allow `launch` to accept an already-open swingStore ([c65e5b1](c65e5b1)) + + + ## [0.10.0-u18.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-10-31) --- a/packages/swingset-liveslots/CHANGELOG.md +++ b/packages/swingset-liveslots/CHANGELOG.md @@ -3,6 +3,15 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +### [0.10.3-u18.1](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-24) + + +### Bug Fixes + +* **liveslots:** avoid slotToVal memory leak for watched promises ([874196c](874196c)), closes [#10757](#10757) [#10756](#10756) [#10706](#10706) + + + ### [0.10.3-u18.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-10-31) --- a/packages/telemetry/CHANGELOG.md +++ b/packages/telemetry/CHANGELOG.md @@ -3,6 +3,18 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +### [0.6.3-u18.4](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-24) + + +### Bug Fixes + +* **telemetry:** add missing slog type ([1aec8d0](1aec8d0)) +* **telemetry:** Empty context persisted when remaining beans are negative after run finish ([#10635](#10635)) ([ad4e83e](ad4e83e)) +* **telemetry:** event name typo ([9e19321](9e19321)) +* **telemetry:** timer-poll run.id ([#10672](#10672)) ([3b478fb](3b478fb)), closes [#10357](#10357) [#10357](#10357) + + + ### [0.6.3-u18.3](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-13) --- a/packages/time/CHANGELOG.md +++ b/packages/time/CHANGELOG.md @@ -3,6 +3,15 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +### [0.3.3-u18.1](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-24) + + +### Bug Fixes + +* **orchestration:** harden exported patterns ([#10470](#10470)) ([47bebb8](47bebb8)), closes [#10456](#10456) + + + ### [0.3.3-u18.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-10-31) --- a/packages/vats/CHANGELOG.md +++ b/packages/vats/CHANGELOG.md @@ -3,6 +3,22 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.16.0-u18.5](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-24) + + +### Features + +* **cosmic-swingset:** Add support for testing blocks of a mock chain ([48b6405](48b6405)) +* upgrade v7-board and test it ([#10516](#10516)) ([d8a109e](d8a109e)), closes [#10394](#10394) + + +### Bug Fixes + +* **ERTP,vats:** fix 9407 AmountPatternShape ([#9863](#9863)) ([59b1a9f](59b1a9f)), closes [#9410](#9410) [#9407](#9407) [#9410](#9410) [#9407](#9407) [#9410](#9410) [#9407](#9407) [#9410](#9410) +* **vaultFactory:** fix proposal description ([bc1f87a](bc1f87a)) + + + ## [0.16.0-u18.4](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-17) **Note:** Version bump only for package @agoric/vats --- a/packages/wallet/CHANGELOG.md +++ b/packages/wallet/CHANGELOG.md @@ -3,6 +3,23 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.19.0-u18.1](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-24) + +## 0.35.0-u18.4 (2024-12-17) + +## 0.35.0-u18.3 (2024-12-09) + +## 0.35.0-u18.2 (2024-11-21) + +## 0.35.0-u18.1 (2024-11-19) + + +### Features + +* **internal:** Introduce deepCopyJsonable ([f875bb0](f875bb0)) + + + ## [0.19.0-u18.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-10-31) --- a/packages/wallet/api/CHANGELOG.md +++ b/packages/wallet/api/CHANGELOG.md @@ -3,6 +3,15 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.15.0-u18.5](https://github.com/Agoric/agoric/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-24) + + +### Features + +* **internal:** Introduce deepCopyJsonable ([f875bb0](f875bb0)) + + + ## [0.15.0-u18.4](https://github.com/Agoric/agoric/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-17) **Note:** Version bump only for package @agoric/wallet-backend --- a/packages/zoe/CHANGELOG.md +++ b/packages/zoe/CHANGELOG.md @@ -3,6 +3,15 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +### [0.26.3-u18.1](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-12-24) + + +### Bug Fixes + +* **orchestration:** harden exported patterns ([#10470](#10470)) ([47bebb8](47bebb8)), closes [#10456](#10456) + + + ### [0.26.3-u18.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/[email protected]...@agoric/[email protected]) (2024-10-31) ```
While looking at perf metrics of the mainnet chain, I noticed that v43-walletFactory has a very large XS heap (and thus also has a very large XS heap snapshot), and is still growing.
Here is a graph of the v43 XS heap snapshot size versus deliveryNum (which is not the same as time, but monotonically increases with time):
The piecewise-linear regions are separated by upgrade events. The last time we upgraded v43-walletFactory was in upgrade-17, which both made functional improvements to the walletFactory, and (supposedly) fixed the
passStyleOf
problem that caused heap growth for every non-retired Presence that traversed the marshalling code (mostly from #8400 and #8401 , which should be flattened by upgrade-18 and eventually drained by slowly deleting the old price-feed vats sometime after upgrade-19) . That upgrade event happened at about deliveryNum/snapPos 21M, and forms the start of the right-most linear segment in that graph.We don't know why this vat is still growing: either the
passStyleOf
fix didn't take, or something else is going on. And I have even less ideas about why it might appear to be growing faster than before. Note that the X-axis is deliveries, not time, so I can only say with confidence that our bytes-per-delivery rate is higher. I'm not entirely sure that the bytes-per-time is higher: maybe we're doing fewer deliveries per second, but have more growth per delivery. To get a bytes-per-time slope from my data, we need to use the slogs to extract the blockTime of each sample. (I'll see if I can at least find the endpoints of each sawtooth).#10493 is about restarting this vat, which would reset the state back down to the bottom of a sawtooth, which would buy us some time to figure out the real problem. And the upgrade-18 fixes that retire QuotePayment objects (and break the Zoe cycles) may help, whether or not the
passStyleOf
fix is working.But we need to figure out the root cause. One step would be to take a v43 heap snapshot and use the Moddable tools to dump its contents. I'm going to guess that the
CHUNKS
section is fairly small (strings and Array backing stores), and theSLOTS
section is very large (objects and their properties). With a heap that large, random sampling of the SLOTS section would mostly return the things that we have too much of: if we see more than three samples showing the same kind of object, that's the problem right there, and the second step will be to figure out where it's coming from, and why it's being retained.The text was updated successfully, but these errors were encountered: