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…
Add table
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.
make up
is not stateless anymore #94