Skip to content

Commit

Permalink
Add upgrade_v0_1_2.sh script. More logs while upgrade applying.
Browse files Browse the repository at this point in the history
  • Loading branch information
yakud committed Apr 5, 2024
1 parent 6423ca3 commit 2e01f3f
Show file tree
Hide file tree
Showing 2 changed files with 84 additions and 7 deletions.
26 changes: 19 additions & 7 deletions app/upgrade_v0_1_2.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ package app

import (
"bytes"
"fmt"

sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/module"
Expand All @@ -28,13 +27,18 @@ import (

// applyUpgrade_v0_1_2 checks and applies the upgrade plan if necessary.
func (app *App) applyUpgrade_v0_1_2() {
ctx, err := app.CreateQueryContext(v0_1_2.UpgradeBlockHeight, false)
latestBlock := app.LastBlockHeight()
logger := app.Logger().With("upgrade", v0_1_2.UpgradeName)

ctx, err := app.CreateQueryContext(latestBlock, false)
if err != nil {
logger.Error("Failed to create query context with block", "error", err, "block", latestBlock)
return
}

plan, err := app.UpgradeKeeper.ReadUpgradeInfoFromDisk()
if err != nil || plan.Height < v0_1_2.UpgradeBlockHeight {
logger.Info("Applying upgrade plan", "info", plan.Info)
app.UpgradeKeeper.SetUpgradeHandler(v0_1_2.UpgradeName, app.upgradeHandler_v0_1_2())
app.UpgradeKeeper.ApplyUpgrade(ctx, v0_1_2.Plan)
}
Expand All @@ -46,20 +50,28 @@ func (app *App) upgradeHandler_v0_1_2() func(
_ upgradetypes.Plan,
fromVM module.VersionMap,
) (module.VersionMap, error) {
return func(ctx sdk.Context, _ upgradetypes.Plan, fromVM module.VersionMap) (module.VersionMap, error) {
logger := ctx.Logger().With("upgrade", v0_1_2.UpgradeName)
return func(ctx sdk.Context, plan upgradetypes.Plan, fromVM module.VersionMap) (module.VersionMap, error) {
logger := ctx.Logger().With("upgrade", plan.Name)

if plan.Name != v0_1_2.UpgradeName {
logger.Error("Invalid upgrade plan", "expected", v0_1_2.UpgradeName, "got", plan.Name)
return app.ModuleManager.RunMigrations(ctx, app.Configurator(), fromVM)
}

validators := app.StakingKeeper.GetAllValidators(ctx)

for _, validator := range validators {
if err := app.updateValidatorPowerIndex(ctx, validator); err != nil {
panic(fmt.Sprintf("failed to update validator power index: %v", err))
logger.Error("Failed to update validator power index", "error", err, "validator", validator.OperatorAddress)
return nil, err
}

logger.Info("Validator power index updated", "validator", validator.OperatorAddress)
}

logger.Info("All validators updated successfully.")

if err := app.UpgradeKeeper.DumpUpgradeInfoToDisk(v0_1_2.UpgradeBlockHeight, v0_1_2.Plan); err != nil {
if err := app.UpgradeKeeper.DumpUpgradeInfoToDisk(plan.Height, plan); err != nil {
logger.Error("Failed to dump upgrade info to disk", "error", err)
return nil, err
}

Expand Down
65 changes: 65 additions & 0 deletions scripts/upgrade_v0_1_2.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
# Copyright 2024 Galactica Network
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

#!/bin/bash

# This script is used to prepare the upgrade from v0.1.1 to v0.1.2

GALACTICAD_VERSION=$(galacticad version)
if [[ $GALACTICAD_VERSION != *"0.1.2"* ]]; then
echo "Galactica version must be 0.1.2"
exit 1
fi

# check env var GALACTICA_HOME and if not exists exit
if [ -z "$GALACTICA_HOME" ]; then
echo "GALACTICA_HOME is not set, using default path"
GALACTICA_HOME="$HOME/.galactica"
fi

# ask user to confirm:
echo "GALACTICA_HOME: $GALACTICA_HOME"
echo "\nThis script will perform the following actions:\n\
- Backup the existing priv_validator_state.json and replace it with a new one containing default values\n\
- Upgrade the node storage to v0.1.2\n\
- Rollback the latest block state\n"

if [ "$1" != "-y" ]; then
read -p "Do you want to continue? (y/n): " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
echo "User cancelled the script"
exit 1
fi
fi

PRIV_VAL_STATE=$GALACTICA_HOME/data/priv_validator_state.json

UPGRADE_INFO_FILE=$GALACTICA_HOME/data/upgrade-info.json
if [ -f "$UPGRADE_INFO_FILE" ]; then
echo "upgrade v0.1.2 already applied"
exit 1
fi

if [ ! -f "$PRIV_VAL_STATE" ]; then
echo "priv_validator_state.json not found at $PRIV_VAL_STATE"
exit 1
fi

cp $PRIV_VAL_STATE $PRIV_VAL_STATE.bkp

galacticad --home $GALACTICA_HOME rollback --hard

echo '{"height":"0","round":0,"step":0}' > $PRIV_VAL_STATE

0 comments on commit 2e01f3f

Please sign in to comment.