Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sprint 1.14 #3228

Merged
merged 409 commits into from
May 1, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
409 commits
Select commit Hold shift + click to select a range
fb2b3ab
Debug
Jayashsatolia403 Mar 25, 2024
73f88ee
Merge remote-tracking branch 'origin/fix/transaction-errors' into fix…
Jayashsatolia403 Mar 25, 2024
dd9d5cc
Add timeout
Jayashsatolia403 Mar 25, 2024
e30d0e2
updated according to the comments
Zorro30 Mar 25, 2024
0499dc4
Merge pull request #3184 from 0chain/fix/rm-size
dabasov Mar 26, 2024
937c205
Merge branch 'sprint-1.14' into fix/transaction-errors
dabasov Mar 26, 2024
6bbbd8c
Merge pull request #3195 from 0chain/fix/transaction-errors
dabasov Mar 26, 2024
4d01f77
Merge branch 'sprint-1.14' into UTs/3186/blobber_and_allocation_stats
dabasov Mar 26, 2024
4282a96
Addressed comments
Jayashsatolia403 Mar 27, 2024
3a5a3a8
Merge branch 'sprint-1.14' into hotfix/challenges
Jayashsatolia403 Mar 27, 2024
4bc11fa
Refactor
Jayashsatolia403 Mar 27, 2024
632ad3e
Merge remote-tracking branch 'origin/hotfix/challenges' into hotfix/c…
Jayashsatolia403 Mar 27, 2024
45702c6
Fix
Jayashsatolia403 Mar 27, 2024
4d6303a
Fix
Jayashsatolia403 Mar 27, 2024
86a09a7
Debug
Jayashsatolia403 Mar 27, 2024
2380cec
add comment for chain hash logic
Hitenjain14 Mar 27, 2024
909ef3c
Debug
Jayashsatolia403 Mar 27, 2024
31e2eae
Fix setPartitionItems
Jayashsatolia403 Mar 27, 2024
aac97cb
Fix
Jayashsatolia403 Mar 27, 2024
cb1987b
Updated gosdk
Jayashsatolia403 Mar 27, 2024
450a265
go mod tidy
Jayashsatolia403 Mar 27, 2024
442313b
Debug
Jayashsatolia403 Mar 27, 2024
41256ef
go work
Jayashsatolia403 Mar 27, 2024
04e9859
Fix
Jayashsatolia403 Mar 27, 2024
b8fbc5d
Init hardfork entity wrapper
peterlimg Mar 27, 2024
3df7efb
Set hardfork artemis
Jayashsatolia403 Mar 27, 2024
788e23e
Fix
Jayashsatolia403 Mar 27, 2024
89a1287
Added hardforks in unit tests
Jayashsatolia403 Mar 27, 2024
ec8f662
Merge pull request #3196 from 0chain/UTs/3186/blobber_and_allocation_…
dabasov Mar 27, 2024
f5506e6
Fix unit tests after hardfork
Jayashsatolia403 Mar 27, 2024
03aeb2e
Merge branch 'sprint-1.14' into hotfix/challenges
Jayashsatolia403 Mar 27, 2024
79b0fca
Fix last partition append
Jayashsatolia403 Mar 28, 2024
5fc074e
Merge remote-tracking branch 'origin/hotfix/challenges' into hotfix/c…
Jayashsatolia403 Mar 28, 2024
3d1a9d0
Fix unit tests
Jayashsatolia403 Mar 28, 2024
42600a4
Fix partition get random
Jayashsatolia403 Mar 28, 2024
7adfa52
Fix partition get random
Jayashsatolia403 Mar 28, 2024
8560a3c
Add wrapper related methods and tests
peterlimg Mar 29, 2024
4f5bfee
Merge branch 'feature/mpt-entity-version' into feature/blobber-auth-mpt
peterlimg Mar 29, 2024
85a0dca
Merge branch 'staging' of https://github.com/0chain/0chain into zero_…
CristalWilsonLobo Mar 29, 2024
8838e47
Add JSON marshaling and unmarshaling methods to WrapperEntity
peterlimg Mar 30, 2024
3bf90e4
Wrap StorageNode struct partitially
peterlimg Mar 30, 2024
48d0535
Minor change
peterlimg Mar 30, 2024
8f7c54d
Fixed unit tests
Jayashsatolia403 Mar 30, 2024
26759f5
Add Base interface to wrapper
peterlimg Mar 31, 2024
bac7fff
Minor adjust
peterlimg Mar 31, 2024
141a106
Add Update method to do lazy migrate and update
peterlimg Mar 31, 2024
a3b7ede
StorageNode wrap fixes - part 1
peterlimg Mar 31, 2024
353a10c
Added hardfork in prepareState
Jayashsatolia403 Mar 31, 2024
6fad47e
add delegates pools in nodeStat api response
storybehind Mar 31, 2024
a6a9684
Merge pull request #3202 from 0chain/hotfix/challenges
dabasov Mar 31, 2024
a9d546a
Fix all remaining struct errors
peterlimg Apr 1, 2024
dcf2672
Minor refactor
peterlimg Apr 1, 2024
594c638
Fix benchmark
peterlimg Apr 1, 2024
d29ba1a
Go work update
peterlimg Apr 1, 2024
b342b8b
Merge branch 'sprint-1.14' into feature/mpt-cache
peterlimg Apr 1, 2024
a5c2f0c
Fix benchmark test
peterlimg Apr 1, 2024
d2bab55
Remove mpt cache debug code
peterlimg Feb 20, 2024
c8b2e0f
Move statecache to common repo
peterlimg Feb 20, 2024
e67f60d
Update MPT cache
peterlimg Feb 20, 2024
24ed2f7
Fix packages
peterlimg Feb 20, 2024
d07a6df
Fix missing params
peterlimg Feb 20, 2024
b4524e9
Fix loop clone
peterlimg Feb 21, 2024
6dbcae5
Fix mpt cache set
peterlimg Feb 21, 2024
979aad5
Clean cache debug log
peterlimg Feb 21, 2024
2320ab6
Update cache logs
peterlimg Feb 21, 2024
e7ecf45
Add cache stats
peterlimg Feb 21, 2024
37cc014
Update MPT cache(lru cache)
peterlimg Feb 23, 2024
9aa9eb2
Remove statecache shift
peterlimg Feb 23, 2024
25b8f3d
Reduce mpt cache size
peterlimg Feb 23, 2024
95338a5
Improve MPT cache
peterlimg Feb 26, 2024
53146e1
Update MPT cache refactor
peterlimg Feb 27, 2024
38b851c
Debug use in memory as stateDB
peterlimg Feb 29, 2024
90b76e5
Fix debug panic
peterlimg Feb 29, 2024
e69b497
Fix mem PruneBelowVersion
peterlimg Mar 2, 2024
104aace
Add mpt cache hit/miss logs
peterlimg Mar 2, 2024
0199961
Check back to rocksdb as stateDB
peterlimg Mar 3, 2024
2ce13e4
Fix mpt cache
peterlimg Mar 4, 2024
c26b44a
Fix partitions cache
peterlimg Mar 4, 2024
fc145f4
Fix state context cache
peterlimg Mar 4, 2024
efdf65b
Debug change back state context cache
peterlimg Mar 4, 2024
cdc7f32
Debug state context cache
peterlimg Mar 4, 2024
e713874
Fix partitions clone
peterlimg Mar 4, 2024
00c2c01
Fix state context cache more
peterlimg Mar 4, 2024
9ee4657
More fix
peterlimg Mar 4, 2024
17880e6
Fix missing set
peterlimg Mar 4, 2024
e80b82e
Fix cache
peterlimg Mar 4, 2024
e98d2ae
Fix state cache
peterlimg Mar 4, 2024
908a9ca
Remove high level cache
peterlimg Mar 5, 2024
1e52bb5
Update MPT cache to avoid duplicate block cachine commit
peterlimg Mar 5, 2024
a10d1a5
Add back high level MPT cache
peterlimg Mar 5, 2024
d3b720c
Fix partitions CopyFrom
peterlimg Mar 5, 2024
47c2d90
Debug - remove duplicate bc commit
peterlimg Mar 6, 2024
f9b4e77
Minor fix for MPT block cache commit
peterlimg Mar 6, 2024
f993d6c
Add more logs
peterlimg Mar 6, 2024
65b19cb
Add more debug logs
peterlimg Mar 6, 2024
f859530
More fix for mpt cache
peterlimg Mar 6, 2024
e798ad6
Fix mpt cache stats
peterlimg Mar 6, 2024
9717b52
Fix mpt cache stats
peterlimg Mar 6, 2024
f4f2eb3
Fix mpt cache stats
peterlimg Mar 6, 2024
b03c2d6
Fix mpt cache stats
peterlimg Mar 6, 2024
1942387
Fix cache
peterlimg Mar 6, 2024
9b1145a
Debug invalid txn nonce
peterlimg Mar 6, 2024
1035ed2
Remove high level cache
peterlimg Mar 6, 2024
9605eb6
Set block hash before commit cache
peterlimg Mar 7, 2024
f60f688
Fix mpt cache - txn cache get bug
peterlimg Mar 7, 2024
bfc1e94
Fix unit tests
peterlimg Mar 7, 2024
1b48221
Add state level cache
peterlimg Mar 7, 2024
e3dba20
Fix unit tests
peterlimg Mar 7, 2024
058f5b1
Fix lints
peterlimg Mar 8, 2024
88840ed
MPT cache code clean up
peterlimg Mar 8, 2024
f9cd90a
Improve MPT cache miss
peterlimg Mar 9, 2024
f1ae8cd
Fix mpt cache lock race condition
peterlimg Mar 9, 2024
8f4cadc
MPT cache slow down moving
peterlimg Mar 9, 2024
dcb74fc
MPT cache remove mig
peterlimg Mar 9, 2024
6c799e3
Do cache mig
peterlimg Mar 9, 2024
12cd69e
Remove unused code
peterlimg Apr 1, 2024
40ce7cc
Merge branch 'sprint-1.14' into feature/mpt-cache
peterlimg Apr 1, 2024
60e2ab6
Merge branch 'sprint-1.14' into feature/get-blobbers-exclude-by-max-d…
storybehind Apr 1, 2024
02a943e
Hotfix part weight
Jayashsatolia403 Apr 2, 2024
64f56b2
Fix unit test
peterlimg Apr 2, 2024
e19b5e3
Merge branch 'staging' into feature/blobber-auth-mpt
peterlimg Apr 3, 2024
21f8ad1
Fix migrate from
peterlimg Apr 3, 2024
d4b1253
Fix unit test errors
peterlimg Apr 3, 2024
0fde43c
Merge branch 'staging' into feature/blobber-auth
Jayashsatolia403 Apr 3, 2024
1eaf650
Merge branch 'refs/heads/sprint-1.14' into feature/blobber-auth
Jayashsatolia403 Apr 3, 2024
357cb45
Merge remote-tracking branch 'origin/feature/blobber-auth' into featu…
Jayashsatolia403 Apr 3, 2024
aa73ec3
Merge branch 'feature/blobber-auth' into feature/blobber-auth-mpt
Jayashsatolia403 Apr 3, 2024
4ad0373
Fix build failures
Jayashsatolia403 Apr 3, 2024
dd61e38
Fix unit tests
Jayashsatolia403 Apr 3, 2024
903d7d4
add the field and fill with data
devyetii Apr 3, 2024
f744167
Merge branch 'sprint-1.14' into zero_state_ct_sprint-1.13
devyetii Apr 3, 2024
7c3d1d5
remove irrelative changes
devyetii Apr 3, 2024
8e53b4c
remove redundent command
devyetii Apr 3, 2024
9bc290e
remove unuseful test cases
devyetii Apr 3, 2024
bc6e53b
cleanup_provider cmd alignment
CristalWilsonLobo Apr 4, 2024
c7490b0
use rename in the migration
devyetii Apr 4, 2024
a8f9ba8
Fix unit tests
Jayashsatolia403 Apr 4, 2024
6b70cfc
Remove zero state authorizer CT
CristalWilsonLobo Apr 4, 2024
d088ed5
Fix replace blobber allocation stats update
Jayashsatolia403 Apr 5, 2024
a6ecc76
Add blobber with activation
peterlimg Apr 5, 2024
735bf04
Add blobber tests
Jayashsatolia403 Apr 5, 2024
378085d
Merge pull request #3220 from 0chain/feature/mpt-cache
dabasov Apr 5, 2024
f0382fe
Merge branch 'sprint-1.14' into zero_state_ct_sprint-1.13
dabasov Apr 5, 2024
cf965ca
Merge pull request #3172 from 0chain/zero_state_ct_sprint-1.13
dabasov Apr 5, 2024
7788b7f
Merge branch 'sprint-1.14' into feature/get-blobbers-exclude-by-max-d…
storybehind Apr 5, 2024
f2b0ef9
Merge branch 'sprint-1.14' into hotfix/part-weight
Jayashsatolia403 Apr 6, 2024
429684c
add wm entity
Hitenjain14 Apr 6, 2024
012de62
Merge branch 'feat/wm-chain' of https://github.com/0chain/0chain into…
Hitenjain14 Apr 6, 2024
fb5c794
add check for chainHash
Hitenjain14 Apr 7, 2024
00dd32d
Fix storage node version issue
peterlimg Apr 7, 2024
6eb7e16
Merge branch 'feature/blobber-auth-mpt' of https://github.com/0chain/…
Hitenjain14 Apr 7, 2024
551c243
add init version for wm
Hitenjain14 Apr 7, 2024
6e7f1f8
Fix unit tests
Jayashsatolia403 Apr 7, 2024
abd6a50
run msgp for version
Hitenjain14 Apr 7, 2024
8a74606
Fix allocation tests
Jayashsatolia403 Apr 7, 2024
3435fe2
Merge branch 'refs/heads/sprint-1.14' into feature/blobber-auth-mpt
Jayashsatolia403 Apr 7, 2024
d9d8515
Fix unit tests and lint
Jayashsatolia403 Apr 7, 2024
22b9fb2
Fix unit tests and lint
Jayashsatolia403 Apr 7, 2024
15d5bd6
Merge pull request #3222 from 0chain/hotfix/part-weight
dabasov Apr 7, 2024
c485f8a
Merge branch 'sprint-1.14' into feature/blobber-auth-mpt
dabasov Apr 7, 2024
5bb8742
Merge pull request #3218 from 0chain/feature/blobber-auth-mpt
dabasov Apr 7, 2024
bc7ba47
Merge branch 'sprint-1.14' into feat/wm-entity
Hitenjain14 Apr 8, 2024
d235fdf
fix register wm
Hitenjain14 Apr 8, 2024
58beba8
Updated go version to 1.21 for unit-test.yml
shahnawaz-creator Apr 8, 2024
0400455
Merge branch 'sprint-1.14' into feat/wm-entity
dabasov Apr 8, 2024
1ae242e
Merge branch 'sprint-1.14' into feature/get-blobbers-exclude-by-max-d…
storybehind Apr 8, 2024
934ef53
cleaned up
dabasov Apr 8, 2024
ff0af9a
Merge remote-tracking branch 'origin/sprint-1.14' into sprint-1.14
dabasov Apr 8, 2024
c09abea
Merge branch 'sprint-1.14' into feature/get-blobbers-exclude-by-max-d…
dabasov Apr 8, 2024
f03e9d1
Merge branch 'sprint-1.14' into feat/wm-entity
Hitenjain14 Apr 8, 2024
ec00fb9
Fix update blobber stake pool settings
Jayashsatolia403 Apr 8, 2024
a050b45
Merge remote-tracking branch 'origin/sprint-1.14' into sprint-1.14
Jayashsatolia403 Apr 8, 2024
7c60c23
Merge pull request #3191 from 0chain/feature/get-blobbers-exclude-by-…
dabasov Apr 8, 2024
e52abf4
Merge branch 'sprint-1.14' into feat/wm-entity
dabasov Apr 8, 2024
53ea465
Merge pull request #3235 from 0chain/fix/update-blobber
dabasov Apr 8, 2024
9ffba1a
Merge branch 'sprint-1.14' into feat/wm-entity
Hitenjain14 Apr 8, 2024
a26faa2
log owner and clientID
Hitenjain14 Apr 9, 2024
060c890
Merge branch 'feat/wm-entity' of https://github.com/0chain/0chain int…
Hitenjain14 Apr 9, 2024
f4b41b9
wrap prev wm size
Hitenjain14 Apr 9, 2024
200996a
Fix
Jayashsatolia403 Apr 9, 2024
6ce1008
Empty commit
Jayashsatolia403 Apr 9, 2024
2d06989
Fix
Jayashsatolia403 Apr 9, 2024
1cbf545
Debug
Jayashsatolia403 Apr 9, 2024
d9983b4
Fix free allocation
Jayashsatolia403 Apr 9, 2024
9c43d19
Debug
Jayashsatolia403 Apr 9, 2024
813916b
Merge pull request #3238 from 0chain/fix/update-blobber-url
dabasov Apr 9, 2024
8d8e747
Impl CommitChangesTo
peterlimg Apr 10, 2024
ef7afa9
Debug commit marker base
peterlimg Apr 10, 2024
6d6b266
Merge branch 'sprint-1.14' into fix/user_aggregates-total-reward
devyetii Apr 10, 2024
d0cc04c
sum only active pools
devyetii Apr 10, 2024
bfc8590
Fix wrapper marshal issue when it's used as a field of a struct
peterlimg Apr 10, 2024
36ae412
Clean up debug logs from peter
peterlimg Apr 10, 2024
c6de186
cleanup
Hitenjain14 Apr 10, 2024
bf335e2
Merge branch 'sprint-1.14' into feat/wm-entity
Hitenjain14 Apr 10, 2024
85a7299
Merge pull request #3230 from 0chain/feat/wm-entity
dabasov Apr 10, 2024
3e70ab4
fix wm event prevSize
Hitenjain14 Apr 11, 2024
f315fac
Merge branch 'sprint-1.14' into fix/user_aggregates-total-reward
devyetii Apr 11, 2024
3e99155
Merge pull request #3240 from 0chain/fix/wm-event
dabasov Apr 11, 2024
696af4f
Merge branch 'sprint-1.14' into fix/user_aggregates-total-reward
devyetii Apr 12, 2024
d13d165
use changeSize as savedData
Hitenjain14 Apr 12, 2024
bd333c9
Merge pull request #3243 from 0chain/fix/blobber-event
dabasov Apr 12, 2024
9267250
Added isRestricted and NotAvailable in blobber aggregates
Jayashsatolia403 Apr 13, 2024
75a7f75
Db migration
Jayashsatolia403 Apr 13, 2024
1a5ceb0
Empty commit
Jayashsatolia403 Apr 13, 2024
787ae36
Fix allocation stats
Jayashsatolia403 Apr 13, 2024
b12da3a
Merge branch 'sprint-1.14' into fix/allocation-stats
Jayashsatolia403 Apr 13, 2024
5d8f91d
Fix
Jayashsatolia403 Apr 13, 2024
69fb3de
Merge remote-tracking branch 'origin/fix/allocation-stats' into fix/a…
Jayashsatolia403 Apr 13, 2024
3b840f8
Merge branch 'staging' into sprint-1.14
dabasov Apr 13, 2024
7753a51
Merge remote-tracking branch 'origin/sprint-1.14' into sprint-1.14
dabasov Apr 13, 2024
d4534a3
Merge branch 'sprint-1.14' into aggregates/is-restricted-blobber
dabasov Apr 13, 2024
f173bd9
Merge branch 'sprint-1.14' into fix/allocation-stats
Jayashsatolia403 Apr 13, 2024
4a41368
Added not available
Jayashsatolia403 Apr 13, 2024
5e007a3
Merge pull request #3244 from 0chain/aggregates/is-restricted-blobber
dabasov Apr 14, 2024
47e59ce
Merge pull request #3224 from 0chain/fix/user_aggregates-total-reward
dabasov Apr 14, 2024
8677302
Merge pull request #3245 from 0chain/fix/allocation-stats
dabasov Apr 14, 2024
53af261
Fix
Jayashsatolia403 Apr 14, 2024
58d239b
Fix
Jayashsatolia403 Apr 14, 2024
24b8aa6
Merge pull request #3246 from 0chain/fix/get-blobber-query
dabasov Apr 14, 2024
33f289d
Fix
Jayashsatolia403 Apr 14, 2024
b5a10fb
Merge branch 'sprint-1.14' into fix/get-blobber-query
Jayashsatolia403 Apr 14, 2024
c44b524
Merge pull request #3248 from 0chain/fix/get-blobber-query
dabasov Apr 14, 2024
28e5b6b
Fix free alloc blobbers
Jayashsatolia403 Apr 19, 2024
7c4ec59
Merge pull request #3254 from 0chain/fix/free-alloc-blobbers
dabasov Apr 19, 2024
e654245
Merge remote-tracking branch 'origin/staging' into sprint-1.14
dabasov Apr 20, 2024
fc37374
Fix partition benchmark tests
Jayashsatolia403 Apr 22, 2024
5e3111e
updated BM config
Zorro30 Apr 22, 2024
1b9e988
updated BM config
Zorro30 Apr 22, 2024
4825bdc
updated config
Zorro30 Apr 23, 2024
bdebf49
Fix
Jayashsatolia403 Apr 25, 2024
4249f75
Update benchmark.yaml
Jayashsatolia403 Apr 25, 2024
428a077
adding dbConfig to gEventDB in test
shohan2001 Apr 26, 2024
e3326c0
editing tablespace
shohan2001 Apr 26, 2024
38d9493
access edit
shohan2001 Apr 26, 2024
a6073b1
Fixed move partition to slow tablespace
Jayashsatolia403 Apr 26, 2024
bdced26
Merge remote-tracking branch 'origin/fix/partition-benchmark' into fi…
Jayashsatolia403 Apr 26, 2024
fd4f49e
Merge branch 'sprint-1.14' into fix/partition-benchmark
Jayashsatolia403 Apr 26, 2024
fc92bc6
Fix
Jayashsatolia403 Apr 26, 2024
d40498c
Fix
Jayashsatolia403 Apr 26, 2024
362aa2a
Merge pull request #3255 from 0chain/fix/partition-benchmark
dabasov Apr 27, 2024
d82bdd3
Fix event processing timeout
Jayashsatolia403 Apr 28, 2024
749b631
Merge pull request #3263 from 0chain/fix/event-process-timeout
dabasov Apr 28, 2024
a2a01a6
Fix transaction errors
Jayashsatolia403 May 1, 2024
da57d34
Fix reset allocation stats
Jayashsatolia403 May 1, 2024
b28060d
Revert "Fix reset allocation stats"
Jayashsatolia403 May 1, 2024
ac6bee3
Fix reset allocation stats
Jayashsatolia403 May 1, 2024
4302d30
rmv negative size check
Hitenjain14 May 1, 2024
3ccde2c
Fix unit tests
Jayashsatolia403 May 1, 2024
5cfb336
Merge pull request #3267 from 0chain/fix/chain-check
dabasov May 1, 2024
74a2fd0
Merge pull request #3266 from 0chain/fix/txn-errors
dabasov May 1, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/unit-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:

