Skip to content

agoric-upgrade-16

Compare
Choose a tag to compare
@gibson042 gibson042 released this 12 Jul 17:27
· 2270 commits to master since this release

The Agoric OpCo engineering team is pleased to publish the agoric-upgrade-16 release. This release is primarily intended to deploy the Orchestration Core feature and fix some performance issues. This is a significant upgrade that marks a major milestone by enabling new functionality for the Agoric chain.

The following new features are included in this release:

  • #8583 and more: Orchestration Core
  • #9388: Reduce the size of state-sync snapshots

The release contains at least the following fixes:

  • #9316: Fix a memory leak that impacted commit time and resulted in missed blocks
  • #9418: State-sync export would temporarily stall the node while initiating a snapshot resulting in missed blocks
  • #9100: Make the snapshots export command usable
  • #9424: Some options like iavl-disable-fastnode were not applied
  • #9179: Avoid unnecessary rebuilds when invoking agd
  • #9620: Improve handling of ephemeral values
  • #9671: Adopt VTRANSFER_IBC_EVENT as an action-type
  • #9682: Fix store upgrade logic when applying multiple upgrades of the same version

The full set of changes in this release can be found at #9642, #9678 and #9684.

This release has satisfied all pre-release/testnet validation checks, and is now recommended for chains to upgrade from the previous agoric-upgrade-15 release. As a chain-halting upgrade, once approved, all chain validators will need to upgrade from agoric-upgrade-15 to this new version (after the chain halts due to reaching the height required in a governance proposal).

State-sync

As a change from previous releases, state-sync snapshots now only include minimal data to restore a node. However there are still continued performance issues related to state-sync. In particular, we've observed that on some deployments, the snapshot taking and restoring process can take multiple hours, require about 20GB of temporary free disk space, and 16GB of memory.

In this release, the snapshots export agd command has been fixed, and can now be used to generate a snapshot export of the current application state (while the node is not running). Combined with with other snapshots commands and the tendermint bootstrap-state command, this can be used to restore a node (state-sync pruning) without having to connect the node to the p2p network.

Handling of the iavl-disable-fastnode option

A bug in agoric-upgrade-14 and agoric-upgrade-15 resulted in this configuration option to be ignored, and default to false. As such all nodes will have created a "fast node" index, even if the option was explicitly set to true in the config. This release now honors the option.

Cosmos Upgrade Handler Name

Below is the cosmos upgrade handler name for this release. This is the name that can be used in governance proposals to deploy this upgrade.

Cosmos Upgrade Handler Name: agoric-upgrade-16

Tags

Below is the git information related to this software release. Note the git tag does not always match the cosmos upgrade handler name.

Git Tag: agoric-upgrade-16
Git Commit: c772ff40720e6d669e67d2da06e9ab394de6a9c1
@agoric/cosmos package version: 0.35.0-u16.2
Docker: ghcr.io/agoric/agoric-sdk:47

As shown in go.mod this release is based on:

ibc-go v6.3.1
cosmos-sdk v0.46.16
cometbft v0.34.30

How to upgrade

Presuming that your node is running agoric-upgrade-15, once the upgrade height for a subsequent proposal to upgrade to agoric-upgrade-16 has been reached, your node will halt automatically allowing you to upgrade the agoric stack.

Prerequisites

Install supported versions of Go, Node.js, and a compiler such as gcc or clang as documented in the README.

Building

# (stop the agd service)
cd agoric-sdk
git fetch --all
git checkout agoric-upgrade-16
git clean -xdf && git submodule foreach --recursive git clean -xdf
./bin/agd build
# (start the agd service)

Do not copy the agd script or Go binary to another location. If you would like to have an executable agd in another location, then create a symlink in that location pointing to agoric-sdk/bin/agd.

Troubleshooting repoconfig.sh: No such file or directory

Unlike typical cosmos-sdk chains where the daemon is a single executable file, Agoric's use of cosmos-sdk depends on many components of agoric-sdk at runtime. Copying agd to /usr/local/bin or the like is unlikely to produce a working installation. For more detail, see: #7825

Troubleshooting Cannot find dependency ... in systemd

If you have LimitNOFILE=4096 in your systemd unit file, change it to LimitNOFILE=65536. For more detail, see #7817

Specifying --upgrade-info for the software upgrade proposal

The ./scripts/gen-upgrade-proposal.sh is designed to aid in composing a agd tx submit-proposal software-upgrade ... command. In particular, it captures package checksums to verify integrity of downloaded software.