Skip to content

Commit 3e7edba

Browse files
authored
fix migration issues found on jtc tests (#2722)
1 parent c4e8fa8 commit 3e7edba

File tree

3 files changed

+28
-13
lines changed

3 files changed

+28
-13
lines changed

pkg/constants/errors.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,5 @@ var (
88
ErrNoBlockchainID = errors.New("\n\nNo blockchainID found. To resolve this:\n- Use 'avalanche blockchain deploy' to deploy the blockchain and generate a blockchainID.\n- Or use 'avalanche blockchain import' to import an existing configuration.\n") //nolint:stylecheck
99
ErrNoSubnetID = errors.New("\n\nNo subnetID found. To resolve this:\n- Use 'avalanche blockchain deploy' to create the subnet and generate a subnetID.\n- Or use 'avalanche blockchain import' to import an existing configuration.\n") //nolint:stylecheck
1010
ErrInvalidValidatorManagerAddress = errors.New("invalid validator manager address")
11+
ErrKeyNotFoundOnMap = errors.New("key not found on map")
1112
)

pkg/localnet/migration.go

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ package localnet
55
import (
66
"encoding/base64"
77
"encoding/json"
8+
"errors"
89
"fmt"
910
"os"
1011
"path/filepath"
@@ -16,6 +17,7 @@ import (
1617
"github.com/ava-labs/avalanche-cli/pkg/interchain/relayer"
1718
"github.com/ava-labs/avalanche-cli/pkg/models"
1819
"github.com/ava-labs/avalanche-cli/pkg/utils"
20+
sdkutils "github.com/ava-labs/avalanche-cli/sdk/utils"
1921
"github.com/ava-labs/avalanche-network-runner/network"
2022
avagoconfig "github.com/ava-labs/avalanchego/config"
2123
"github.com/ava-labs/avalanchego/ids"
@@ -211,7 +213,7 @@ func migrateCluster(
211213
return fmt.Errorf("failure reading legacy local network conf: %w", err)
212214
}
213215
trackSubnetsStr, err = utils.GetJSONKey[string](nodeConfig.Flags, avagoconfig.TrackSubnetsKey)
214-
if err != nil {
216+
if err != nil && !errors.Is(err, constants.ErrKeyNotFoundOnMap) {
215217
return fmt.Errorf("failure reading legacy local network conf: %w", err)
216218
}
217219
nodeSettings = append(nodeSettings, NodeSetting{
@@ -222,9 +224,13 @@ func migrateCluster(
222224
StakingPort: uint64(stakingPort),
223225
})
224226
}
225-
trackedSubnets, err := utils.MapWithError(strings.Split(trackSubnetsStr, ","), ids.FromString)
226-
if err != nil {
227-
return err
227+
var trackedSubnets []ids.ID
228+
trackSubnetsStr = strings.TrimSpace(trackSubnetsStr)
229+
if trackSubnetsStr != "" {
230+
trackedSubnets, err = utils.MapWithError(strings.Split(trackSubnetsStr, ","), ids.FromString)
231+
if err != nil {
232+
return err
233+
}
228234
}
229235
binPath := config.BinaryPath
230236
// local connection info
@@ -286,23 +292,31 @@ func migrateCluster(
286292
for i, node := range network.Nodes {
287293
sourceDir := filepath.Join(anrDir, config.NodeConfigs[i].Name, "db")
288294
targetDir := filepath.Join(networkDir, node.NodeID.String(), "db")
289-
if err := dircopy.Copy(sourceDir, targetDir); err != nil {
290-
return fmt.Errorf("failure migrating data dir %s into %s: %w", sourceDir, targetDir, err)
295+
if sdkutils.DirExists(sourceDir) {
296+
if err := dircopy.Copy(sourceDir, targetDir); err != nil {
297+
return fmt.Errorf("failure migrating data dir %s into %s: %w", sourceDir, targetDir, err)
298+
}
291299
}
292300
sourceDir = filepath.Join(anrDir, config.NodeConfigs[i].Name, "chainData")
293301
targetDir = filepath.Join(networkDir, node.NodeID.String(), "chainData")
294-
if err := dircopy.Copy(sourceDir, targetDir); err != nil {
295-
return fmt.Errorf("failure migrating data dir %s into %s: %w", sourceDir, targetDir, err)
302+
if sdkutils.DirExists(sourceDir) {
303+
if err := dircopy.Copy(sourceDir, targetDir); err != nil {
304+
return fmt.Errorf("failure migrating data dir %s into %s: %w", sourceDir, targetDir, err)
305+
}
296306
}
297307
sourceDir = filepath.Join(anrDir, config.NodeConfigs[i].Name, "plugins")
298308
targetDir = filepath.Join(networkDir, "plugins")
299-
if err := dircopy.Copy(sourceDir, targetDir); err != nil {
300-
return fmt.Errorf("failure migrating plugindir dir %s into %s: %w", sourceDir, targetDir, err)
309+
if sdkutils.DirExists(sourceDir) {
310+
if err := dircopy.Copy(sourceDir, targetDir); err != nil {
311+
return fmt.Errorf("failure migrating plugindir dir %s into %s: %w", sourceDir, targetDir, err)
312+
}
301313
}
302314
sourceDir = filepath.Join(anrDir, config.NodeConfigs[i].Name, "configs", "chains")
303315
targetDir = filepath.Join(networkDir, node.NodeID.String(), "configs", "chains")
304-
if err := dircopy.Copy(sourceDir, targetDir); err != nil {
305-
return fmt.Errorf("failure migrating chain configs dir %s into %s: %w", sourceDir, targetDir, err)
316+
if sdkutils.DirExists(sourceDir) {
317+
if err := dircopy.Copy(sourceDir, targetDir); err != nil {
318+
return fmt.Errorf("failure migrating chain configs dir %s into %s: %w", sourceDir, targetDir, err)
319+
}
306320
}
307321
}
308322
return os.RemoveAll(anrDir)

pkg/utils/json.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ func SetJSONKey(jsonBody string, k string, v interface{}) (string, error) {
7272
func GetJSONKey[T any](jsonMap map[string]interface{}, k string) (T, error) {
7373
intf, ok := jsonMap[k]
7474
if !ok {
75-
return *new(T), fmt.Errorf("%s not found on map", k)
75+
return *new(T), fmt.Errorf("%w: %s", constants.ErrKeyNotFoundOnMap, k)
7676
}
7777
v, ok := intf.(T)
7878
if !ok {

0 commit comments

Comments
 (0)