Skip to content
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

Release Testnet 78, via chain upgrade #4582

Closed
2 of 33 tasks
conorsch opened this issue Jun 10, 2024 · 3 comments
Closed
2 of 33 tasks

Release Testnet 78, via chain upgrade #4582

conorsch opened this issue Jun 10, 2024 · 3 comments
Assignees

Comments

@conorsch
Copy link
Contributor

conorsch commented Jun 10, 2024

Testnet upgrade

Testnet chain id: penumbra-testnet-deimos-8 (unchanged)
Release date: 2024-06-25 (?)
Testnet release manager: @conorsch

Testnet Release Manager Checklist

It's been over a week since the chain upgrade from 76 -> 77 (#4497), so let's schedule another. We plan to ship the entirety of main, to flush out all pending changes. As usual, special attention must be paid to breaking changes, which require writing migrations.

Pre-release:

On release day:

  • Draft an announcement for peer review to ensure changes included are comprehensive.
  • Disable testnet deploy workflow, so that chain is not reset
  • Bump the version number and push its tag, via cargo-release.
    • Run cargo release minor for a new testnet, or cargo release patch for a bugfix. For the latter, make sure you're on a dedicated release branch.
    • Push the commit and newly generated tag, e.g. v0.51.0, to the remote.
  • Manually trigger container-build workflow, bc deploy workflow is disabled
  • Wait for the "Release" workflow to complete
  • Edit the newly created release object, and add a note summarizing the intent of the release
  • Close faucet (chain halt will make it inoperative anyway)
  • Run migrations on all validators
  • Run migrations on all fullnodes
  • Update Galileo deployment, following docs
  • Make the announcement to Discord! 🎉🎉🎉

Post-release cleanup tasks

  • Ensure faucet is open
  • Perform Hermes maintenance for genesis restart to get relayer running again
  • Confirm IBC channels are working
@github-actions github-actions bot added the needs-refinement unclear, incomplete, or stub issue that needs work label Jun 10, 2024
@conorsch conorsch self-assigned this Jun 13, 2024
@conorsch conorsch removed the needs-refinement unclear, incomplete, or stub issue that needs work label Jun 14, 2024
conorsch added a commit that referenced this issue Jun 14, 2024
We've already updated the CometBFT config template, but running nodes on
the current testnet will still be using the prior value, generated at
time of join. Let's update the value as part of `pd migrate`, logging a
warning if we fail to do so.

Refs #4594, #4582.
conorsch added a commit that referenced this issue Jun 17, 2024
We've already updated the CometBFT config template, but running nodes on
the current testnet will still be using the prior value, generated at
time of join. Let's update the value as part of `pd migrate`, logging a
warning if we fail to do so.

Refs #4594, #4582.
conorsch added a commit that referenced this issue Jun 17, 2024
We've already updated the CometBFT config template, but running nodes on
the current testnet will still be using the prior values, generated at
time of join. Let's update the values as part of `pd migrate`, logging a
warning if we fail to do so.

Refs #4594, #4582.
conorsch added a commit that referenced this issue Jun 18, 2024
We've already updated the CometBFT config template, but running nodes on
the current testnet will still be using the prior values, generated at
time of join. Let's update the values as part of `pd migrate`, logging a
warning if we fail to do so.

Refs #4594, #4582.
conorsch added a commit that referenced this issue Jun 20, 2024
We've already updated the CometBFT config template, but running nodes on
the current testnet will still be using the prior values, generated at
time of join. Let's update the values as part of `pd migrate`, logging a
warning if we fail to do so.

Refs #4594, #4582.
avahowell pushed a commit that referenced this issue Jun 24, 2024
We've already updated the CometBFT config template, but running nodes on
the current testnet will still be using the prior values, generated at
time of join. Let's update the values as part of `pd migrate`, logging a
warning if we fail to do so.

Refs #4594, #4582.
conorsch added a commit that referenced this issue Jun 25, 2024
Also bumps crate versions to 0.78.0-alpha.1. There's no corresponding
tag or release object with this alpha, but updating the crate versions
helps us to differentiate during testing while we get close to shipping
Testnet 78.

Refs #4582.
conorsch added a commit that referenced this issue Jun 25, 2024
Also bumps crate versions to 0.78.0-alpha.1. There's no corresponding
tag or release object with this alpha, but updating the crate versions
helps us to differentiate during testing while we get close to shipping
Testnet 78.

Refs #4582.
@conorsch
Copy link
Contributor Author

❯ pcli tx proposal submit --file 78-upgrade.toml  --deposit-amount 10penumbra
Scanning blocks from last sync height 723008 to latest height 723009
[0s] ██████████████████████████████████████████████████       1/1       12/s ETA: 0s
building transaction [4 actions, 3 proofs]...
finished proving in 0.553 seconds [4 actions, 3 proofs, 2496 bytes]
broadcasting transaction and awaiting confirmation...
transaction broadcast successfully: 79760d4374c3e650b04b18bd184ebe6f07539aad9f9eef590e10955a40b43cdc
transaction confirmed and detected: 79760d4374c3e650b04b18bd184ebe6f07539aad9f9eef590e10955a40b43cdc @ height 723010

