With this release we are shifting to a new CLI design:
in the past, Cosmovisor was designed to act as a wrapper for a Cosmos App. An admin could link it and use it instead of the Cosmos App. When running it will pass all options and configuration parameters to the app. Hence the only way to configure the Cosmovisor was through environment variables.
now, we are moving to a more traditional model, where Cosmovisor has it's own command set and is a true supervisor.
New commands have been added:
run will start the Cosmos App and pass remaining arguments to the app (similar to npm run)
help will display Cosmovisor help
version will display both Cosmovisor and the associated app version.
The existing way of starting an app with Cosmovisor has been deprecated (cosmovisor [app params]) and will be removed in the future version. Please use cosmovisor run [app pararms] instead.
New Features
We added a new configuration option: DAEMON_BACKUP_DIR (as env variable). When set, Cosmovisor will create backup the app data backup in that directory (instead of using the app home directory) before running the update. See the README file for more details.
Bug Fixes
Fixed cosmovisor version output when installed using 'go install github.com/cosmos/cosmos-sdk/cosmovisor/cmd/cosmovisor@v1.0.0'.
This is the first major release of Cosmovisor. It changes the way Cosmovisor is searching for an upgrade event from an app. Instead of scanning standard input and standard output logs, the Cosmovisor observes the $DAEMON_HOME/upgrade-info.json file, that is produced by the x/upgrade module. The upgrade-info.json files is created by the x/upgrade module and contains information from the on-chain upgrade Plan record. Using the file based approach solved many outstanding problems: freezing when logs are too long, race condition with the x/upgrade handler, and potential exploit (if a chain would allow to log an arbitrary message, then an attacker could produce a fake upgrade signal and halt a chain or instrument a download of modified, hacked binary when the auto download option is enabled).
Auto downloads
Cosmovisor v1.0 supports auto downloads based on the information in the data/upgrade-info.json. In the Cosmos SDK < v0.44, that file doesn't contain upgrade.Plan.Info, that is needed for doing auto download. Hence Cosmovisor v1.0 auto download won't work with Apps updating from v0.43 and earlier.
NOTE: we don't recommend using auto download functionality. It can lead to potential chain halt when the upgrade Plan contains a bad link or the resource with the binary will be temporarily unavailable. We are planning on adding a upgrade verification command which can potentially solve this issue.
Other updates
Changed default value of DAEMON_RESTART_AFTER_UPGRADE to true.
Added version command, which prints both the Cosmovisor and the associated app version.
Added help command, which prints the Cosmovisor help without passing it to the associated version. This is an exception, because normally, Cosmovisor passes all arguments to the associated app.
github.com/cosmos/cosmos-sdk/db (cosmos-sdk/db here an after) is a module in the Cosmos SDK repository. It is used in store/v2 instead of tendermint/tm-db which is now deprecated.
cosmos-sdk/db extends the tendermint/tm-db interface. however, it only supports BaggerDB and RocksDB (the databases we tested, which provide snapshot functionality necessary for store/v2 and ADR-040 implementation).
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Bumps cosmossdk.io/depinject from 1.0.0-alpha.4 to 1.1.0.
Release notes
Sourced from cosmossdk.io/depinject's releases.
Changelog
Sourced from cosmossdk.io/depinject's changelog.
... (truncated)
Commits
be5e3aa
feat(log): extend logger options (#15956)851e9e8
docs: update roadmap for q2 (#15952)91278f6
refactor(x/authz)!: Use KVStoreService, context.Context and return errors ins...26faee9
refactor: bcrypt key derivation to aead (#509) (#15817)428e19f
refactor(x/distribution)!: Use KVStoreService, context.Context and return err...a6ea094
ci: skip fix registration for linting (#15965)00b78fa
refactor(x/auth): v2 adaptable tx instead of double decode (#15910)1179285
feat(hubl): cache bech32 prefix (#15954)6a8251a
build(deps): bump cometbft to v0.37.1 (#15955)6dfe735
refactor!: use KVStoreService and context.Context in x/bank (#15891)Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show