- uses: actions/setup-go@v2
with:
go-version: '1.20'
go-version: '1.21'

- name: Check msgp changes
run: |
Expand Down Expand Up @@ -42,7 +42,7 @@ jobs:
- uses: actions/checkout@v2
- uses: actions/setup-go@v2
with:
go-version: '1.20'
go-version: '1.21'

- name: Check msgp changes
run: |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import (
"0chain.net/core/datastore"
"0chain.net/core/memorystore"
"0chain.net/core/mocks"
"github.com/0chain/common/core/statecache"
"github.com/0chain/common/core/util"
"github.com/stretchr/testify/require"
"github.com/vmihailenco/msgpack/v5"
Expand Down Expand Up @@ -47,7 +48,7 @@ func TestStateChangeComputeRoot(t *testing.T) {
{"1235", "1235A"},
}

clientState := util.NewMerklePatriciaTrie(util.NewMemoryNodeDB(), 1, nil)
clientState := util.NewMerklePatriciaTrie(util.NewMemoryNodeDB(), 1, nil, statecache.NewEmpty())
for _, pv := range initPathValues {
_, err := clientState.Insert(util.Path(pv[0]), &util.SecureSerializableValue{Buffer: []byte(pv[1])})
require.NoError(t, err)
Expand All @@ -57,7 +58,7 @@ func TestStateChangeComputeRoot(t *testing.T) {
require.Equal(t, bsc.GetRoot().GetHash(), util.ToHex(clientState.GetRoot()))

// apply new updates
newClientState := util.NewMerklePatriciaTrie(clientState.GetNodeDB(), 2, clientState.GetRoot())
newClientState := util.NewMerklePatriciaTrie(clientState.GetNodeDB(), 2, clientState.GetRoot(), statecache.NewEmpty())
for _, pv := range newPathValues {
_, err := newClientState.Insert(util.Path(pv[0]), &util.SecureSerializableValue{Buffer: []byte(pv[1])})
require.NoError(t, err)
Expand All @@ -71,7 +72,7 @@ func TestStateChangeComputeRoot(t *testing.T) {
func TestNewBlockStateChange(t *testing.T) {
b := NewBlock("", 1)
b.HashBlock()
b.ClientState = util.NewMerklePatriciaTrie(util.NewMemoryNodeDB(), 1, nil)
b.ClientState = util.NewMerklePatriciaTrie(util.NewMemoryNodeDB(), 1, nil, statecache.NewEmpty())
_, err := b.ClientState.Insert(util.Path("path"), &util.SecureSerializableValue{Buffer: []byte("value")})
if err != nil {
t.Fatal(err)
Expand Down Expand Up @@ -235,7 +236,7 @@ func TestStateChange_Delete(t *testing.T) {

func TestStateChange_MarshalJSON(t *testing.T) {
b := NewBlock("", 1)
b.ClientState = util.NewMerklePatriciaTrie(util.NewMemoryNodeDB(), 1, nil)
b.ClientState = util.NewMerklePatriciaTrie(util.NewMemoryNodeDB(), 1, nil, statecache.NewEmpty())
_, err := b.ClientState.Insert(util.Path("path"), &util.SecureSerializableValue{Buffer: []byte("value")})
if err != nil {
t.Fatal(err)
Expand Down Expand Up @@ -290,7 +291,7 @@ func TestStateChange_MarshalJSON(t *testing.T) {

func TestStateChange_UnmarshalJSON(t *testing.T) {
b := NewBlock("", 1)
b.ClientState = util.NewMerklePatriciaTrie(util.NewMemoryNodeDB(), 1, nil)
b.ClientState = util.NewMerklePatriciaTrie(util.NewMemoryNodeDB(), 1, nil, statecache.NewEmpty())
_, err := b.ClientState.Insert(util.Path("path"), &util.SecureSerializableValue{Buffer: []byte("value")})
if err != nil {
t.Fatal(err)
Expand Down Expand Up @@ -382,7 +383,7 @@ func TestStateChange_UnmarshalJSON(t *testing.T) {

func TestStateChange_UnmarshalMsgpack(t *testing.T) {
b := NewBlock("", 1)
b.ClientState = util.NewMerklePatriciaTrie(util.NewMemoryNodeDB(), 1, nil)
b.ClientState = util.NewMerklePatriciaTrie(util.NewMemoryNodeDB(), 1, nil, statecache.NewEmpty())
_, err := b.ClientState.Insert(util.Path("path"), &util.SecureSerializableValue{Buffer: []byte("value")})
if err != nil {
t.Fatal(err)
Expand Down
48 changes: 21 additions & 27 deletions code/go/0chain.net/chaincore/block/entity.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import (
"0chain.net/core/encryption"
"0chain.net/smartcontract/dbs/event"
"github.com/0chain/common/core/logging"
"github.com/0chain/common/core/statecache"
"github.com/0chain/common/core/util"
)

Expand Down Expand Up @@ -343,29 +344,6 @@ func (b *Block) SetPreviousBlock(prevBlock *Block) {
}
}

/*SetStateDB - set the state from the previous block */
func (b *Block) SetStateDB(prevBlock *Block, stateDB util.NodeDB) {
var pndb util.NodeDB
var rootHash util.Key
if prevBlock.ClientState == nil {
logging.Logger.Error("set state db - prior state not available",
zap.Int64("round", b.Round),
zap.String("block", b.Hash),
zap.Int64("previous round", prevBlock.Round),
zap.String("previous block", prevBlock.Hash))
pndb = stateDB
} else {
pndb = prevBlock.ClientState.GetNodeDB()
}
rootHash = prevBlock.ClientStateHash
logging.Logger.Warn("set state db",
zap.Int64("round", b.Round),
zap.String("block", b.Hash),
zap.String("prev_block", prevBlock.Hash),
zap.String("root", util.ToHex(rootHash)))
b.CreateState(pndb, rootHash)
}

// InitStateDB - initialize the block's state from the db
// (assuming it's already computed).
func (b *Block) InitStateDB(ndb util.NodeDB) error {
Expand All @@ -383,7 +361,7 @@ func (b *Block) InitStateDB(ndb util.NodeDB) error {
func (b *Block) CreateState(pndb util.NodeDB, root util.Key) {
mndb := util.NewMemoryNodeDB()
ndb := util.NewLevelNodeDB(mndb, pndb, false)
b.ClientState = util.NewMerklePatriciaTrie(ndb, util.Sequence(b.Round), root)
b.ClientState = util.NewMerklePatriciaTrie(ndb, util.Sequence(b.Round), root, statecache.NewEmpty())
}

// setClientState sets the block client state
Expand Down Expand Up @@ -811,8 +789,13 @@ type Chainer interface {
GetBlockStateChange(b *Block) error
ComputeState(ctx context.Context, pb *Block, waitC ...chan struct{}) error
GetStateDB() util.NodeDB
UpdateState(ctx context.Context, b *Block, bState util.MerklePatriciaTrieI, txn *transaction.Transaction, waitC ...chan struct{}) ([]event.Event, error)
UpdateState(ctx context.Context,
b *Block, bState util.MerklePatriciaTrieI,
txn *transaction.Transaction,
blockStateCache *statecache.BlockCache,
waitC ...chan struct{}) ([]event.Event, error)
GetEventDb() *event.EventDb
GetStateCache() *statecache.StateCache
}

// CreateStateWithPreviousBlock creates block client state with previous block
Expand Down Expand Up @@ -844,7 +827,7 @@ func CreateStateWithPreviousBlock(prevBlock *Block, stateDB util.NodeDB, round i
func CreateState(stateDB util.NodeDB, round int64, root util.Key) util.MerklePatriciaTrieI {
mndb := util.NewMemoryNodeDB()
ndb := util.NewLevelNodeDB(mndb, stateDB, false)
return util.NewMerklePatriciaTrie(ndb, util.Sequence(round), root)
return util.NewMerklePatriciaTrie(ndb, util.Sequence(round), root, statecache.NewEmpty())
}

// ComputeState computes block client state
Expand Down Expand Up @@ -923,9 +906,15 @@ func (b *Block) ComputeState(ctx context.Context, c Chainer, waitC ...chan struc
//b.SetStateDB(pb, c.GetStateDB())

bState := CreateStateWithPreviousBlock(pb, c.GetStateDB(), b.Round)
blockStateCache := statecache.NewBlockCache(c.GetStateCache(), statecache.Block{
Round: b.Round,
Hash: b.Hash,
PrevHash: b.PrevHash,
})

beginStateRoot := bState.GetRoot()
b.Events = []event.Event{}
ts := time.Now()
for _, txn := range b.Txns {
if datastore.IsEmpty(txn.ClientID) {
if err := txn.ComputeClientID(); err != nil {
Expand All @@ -952,7 +941,7 @@ func (b *Block) ComputeState(ctx context.Context, c Chainer, waitC ...chan struc
},
})

events, err := c.UpdateState(ctx, b, bState, txn, waitC...)
events, err := c.UpdateState(ctx, b, bState, txn, blockStateCache, waitC...)
switch err {
case context.Canceled:
b.SetStateStatus(StateCancelled)
Expand Down Expand Up @@ -1030,17 +1019,22 @@ func (b *Block) ComputeState(ctx context.Context, c Chainer, waitC ...chan struc
StateSanityCheck(ctx, b)
b.SetStateStatus(StateSuccessful)

// commit the block state cache to the global state cache
blockStateCache.Commit()

logging.Logger.Info("compute state successful",
zap.Int64("round", b.Round),
zap.String("block", b.Hash),
zap.String("block ptr", fmt.Sprintf("%p", b)),
zap.Int("block_size", len(b.Txns)),
zap.Any("duration", time.Since(ts)),
zap.Int("changes", b.ClientState.GetChangeCount()),
zap.String("begin_client_state", util.ToHex(beginStateRoot)),
zap.String("computed_state_hash", util.ToHex(b.ClientState.GetRoot())),
zap.String("block_state_hash", util.ToHex(b.ClientStateHash)),
zap.String("prev_block", b.PrevHash),
zap.String("prev_block_client_state", util.ToHex(pb.ClientStateHash)))

return nil
}

Expand Down