❯ pcli q governance proposal 13 definition
id = "13"
title = "upgrade to 0.78.0"
description = "planned upgrade, via chain migration, to testnet 78"

[upgradePlan]
height = "734700"

@conorsch
Copy link
Contributor Author

❯ pcli q governance proposal 13 state
{
  "finished": {
    "outcome": {
      "passed": {}
    }
  }
}

cratelyn added a commit to penumbra-zone/galileo that referenced this issue Jun 26, 2024
 ### 🚁 overview

fixes #104.

@conorsch reported this error, when upgrading to a new testnet release:

> While performing the upgrade to Testnet 78
> ([penumbra-zone/penumbra#4582](penumbra-zone/penumbra#4582))
> today, I noticed belated that Galileo isn't building against that
> version of the Penumbra monorepo. See example build failure here:
> https://github.com/penumbra-zone/galileo/actions/runs/9683427186/job/26718838171
>
> ```
> #20 226.5 error[E0277]: the trait bound `rustls_acme::axum::AxumAcceptor: Accept<hyper::server::tcp::addr_stream::AddrStream, _>` is not satisfied
> #20 226.5    --> src/opt/rpc.rs:115:44
> #20 226.5     |
> #20 226.5 115 |                 tokio::task::spawn($server.serve(make_svc))
> #20 226.5     |                                            ^^^^^ the trait `Accept<hyper::server::tcp::addr_stream::AddrStream, _>` is not implemented for `rustls_acme::axum::AxumAcceptor`
> #20 226.5 ...
> #20 226.5 128 |                 spawn_grpc_server!(grpc_server.acceptor(acceptor))
> #20 226.5     |                 -------------------------------------------------- in this macro invocation
> #20 226.5     |
> #20 226.5     = help: the trait `Accept<I, S>` is implemented for `DefaultAcceptor`
> #20 226.5     = note: this error originates in the macro `spawn_grpc_server` (in Nightly builds, run with -Z macro-backtrace for more info)
> #20 226.5
> #20 226.5 error[E0277]: the trait bound `rustls_acme::axum::AxumAcceptor: Accept<hyper::server::tcp::addr_stream::AddrStream, _>` is not satisfied
> #20 226.5    --> src/opt/rpc.rs:115:50
> #20 226.5     |
> #20 226.5 115 |                 tokio::task::spawn($server.serve(make_svc))
> #20 226.5     |                                            ----- ^^^^^^^^ the trait `Accept<hyper::server::tcp::addr_stream::AddrStream, _>` is not implemented for `rustls_acme::axum::AxumAcceptor`
> #20 226.5     |                                            |
> #20 226.5     |                                            required by a bound introduced by this call
> #20 226.5 ...
> #20 226.5 128 |                 spawn_grpc_server!(grpc_server.acceptor(acceptor))
> #20 226.5     |                 -------------------------------------------------- in this macro invocation

this commit fixes that build error.

 ### 😷 diagnosis

the

running this command in the monorepo...

```sh
; git diff v0.77.4...v0.78.0 Cargo.lock
```

we can see some relevant changes to the dependency tree:

```diff
 [[package]]
 name = "axum-server"
-version = "0.4.7"
+version = "0.5.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bace45b270e36e3c27a190c65883de6dfc9f1d18c829907c127464815dc67b24"
+checksum = "447f28c85900215cc1bea282f32d4a2f22d55c5a300afdfbc661c8d6a632e063"
 dependencies = [
  "arc-swap",
  "bytes",
```

```diff
 [[package]]
 name = "penumbra-auto-https"
-version = "0.77.0"
+version = "0.78.0"
 dependencies = [
  "anyhow",
  "axum-server",
  "futures",
- "rustls 0.20.9",
+ "rustls",
  "rustls-acme",
  "tracing",
 ]
```

the `axum-server` dependency has been upgraded, which in turn affects
the version of `axum-server` that the value provided by
`penumbra_auto_https::axum_acceptor()` may be used with.

we call that function in `opt/rpc.rs` and provide it to `axum-server`,
so Galileo should use the same version as the monorepo.
cratelyn added a commit to penumbra-zone/galileo that referenced this issue Jun 26, 2024
 ### 🚁 overview

fixes #104.

@conorsch reported this error, when upgrading to a new testnet release:

> While performing the upgrade to Testnet 78
> ([penumbra-zone/penumbra#4582](penumbra-zone/penumbra#4582))
> today, I noticed belated that Galileo isn't building against that
> version of the Penumbra monorepo. See example build failure here:
> https://github.com/penumbra-zone/galileo/actions/runs/9683427186/job/26718838171
>
> ```
> #20 226.5 error[E0277]: the trait bound `rustls_acme::axum::AxumAcceptor: Accept<hyper::server::tcp::addr_stream::AddrStream, _>` is not satisfied
> #20 226.5    --> src/opt/rpc.rs:115:44
> #20 226.5     |
> #20 226.5 115 |                 tokio::task::spawn($server.serve(make_svc))
> #20 226.5     |                                            ^^^^^ the trait `Accept<hyper::server::tcp::addr_stream::AddrStream, _>` is not implemented for `rustls_acme::axum::AxumAcceptor`
> #20 226.5 ...
> #20 226.5 128 |                 spawn_grpc_server!(grpc_server.acceptor(acceptor))
> #20 226.5     |                 -------------------------------------------------- in this macro invocation
> #20 226.5     |
> #20 226.5     = help: the trait `Accept<I, S>` is implemented for `DefaultAcceptor`
> #20 226.5     = note: this error originates in the macro `spawn_grpc_server` (in Nightly builds, run with -Z macro-backtrace for more info)
> #20 226.5
> #20 226.5 error[E0277]: the trait bound `rustls_acme::axum::AxumAcceptor: Accept<hyper::server::tcp::addr_stream::AddrStream, _>` is not satisfied
> #20 226.5    --> src/opt/rpc.rs:115:50
> #20 226.5     |
> #20 226.5 115 |                 tokio::task::spawn($server.serve(make_svc))
> #20 226.5     |                                            ----- ^^^^^^^^ the trait `Accept<hyper::server::tcp::addr_stream::AddrStream, _>` is not implemented for `rustls_acme::axum::AxumAcceptor`
> #20 226.5     |                                            |
> #20 226.5     |                                            required by a bound introduced by this call
> #20 226.5 ...
> #20 226.5 128 |                 spawn_grpc_server!(grpc_server.acceptor(acceptor))
> #20 226.5     |                 -------------------------------------------------- in this macro invocation

this commit fixes that build error.

 ### 😷 diagnosis

the

running this command in the monorepo...

```sh
; git diff v0.77.4...v0.78.0 Cargo.lock
```

we can see some relevant changes to the dependency tree:

```diff
 [[package]]
 name = "axum-server"
-version = "0.4.7"
+version = "0.5.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bace45b270e36e3c27a190c65883de6dfc9f1d18c829907c127464815dc67b24"
+checksum = "447f28c85900215cc1bea282f32d4a2f22d55c5a300afdfbc661c8d6a632e063"
 dependencies = [
  "arc-swap",
  "bytes",
```

```diff
 [[package]]
 name = "penumbra-auto-https"
-version = "0.77.0"
+version = "0.78.0"
 dependencies = [
  "anyhow",
  "axum-server",
  "futures",
- "rustls 0.20.9",
+ "rustls",
  "rustls-acme",
  "tracing",
 ]
```

the `axum-server` dependency has been upgraded, which in turn affects
the version of `axum-server` that the value provided by
`penumbra_auto_https::axum_acceptor()` may be used with.

we call that function in `opt/rpc.rs` and provide it to `axum-server`,
so Galileo should use the same version as the monorepo.
conorsch added a commit to penumbra-zone/hermes that referenced this issue Jun 26, 2024
conorsch added a commit that referenced this issue Jun 26, 2024
conorsch added a commit that referenced this issue Jun 27, 2024
## Describe your changes
Refs #4582

Also relevant is #4525 which the archive referenced in this PR does
_not_ account for; 4524 is still outstanding.

To test this, one should be able to join the post-upgrade Testnet 78
with v0.78.0 of pd and sync blocks.
## Issue ticket number and link

## Checklist before requesting a review

- [x] If this code contains consensus-breaking changes, I have added the
"consensus-breaking" label. Otherwise, I declare my belief that there
are not consensus-breaking changes, for the following reason:

  > docs-only

Co-authored-by: Conor Schaefer <[email protected]>
@conorsch
Copy link
Contributor Author

Testnet 78 shipped yesterday https://github.com/penumbra-zone/penumbra/releases/tag/v0.78.0, and it was good.

conorsch added a commit to prax-wallet/registry that referenced this issue Jun 27, 2024
The osmo-grand-5 client expired roughly a week ago, due to the osmosis
testnet rpc node experiencing turbulence. After Testnet 78 [0], and
confirming that the osmosis node was working again, we created a new
channel.

[0] penumbra-zone/penumbra#4582
grod220 pushed a commit to prax-wallet/registry that referenced this issue Jun 28, 2024
The osmo-grand-5 client expired roughly a week ago, due to the osmosis
testnet rpc node experiencing turbulence. After Testnet 78 [0], and
confirming that the osmosis node was working again, we created a new
channel.

[0] penumbra-zone/penumbra#4582

Co-authored-by: Conor Schaefer <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Archived in project
Development

No branches or pull requests

1 participant