hashgraph / hashgraph/solo-weaver

block node reconfigure fails with "at least one storage path is not set and base path is empty" on chart ≥ 0.37.0 clusters

Open
#810 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Go
Stars
3
Forks
0
Avg merge
3d 2h
Merged PRs (30d)
46

Description

## Environment

Individual-paths storage install; block node deployed at chart ≥ 0.37.0 (application-state volume present).

## Problem

There are two storage changes in BN v0.37.x release
- remove **verification**
- add new **application-state**

This caused the **reconfigure** to fail, for example,

```
# sudo solo-provisioner block node reconfigure --profile=perfnet --values=solo-provisioner/values.yaml --with-reset

Selected Inputs
› Historic Block Retention Threshold: 0
› Recent Block Retention Threshold: 96000
› Storage Path Mode: Individual paths
› Archive Storage Path: /mnt/fast-storage/block-node/archive
› Live Storage Path: /mnt/fast-storage/block-node/live
› Log Storage Path: /mnt/fast-storage/block-node/logs
› Plugins Storage Path: /mnt/fast-storage/block-node/plugins
› Application-State Storage Path: /mnt/fast-storage/application-state
› Plugin Preset: Tier 1 — Local Full History (blocks stored on local disk)
Error: common.illegal_state: failed to compare storage paths, cause: common.illegal_argument: at least one storage path is not set and base path is empty; set --base-path flag or storage.basePath in config
Usage:
solo-provisioner block node reconfigure [flags]

```

even though all individual paths were supplied including **--application-state-path**.

## Expected

- `reconfigure` proceeds
- storage-path comparison succeeds.

## Root cause

`internal/reality/blocknode_checker.go:populateStorageFromPVs()` switch has no **application-state** case, so the reality checker never reads the **application-state** PV's hostPath back into `BlockNodeState.Storage.ApplicationStatePath`. The empty deployed path then fails `ResolveStoragePaths` (`internal/blocknode/storage.go:464`) via `storagePathsChanged` (`internal/bll/blocknode/helpers.go:172`).

Possible fix(verified that fixed the above failure)

```
diff --git a/internal/reality/blocknode_checker.go b/internal/reality/blocknode_checker.go
index 4e94eff..82354bb 100644
--- a/internal/reality/blocknode_checker.go
+++ b/internal/reality/blocknode_checker.go
@@ -207,6 +207,9 @@ func (b *blockNodeChecker) populateStorageFromPVs(
case strings.Contains(claimName, "verification"):
storage.VerificationPath = hostpath
storage.VerificationSize = size
+ case strings.Contains(claimName, "application-state"):
+ storage.ApplicationStatePath = hostpath
+ storage.ApplicationStateSize = size
case strings.Contains(claimName, "plugins"):
storage.PluginsPath = hostpath
storage.PluginsSize = size

```

## Impact

Any final solution may need to consider following as test cases:

- **reconfigure** (all variants) fails outright.
- **reset**, **uninstall** `--purge-storage`/`--with-reset` fail during execution when relying on state.
- **upgrade**/**install** fail only if the requested `application-state` path is unresolved (more likely under `--non-interactive`).
- Also makes any `0.36.x`→`0.37.0` migration non-durable: post-migration state persists an empty application-state path, planting a failure for the next command.

Contributor guide

Open the contributing guide

Research direction

Start in internal/reality/blocknode_checker.go at populateStorageFromPVs(), then trace storage-path resolution in internal/blocknode/storage.go:464 and storagePathsChanged in internal/bll/blocknode/helpers.go:172. Reproduce the reported block node reconfigure command and verify that application-state is recovered from the deployed PV so storage-path comparison succeeds across the listed reset, uninstall, upgrade, and install scenarios.

Written by the indexing model from the issue text.

Assessment

Tech stack
go, kubernetes
Domain
devops, infrastructure
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Clearly specified
Newbie friendliness
78/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.