Inconsistent morph init
behavior before and after height ≈ 100
#1391
Labels
No labels
P0
P1
P2
P3
badger
frostfs-adm
frostfs-cli
frostfs-ir
frostfs-lens
frostfs-node
good first issue
triage
Infrastructure
blocked
bug
config
discussion
documentation
duplicate
enhancement
go
help wanted
internal
invalid
kludge
observability
perfomance
question
refactoring
wontfix
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: TrueCloudLab/frostfs-node#1391
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Expected Behavior
frostfs-adm morph init
should work the same regardless of current blockchain height.Current Behavior
Given a 7-node NEO network (all 7 nodes are members of committee)
morph init
works differently depending on current blockchain height:morph init
works as expected. It transfers a lot of GAS and some NEO tokens tocommittee
account in alphabet wallets prior to proceeding withStage 2
where these tokens will be used to cover transaction fees.committee
accounts in alphabet wallets remain empty andStage 2
fails with an error:Threshold value of 100 is a rough estimate based on multiple manual tests (i.e.
morph init
works when started around height = 39, but does not work with height = 249, height = 135, height = 100)Possible Solution
No fix can be suggested by reporter. Further solutions shall be up to developers.
Steps to Reproduce (for bugs)
frostfs-adm morph generate-alphabet --size 7
bin/frostfs-adm-v0.42.9 morph init --contracts data/contracts --rpc-endpoint http://neo-go-endpoint --alphabet-wallets wallet
Context
committee
andconsensus
are the same in those scenarios but are distinct with 7-node alphabet.Regression
No
Your Environment
uname -a
):Linux hostname 6.1.0-18-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.76-1 (2024-02-01) x86_64 GNU/Linux
In
frostfs-adm
we try to be idempotent and not to do things twice.For transfers we first check the balance of some account we have performed transfer to.
acc := c.Accounts[0]
The problem is that this account is the one of consensus node, which receives rewards for block processing.
I guess 100 blocks is enough to make the linked condition false.
The solution: check the balance of the committee account, it should be greater than 0.
Thanks! I've repeated manual tests in my environment and can confirm that the suggested fix works.