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

QA for v1.11.0 #1892

Closed
4 of 20 tasks
JayChoi1736 opened this issue Jul 24, 2023 · 12 comments
Closed
4 of 20 tasks

QA for v1.11.0 #1892

JayChoi1736 opened this issue Jul 24, 2023 · 12 comments
Assignees
Labels
Github QA QA tests for version release
Milestone

Comments

@JayChoi1736
Copy link
Contributor

JayChoi1736 commented Jul 24, 2023

QA tasks (~2023/08/14)

  • Regular tests @JayChoi1736
  • Hardfork related test
  • Live state pruning @blukat29 QA for v1.11.0 #1892 (comment)
    • call trace APIs during sync
    • pruning enabled + state migration must be forbidden @2dvorak
    • pruning enabled + snapsync can work together @2dvorak
    • version upgrade when not pruning
    • ? (consistency)
  • Yaml configuration @ian0371
    • check the convention and name of aliases
  • RocksDB @jeongkyun-oh @ethan-kr
    • performance test (1 writer / n readers)
      • read/write on different file system
        • gfs2 - rocksdb
        • fsx - rocksdb
        • ebs - rocksdb
        • ebs - ldb
    • load test
      • memory consumption
        • find why increasing memory consumption
    • statedb migration test
  • Test Pre-built binaries in different environments @yoomee1313
  • VRank metric testing @hyeonLewis

Changes

Hardfork features

Improvements

Fixes

Miscellaneous

@exalate-issue-sync
Copy link

Exalate commented: Issue Created by: JayChoi1736

@aidan-kwon aidan-kwon self-assigned this Jul 24, 2023
@JayChoi1736 JayChoi1736 added the QA QA tests for version release label Jul 26, 2023
@hyeonLewis
Copy link
Contributor

hyeonLewis commented Aug 1, 2023

VRank metric testing

Testing process

  • Patch logic
    • Patch logs to log early commits and decimals
  • Compare logs and metrics
    • klaytn_vrank_first_commit : Compare to fastest commit in early commit
    • klaytn_vrank_avg_commit_within_quorum : Compare to average values of commits in early commit
    • klaytn_vrank_quorum_commit : Compare to last commit in early commit
    • klaytn_vrank_last_commit : Compare to last commit in late commit
  • Environment
    • With seven CNs
  • Test code

Result

  • klaytn_vrank_first_commit
  • klaytn_vrank_avg_commit_within_quorum
  • klaytn_vrank_quorum_commit
  • klaytn_vrank_last_commit
Details
blocknum=310
- log:bitmap=0140 early="[2.707791ms 2.499458ms 2.879166ms 2.023833ms 3.10175ms]" late="[3.786916ms 10.709666ms]"
- metric:
  - klaytn_vrank_first_commit: 2.023833e+06
  - klaytn_vrank_avg_commit_within_quorum: 2.642399e+06
  - klaytn_vrank_quorum_commit: 3.10175e+06
  - klaytn_vrank_last_commit: 1.0709666e+07

blocknum=313
- log:bitmap=0104 early="[3.008875ms 6.35ms 3.616833ms 3.141583ms 4.728458ms]" late="[12.621167ms 15.377125ms]"
- metric:
  - klaytn_vrank_first_commit: 3.008875e+06
  - klaytn_vrank_avg_commit_within_quorum: 4.169149e+06
  - klaytn_vrank_quorum_commit: 6.35e+06
  - klaytn_vrank_last_commit: 1.5377125e+07

blocknum=316
- log:bitmap=4040 early="[30.214584ms 21.288542ms 29.960667ms 29.731834ms 26.392917ms]" late="[30.783292ms 30.938ms]"
- metric:
  - klaytn_vrank_first_commit: 2.1288542e+07
  - klaytn_vrank_avg_commit_within_quorum: 2.7517708e+07
  - klaytn_vrank_quorum_commit: 3.0214584e+07
  - klaytn_vrank_last_commit: 3.0938e+07

blocknum=319
- log:bitmap=1004 early="[13.549292ms 15.931792ms 17.172125ms 14.023625ms 16.92125ms]" late="[22.988083ms 22.297875ms]"
- metric:
  - klaytn_vrank_first_commit: 1.3549292e+07
  - klaytn_vrank_avg_commit_within_quorum: 1.5519616e+07
  - klaytn_vrank_quorum_commit: 1.7172125e+07
  - klaytn_vrank_last_commit: 2.2988083e+07

blocknum=322
- log:bitmap=0014 early="[11.154708ms 11.576083ms 12.282792ms 12.898125ms 13.149083ms]" late="[19.457583ms 14.918583ms]"
- metric:
  - klaytn_vrank_first_commit: 1.1154708e+07
  - klaytn_vrank_avg_commit_within_quorum: 1.2212158e+07
  - klaytn_vrank_quorum_commit: 1.3149083e+07
  - klaytn_vrank_last_commit: 1.9457583e+07

blocknum=325
- log:bitmap=0440 early="[9.881167ms 11.223459ms 11.76075ms 10.719167ms 12.040834ms]" late="[23.421125ms 20.849209ms]"
- metric:
  - klaytn_vrank_first_commit: 9.881167e+06
  - klaytn_vrank_avg_commit_within_quorum: 1.1125075e+07
  - klaytn_vrank_quorum_commit: 1.2040834e+07
  - klaytn_vrank_last_commit: 2.3421125e+07

blocknum=328
- log:bitmap=0050 early="[5.76875ms 6.80525ms 8.903666ms 7.243208ms 8.637916ms]" late="[18.155958ms 10.582541ms]"
- metric:
  - klaytn_vrank_first_commit: 5.76875e+06
  - klaytn_vrank_avg_commit_within_quorum: 7.471758e+06
  - klaytn_vrank_quorum_commit: 8.903666e+06
  - klaytn_vrank_last_commit: 1.8155958e+07

blocknum=331
- log:bitmap=0044 early="[3.532458ms 4.326166ms 5.224458ms 12.187083ms 12.8025ms]" late="[13.238916ms 13.459125ms]"
- metric:
  - klaytn_vrank_first_commit: 3.532458e+06
  - klaytn_vrank_avg_commit_within_quorum: 7.614533e+06
  - klaytn_vrank_quorum_commit: 1.28025e+07
  - klaytn_vrank_last_commit: 1.3459125e+07

blocknum=334
- log:bitmap=0410 early="[8.126458ms 7.971958ms 9.5165ms 9.159541ms 7.561583ms]" late="[10.75275ms 10.546541ms]"
- metric:
  - klaytn_vrank_first_commit: 7.561583e+06
  - klaytn_vrank_avg_commit_within_quorum: 8.467208e+06
  - klaytn_vrank_quorum_commit: 9.5165e+06
  - klaytn_vrank_last_commit: 1.075275e+07

blocknum=337
- log:bitmap=0440 early="[25.958375ms 31.353666ms 33.602125ms 26.285708ms 28.531708ms]" late="[38.417375ms 41.604583ms]"
- metric:
  - klaytn_vrank_first_commit: 2.5958375e+07
  - klaytn_vrank_avg_commit_within_quorum: 2.9146316e+07
  - klaytn_vrank_quorum_commit: 3.3602125e+07
  - klaytn_vrank_last_commit: 4.1604583e+07

Note - The unit for metrics is a nanosecond, which means 1e6 is a millisecond

@jiseongnoh
Copy link
Contributor

@hyeonLewis Can you make tests with seven nodes?

klaytn_vrank_first_commit and klaytn_vrank_quorum_commit are correct if they’re larger than logs up to 3ms.

I am wondering when logs can be shown in less than 3 milliseconds.

@hyeonLewis
Copy link
Contributor

@jiseongnoh

@hyeonLewis Can you make tests with seven nodes?

Sure, I'll test it with seven nodes and update the results.

klaytn_vrank_first_commit and klaytn_vrank_quorum_commit are correct if they’re larger than logs up to 3ms.

It means that there're differences between metrics and logs since they have different update timing, and its difference can be maximally 3ms (mostly less than 0.1 ms)

@jiseongnoh
Copy link
Contributor

@hyeonLewis Thank you for the quick reply. I am curious how many times klaytn_vrank_first_commit and klaytn_vrank_quorum_commit are logged within 3 milliseconds. I am concerned this may make it hard to debug if there are any problems with the code.

@blukat29
Copy link
Contributor

blukat29 commented Aug 2, 2023

Live state pruning test

call trace APIs during sync - OK

  • Goal: Check that trace APIs do not prune trie
  • Method
    • During live pruning, call eth_estimateGas and debug_traceBlock for the blocks within retention.
    • Restart the node to clear memory cache.
    • Query states at blocks within retention and they must succeed.
  • Result: pass; states were not deleted by trace APIs.
Details
  • Setup
     homi setup --cn-num 1 --baobab-test --mnemonic test,junk --docker-image-id klaytn:test
     # Add "--state.live-pruning --state.live-pruning-retention 64 --state.block-interval 16 --ntp.disable" to ADDITIONAL flags
     docker-compose up -d
     docker-compose exec CN-0 bash
  • Call trace APIs
     // Wait at least 100 blocks
     root@CN-0:/# kcn attach klaytn/klay.ipc
     > var retention = 64;
     var addr = "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266";
     function randnum() { return klay.blockNumber - Math.floor(Math.random()*retention) }
     function trace() { var n = randnum(); console.log("t", n); debug.traceBlockByNumber(n) };
     function estimate() { var n = randnum(); console.log("e", n); eth.estimateGas({ from: addr, to: addr, value: 1e12 }, n) }
     for (var i=0; i<100; i++) { trace(); estimate(); }
     
     t 202
     e 218
     t 212
     e 235
     t 186
     e 236
     t 214
  • Restart the node
     root@CN-0:/# kcnd restart
  • Check that states are intact
     root@CN-0:/# kcn attach klaytn/klay.ipc
     > var retention = 64;
     var addr = "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266";
     for (var i=0; i<retention; i++) { var n = klay.blockNumber - i; if (n%16 == 0) console.log(n, klay.getBalance(addr, n)) }
     
     240 1.00000000000000000000000000002304e+50
     224 1.000000000000000000000000000021504e+50
     208 1.000000000000000000000000000019968e+50
     192 1.000000000000000000000000000018432e+50

pruning enabled + state migration is forbidden - OK

  • Goal: Check that state migration is forbidden when live pruning is enabled
  • Method
    • In a node with live pruning enabled, call admin_startStateMigration.
    • Call admin_stateMigrationStatus to check state migration status.
  • Result: pass; state migration could not be started.
  • Note: The fix for this testcase was merged in 644a153, so used that version for testing
Details
  • Setup
     homi setup --cn-num 1 --docker-image-id klaytn:test
     cp homi-output/docker-compose.yml .
     # Add "--state.live-pruning --state.live-pruning-retention 64 --state.block-interval 16 --ntp.disable" to ADDITIONAL flags
     docker-compose up -d CN-0
     docker-compose exec CN-0 bash
     root@CN-0:/# ken attach /klaytn/klay.ipc
     > personal.sendTransaction({from: personal.listAccounts[0], to: "0x000000000000000000000000000000000000dead", value: 1})
     "0x5894e45e354dbfbf91f917f43f155eb43b693c6caf08e51fee172d387cf9da59"
  • Call admin.startStateMigration and admin.stateMigrationStatus
     > admin.startStateMigration()
     Error: state migration not supported with live pruning enabled
         at web3.js:3278:20
         at web3.js:6810:15
         at web3.js:5221:36
         at <anonymous>:1:1
     
     > admin.stateMigrationStatus
     {
       committed: 0,
       err: "null",
       isMigration: false,
       migrationBlockNumber: 0,
       pending: 0,
       progress: 0,
       read: 0
     }

pruning enabled + snapsync can work together - OK

  • Goal: Check that snapshot sync works fine when live pruning is enabled
  • Method
    • Setup node with both live pruning and snapshot sync enabled.
      • a) PN (snapshot) -> EN (snapshot sync, pruning)
      • b) PN (snapshot, pruning) -> EN (snapshot sync)
      • c) PN (snapshot, pruning) -> EN (snapshot sync, pruning)
    • See if there are any errors
  • Result:
    • snapshot donor CANNOT be pruning node.
    • snapshot receiver CAN be pruning node. Could not find any issues when both are enabled.
      • a) pass. EN first SnapSync then start FullSync with pruning
      • b) unstable. EN fails at the heal stage; But in real environment, EN should find a good peer who can help with heal stage.
      • c) unstable. same reason as b)
    • We may allow snapshot sync and live pruning to coexist
Details
  • Setup

     homi setup --cn-num 1 --pn-num 1 --en-num 1 --docker-image-id klaytn:test
     cp homi-output/docker-compose.yml .
     # Add "--snapshot" to ADDITIONAL flags of PN
     # Add "--syncmode snap" to ADDITIONAL flags of EN
     # Add "--state.live-pruning --state.live-pruning-retention 64 --state.block-interval 16 --ntp.disable" to ADDITIONAL flags of PN or EN
     # First start CN, PN
     docker-compose up -d CN-0 PN-0
     # Wait until some (about 100?) blocks are mined, don't forget to make some txs too
     docker-compose exec CN-0 bash
     root@CN-0:/# ken attach /klaytn/klay.ipc
     > personal.sendTransaction({from: personal.listAccounts[0], to: "0x000000000000000000000000000000000000dead", value: 1})
     "0x5894e45e354dbfbf91f917f43f155eb43b693c6caf08e51fee172d387cf9da59"
     # Now start EN
     docker-compose up -d EN-0
  • See if blocks are correctly synced, by checking block height or logs

     # Check block sync status
     docker-compose logs -f EN-0
  • Results

    • a) PN (snapshot) -> EN (snapshot sync, pruning)
      Block sync works fine.

      INFO[08/03,01:17:21 Z] [28|datasync/downloader/downloader.go:400]     Block synchronisation started            
      WARN[08/03,01:17:21 Z] [28|datasync/downloader/downloader.go:416]     State snapshot is disabled               
      WARN[08/03,01:17:21 Z] [28|datasync/downloader/downloader.go:418]     Enabling snapshot sync prototype         
      INFO[08/03,01:17:21 Z] [51|work/work.go:128]                          Mining aborted due to sync               
      INFO[08/03,01:17:21 Z] [47|node/cn/snap/sync.go:2836]                 State sync in progress                    synced=96.93% state=158.00B accounts=1@158.00B slots=0@0.00B codes=0@0.00B eta=148.725µs
      INFO[08/03,01:17:21 Z] [47|node/cn/snap/sync.go:2836]                 State sync in progress                    synced=100.00% state=158.00B accounts=1@158.00B slots=0@0.00B codes=0@0.00B eta=-59ns
      INFO[08/03,01:17:21 Z] [47|node/cn/snap/sync.go:2855]                 State heal in progress                    accounts=0@0.00B   slots=0@0.00B codes=0@0.00B nodes=0@0.00B pending=0
      INFO[08/03,01:17:21 Z] [5|blockchain/headerchain.go:275]             Imported new block headers                count=121 elapsed=62.469ms    number=121 hash=c6a174…ff4174 ignored=0
      INFO[08/03,01:17:21 Z] [28|datasync/downloader/queue.go:444]          Downloader queue stats                    receiptTasks=3 blockTasks=19 stakingInfoTasks=0 itemSize=727.98B throttle=8192
      INFO[08/03,01:17:21 Z] [5|blockchain/blockchain.go:1268]             Imported new block receipts               count=55  elapsed=355.356µs   number=55  hash=d07f42…49a7cd size=165.00B ignored=0
      INFO[08/03,01:17:21 Z] [5|blockchain/blockchain.go:1268]             Imported new block receipts               count=1   elapsed=20.263µs    number=56  hash=f33554…98e5d3 size=3.00B   ignored=0
      INFO[08/03,01:17:21 Z] [46|snapshot/snapshot.go:746]                  Rebuilding state snapshot                
      INFO[08/03,01:17:21 Z] [5|blockchain/blockchain.go:660]              Committed new head block                  number=56  hash=f33554…98e5d3
      INFO[08/03,01:17:21 Z] [46|snapshot/generate.go:135]                  Resuming state snapshot generation        root=349165…7321bc accounts=0         slots=0       storage=0.00B  elapsed=232.782µs
      INFO[08/03,01:17:21 Z] [46|snapshot/generate.go:761]                  Generated state snapshot                  accounts=1         slots=0       storage=61.00B elapsed=357.853µs
      INFO[08/03,01:17:21 Z] [5|blockchain/blockchain.go:2045]             Inserted a new block                      number=57  hash=16c078…57f9d7 txs=0 gas=0 elapsed=1.501ms     processTxs=102ns finalize=170.296µs validateState=45.092µs totalWrite=757.104µs trieWrite=646.876µs
      
      ...
      
      INFO[08/03,01:17:21 Z] [5|blockchain/blockchain.go:1447]             Pruned trie nodes                         number=80  start=1 limit=16   count=0   elapsed=15.16µs
      
      ...
      
      INFO[08/03,01:17:24 Z] [5|blockchain/blockchain.go:2328]             Imported new chain segment                number=123 hash=127983…158ee4 blocks=2  txs=0 elapsed=2.879ms     trieDBSize=1.12kB mgas=0.000 mgasps=0.000 age=1s25ms
      INFO[08/03,01:17:24 Z] [41|node/cn/sync.go:221]                       Snap sync complete, auto disabling
      

      kend.out.a.txt

    • b) PN (snapshot, pruning) -> EN (snapshot sync)
      Snapshot sync occasionally fails in heal stage. This is expected - the PN with live pruning enabled cannot find node for requested hash because there is no mapping for Hash to ExtHash (in live pruning enabled nodes).

      INFO[08/03,01:22:28 Z] [47|node/cn/snap/sync.go:2836]                 State sync in progress                    synced=100.00% state=568.00B accounts=3@568.00B slots=0@0.00B codes=0@0.00B eta=-363ns
      WARN[08/03,01:22:28 Z] [47|node/cn/snap/sync.go:2650]                 Unexpected healing trienodes              peer=67eefcd4cfb88632 reqid=3974267275626589393 count=1
      ERROR[08/03,01:22:28 Z] [33|networks/p2p/peer.go:560]                  Protocol snap/1 failed                    id=67eefcd4cfb88632 conn=staticdial err="unexpected healing trienode"
      WARN[08/03,01:22:28 Z] [33|node/cn/peer.go:1058]                      ProtocolManager failed to read msg        id=67eefcd4cfb88632 conn=staticdial err=EOF
      WARN[08/03,01:22:28 Z] [33|node/cn/peer.go:1058]                      ProtocolManager failed to read msg        id=67eefcd4cfb88632 conn=staticdial err=EOF
      INFO[08/03,01:22:28 Z] [33|node/cn/peer.go:1219]                      Disconnected a multichannel P2P Peer      id=67eefcd4cfb88632 conn=staticdial peerID=67eefcd4cfb88632 peerName="Klaytn/\"PN-0\"/v1.11.0/linux-amd64/go1.18" err=EOF
      INFO[08/03,01:22:28 Z] [5|blockchain/headerchain.go:275]             Imported new block headers                count=101 elapsed=57.764ms    number=101 hash=6a72f0…cd3b5c ignored=0
      INFO[08/03,01:22:28 Z] [28|datasync/downloader/queue.go:444]          Downloader queue stats                    receiptTasks=3 blockTasks=101 stakingInfoTasks=0 itemSize=0.00B throttle=8192
      INFO[08/03,01:22:28 Z] [47|node/cn/snap/sync.go:2855]                 State heal in progress                    accounts=0@0.00B   slots=0@0.00B codes=0@0.00B nodes=0@0.00B pending=1
      INFO[08/03,01:22:28 Z] [28|datasync/downloader/downloader.go:1510]    Rolled back headers                       count=101 header=101->0 fast=0->0 block=0->0 reason="syncing canceled (requested)"
      WARN[08/03,01:22:28 Z] [28|datasync/downloader/downloader.go:378]     Synchronisation failed, retrying          err="no peers to keep download active"
      INFO[08/03,01:22:56 Z] [33|networks/p2p/dial.go:365]                  [Dial] Add dial candidate from static nodes  id=67eefcd4cfb88632 NodeType=2 ip=172.16.239.11 mainPort=32323 port="[32323 32324]"
      INFO[08/03,01:22:56 Z] [33|node/cn/peer.go:1158]                      Added a multichannel P2P Peer             id=67eefcd4cfb88632 conn=staticdial peerID=67eefcd4cfb88632
      WARN[08/03,01:22:58 Z] [47|node/cn/snap/sync.go:2650]                 Unexpected healing trienodes              peer=67eefcd4cfb88632 reqid=2105070861789329021 count=1
      INFO[08/03,01:22:58 Z] [47|node/cn/snap/sync.go:2855]                 State heal in progress                    accounts=0@0.00B   slots=0@0.00B codes=0@0.00B nodes=0@0.00B pending=1
      ERROR[08/03,01:22:58 Z] [33|networks/p2p/peer.go:560]                  Protocol snap/1 failed                    id=67eefcd4cfb88632 conn=staticdial err="unexpected healing trienode"
      

      However, it is OK that non-pruning node cannot retrieve node data from pruning node because it can instead request to a non-pruning peer. When added a non-pruning PN, the EN was able to finish snapshot sync with the new PN.

      INFO[08/03,01:24:28 Z] [47|node/cn/snap/sync.go:2855]                 State heal in progress                    accounts=0@0.00B   slots=0@0.00B codes=0@0.00B nodes=0@0.00B pending=1
      ERROR[08/03,01:24:28 Z] [33|networks/p2p/peer.go:560]                  Protocol snap/1 failed                    id=67eefcd4cfb88632 conn=staticdial err="unexpected healing trienode"
      WARN[08/03,01:24:28 Z] [33|node/cn/peer.go:1058]                      ProtocolManager failed to read msg        id=67eefcd4cfb88632 conn=staticdial err=EOF
      WARN[08/03,01:24:28 Z] [33|node/cn/peer.go:1058]                      ProtocolManager failed to read msg        id=67eefcd4cfb88632 conn=staticdial err=EOF
      INFO[08/03,01:24:28 Z] [33|node/cn/peer.go:1219]                      Disconnected a multichannel P2P Peer      id=67eefcd4cfb88632 conn=staticdial peerID=67eefcd4cfb88632 peerName="Klaytn/\"PN-0\"/v1.11.0/linux-amd64/go1.18" err=EOF
      INFO[08/03,01:24:28 Z] [47|node/cn/snap/sync.go:2855]                 State heal in progress                    accounts=0@0.00B   slots=0@0.00B codes=0@0.00B nodes=0@0.00B pending=1
      WARN[08/03,01:24:28 Z] [28|datasync/downloader/downloader.go:378]     Synchronisation failed, retrying          err="no peers to keep download active"
      INFO[08/03,01:24:38 Z] [33|networks/p2p/dial.go:365]                  [Dial] Add dial candidate from static nodes  id=ced8baa50c5f4d3c NodeType=2 ip=172.16.239.12 mainPort=32323 port=[32323]
      INFO[08/03,01:24:38 Z] [33|node/cn/peer.go:1158]                      Added a multichannel P2P Peer             id=ced8baa50c5f4d3c conn=staticdial peerID=ced8baa50c5f4d3c
      INFO[08/03,01:24:40 Z] [47|node/cn/snap/sync.go:2855]                 State heal in progress                    accounts=0@0.00B   slots=0@0.00B codes=0@0.00B nodes=0@0.00B pending=1
      INFO[08/03,01:24:40 Z] [47|node/cn/snap/sync.go:2855]                 State heal in progress                    accounts=1@40.00B  slots=0@0.00B codes=0@0.00B nodes=2@125.00B pending=0
      INFO[08/03,01:24:40 Z] [5|blockchain/headerchain.go:275]             Imported new block headers                count=91  elapsed=47.585ms    number=192 hash=8369ef…719a05 ignored=101
      INFO[08/03,01:24:40 Z] [28|datasync/downloader/queue.go:444]          Downloader queue stats                    receiptTasks=3 blockTasks=173 stakingInfoTasks=0 itemSize=606.59B throttle=8192
      INFO[08/03,01:24:40 Z] [5|blockchain/blockchain.go:1268]             Imported new block receipts               count=17  elapsed=125.299µs   number=17  hash=907ce2…c3721a size=51.00B ignored=0
      INFO[08/03,01:24:40 Z] [5|blockchain/blockchain.go:1268]             Imported new block receipts               count=2   elapsed=144.008µs   number=19  hash=b88acc…21ea93 size=938.00B ignored=0
      INFO[08/03,01:24:40 Z] [5|blockchain/blockchain.go:1268]             Imported new block receipts               count=3   elapsed=41.003µs    number=22  hash=28b650…b77f6d size=9.00B   ignored=0
      INFO[08/03,01:24:40 Z] [5|blockchain/headerchain.go:275]             Imported new block headers                count=41  elapsed=33.176ms    number=233 hash=304899…c74a3b ignored=0
      INFO[08/03,01:24:40 Z] [5|blockchain/blockchain.go:1268]             Imported new block receipts               count=145 elapsed=376.247µs   number=167 hash=311a64…8acc58 size=901.00B ignored=0
      INFO[08/03,01:24:40 Z] [5|blockchain/blockchain.go:1268]             Imported new block receipts               count=1   elapsed=19.804µs    number=168 hash=c67c75…d1a04b size=3.00B   ignored=0
      INFO[08/03,01:24:40 Z] [46|snapshot/snapshot.go:746]                  Rebuilding state snapshot                
      INFO[08/03,01:24:40 Z] [5|blockchain/blockchain.go:660]              Committed new head block                  number=168 hash=c67c75…d1a04b
      

      kend.out.b.txt

    • c) PN (snapshot, pruning) -> EN (snapshot sync, pruning)
      Snapshot sync fails in heal stage. This is because of the same reason that b) fails.

  • Why live pruning works fine with snapshot sync?
    During the snapshot sync, leaf nodes are synced with their values. The receiver - in our test case EN - calculates the hash and stores the leaf node into trie. If the receiver (EN) has live pruning enabled, it uses ExtHash. After the snapshot sync is done, the trie would be the same state of a fresh-pruned trie. So EN would have no problem inserting, updating, or even pruning its trie.

version upgrade when not pruning - OK

  • Goal: See if v1.10.2 database format is compatible with v1.11.0, when live pruning disabled
  • Method
    • Run 1.10.2 node to sync Cypress and stop
    • Run 1.11.0 node to sync Cypress with the same --datadir
    • Run some RPCs such as klay_getBalance with various block numbers.
  • Result: Pass
Details
  • Prepare binaries
$ ken1.10.2 version
Klaytn v1.10.2+2dc0b6578b
$ ken1.11.0 version
Klaytn v1.11.0+320554640a
  • Sync
$ ken1.10.2 --datadir ./data
....Inserted a new block...number=9000
^C
$ ken1.11.0 --datadir ./data
....Inserted a new block...number=42000
^C
  • Query states
$ ken1.11.0
./ken1.11.0 --datadir data --verbosity 1 console
> klay.getBalance("0x758476368db33864b704f41cc63b8460f8e7d39a", 1280) // synced by ken1.10.2
643200000000000000000
> klay.getBalance("0x758476368db33864b704f41cc63b8460f8e7d39a", 25600) // synced by ken1.11.0
1.29216e+22

Consistency check - Minor flaw

  • Goal: Check that pruning should have deleted nodes if and only if the node is obsolete.
  • Method
    • Cypress sync to some block
    • Compare list of nodes reported by LevelDB.Iterator and Trie.NodeIterator
  • Result:
    • A few dangling nodes were not deleted.
      • stored nodes count 510380 (from LevelDB.Iterator)
      • referenced nodes count 509961 (from Trie.NodeIterator)
      • dangling nodes count 419 (0.08%)
Details
  • Sync
ken --state.live-pruning --datadir data
# Ctrl-C when block number past 1,000,000
  • Code
// storage/statedb/pruning_test.go
package statedb

import (
	"bytes"
	"fmt"
	"os"
	"path/filepath"
	"runtime"
	"sync"
	"testing"

	"github.com/klaytn/klaytn/blockchain/types/account"
	"github.com/klaytn/klaytn/common"
	"github.com/klaytn/klaytn/log"
	"github.com/klaytn/klaytn/rlp"
	"github.com/klaytn/klaytn/storage/database"
	"github.com/stretchr/testify/assert"
)

var dbDir = ""

func init() {
	if dbDir == "" {
		home := os.Getenv("HOME")
		dbDir = filepath.Join(home, "Library/KEN/klay/chaindata")
	}
}

type context struct {
	t *testing.T

	dbm database.DBManager
	tdb *Database

	mu         sync.Mutex
	referenced map[common.ExtHash]bool
	stored     map[common.ExtHash]bool
}

func newContext(t *testing.T) *context {
	dbConfig := &database.DBConfig{
		Dir:                dbDir,
		DBType:             database.LevelDB,
		SingleDB:           false,
		NumStateTrieShards: 4,
		ParallelDBWrite:    true,
		OpenFilesLimit:     0,
		LevelDBCacheSize:   768,
		LevelDBCompression: 0,
		LevelDBBufferPool:  true,
	}
	fmt.Printf(">>> Opening %s\n", dbDir)
	dbm := database.NewDBManager(dbConfig)

	return &context{
		t:          t,
		dbm:        dbm,
		tdb:        NewDatabase(dbm),
		referenced: make(map[common.ExtHash]bool),
		stored:     make(map[common.ExtHash]bool),
	}
}

func headBlockNumber(ctx *context) uint64 {
	hash := ctx.dbm.ReadHeadBlockHash()
	block := ctx.dbm.ReadBlockByHash(hash)
	return block.NumberU64()
}

func iterateTrie(ctx *context, it NodeIterator, check map[common.ExtHash]bool, state bool) {
	for it.Next(true) {
		if state && it.Leaf() {
			dec := account.NewAccountSerializer()
			err := rlp.DecodeBytes(it.LeafBlob(), &dec)
			assert.Nil(ctx.t, err, fmt.Sprintf("decode account %s: %x", it.Parent().Hex(), it.LeafBlob()))
			if err != nil {
				continue
			}

			acc := dec.GetAccount()
			addr := ctx.tdb.preimage(common.BytesToHash(it.LeafKey()))
			if pa, ok := acc.(account.ProgramAccount); ok {
				root := pa.GetStorageRoot()
				trie, err := NewSecureStorageTrie(root, ctx.tdb, nil)
				assert.Nil(ctx.t, err, fmt.Sprintf("storage_%x_%x", addr, root))
				if err != nil {
					continue
				}

				storageIt := trie.NodeIterator(nil)
				iterateTrie(ctx, storageIt, check, false)
				if itErr := it.Error(); itErr != nil {
					ctx.t.Logf("it.err %v", itErr)
				}
			}
		}

		if common.EmptyHash(it.Hash()) {
			continue
		}

		stack := it.(*nodeIterator).stack
		if len(stack) == 0 {
			continue
		}

		curr := stack[len(stack)-1]
		hn, _ := curr.node.cache()
		eh := common.BytesToExtHash(hn)

		check[eh] = true
	}
}

func collectState(ctx *context, num uint64) {
	block := ctx.dbm.ReadBlockByNumber(num)
	assert.NotNil(ctx.t, block, "state_%d", num)
	if block == nil {
		return
	}

	root := block.Root()
	trie, err := NewSecureTrie(root, ctx.tdb, nil)
	assert.Nil(ctx.t, err, fmt.Sprintf("state_%d_%s", num, root.Hex()))
	if err != nil {
		return
	}

	it := trie.NodeIterator(nil)
	check := make(map[common.ExtHash]bool)
	iterateTrie(ctx, it, check, true)
	if itErr := it.Error(); itErr != nil {
		ctx.t.Logf("it.err %v", itErr)
	}

	ctx.mu.Lock()
	for eh := range check {
		ctx.referenced[eh] = true
	}
	ctx.mu.Unlock()

	ctx.t.Logf("state_%d has %d nodes", num, len(check))
}

func collectReferenced(ctx *context) {
	var (
		retention  = uint64(172800)
		interval   = uint64(128)
		round_down = func(n uint64) uint64 {
			return n - (n % interval)
		}

		head      = headBlockNumber(ctx)
		maxRemain = round_down(head)
		minRemain = round_down(head - retention)
	)
	if head < retention {
		minRemain = interval
	}

	chNum := make(chan uint64, 10000)
	chNum <- 0
	chNum <- head
	for num := maxRemain; num >= minRemain; num -= interval {
		chNum <- num
	}
	ctx.t.Logf("head %d retention %d\n", head, retention)
	ctx.t.Logf("%d blocks to traverse (%d - %d)", len(chNum), minRemain, head)
	close(chNum)

	var wg sync.WaitGroup
	numWorkers := runtime.NumCPU()

	for i := 0; i < numWorkers; i++ {
		wg.Add(1)
		go func() {
			for num := range chNum {
				collectState(ctx, num)
			}
			wg.Done()
		}()
	}

	wg.Wait()
}

func collectStored(ctx *context) {
	it := ctx.dbm.GetStateTrieDB().NewIterator(nil, nil)
	for it.Next() {
		k := it.Key()
		if len(k) == common.HashLength || len(k) == common.ExtHashLength {
			eh := common.BytesToExtHash(k)
			ctx.stored[eh] = true
		} else if bytes.HasPrefix(k, []byte("secure-key-")) {
			continue
		} else if len(k) == 33 && k[0] == 'c' {
			continue
		} else {
			fmt.Printf("Unknown %x\n", k)
		}
	}
}

func TestPruningConsistency(t *testing.T) {
	log.EnableLogForTest(log.LvlCrit, log.LvlError)
	ctx := newContext(t)

	collectStored(ctx)
	collectReferenced(ctx)

	R := ctx.referenced
	S := ctx.stored

	deleted := 0
	left := 0

	for h := range R {
		if _, ok := S[h]; !ok {
			fmt.Println("deleted", h.Hex())
			deleted++
		}
	}
	for h := range S {
		if _, ok := R[h]; !ok {
			fmt.Println("left", h.Hex())
			left++
		}
	}

	fmt.Printf(">>> stored nodes count %d\n", len(ctx.stored))
	fmt.Printf(">>> referenced nodes count %d\n", len(ctx.referenced))
	fmt.Printf(">>> deleted %d left %d\n", deleted, left)
}
  • Result
$ go test -timeout 1h -v -run=TestPruningConsistency | tee log
=== RUN   TestPruningConsistency
>>> Opening /Users/krust/klay/space/data/klay/chaindata
    pruning_test.go:169: head 1073344 retention 172800
    pruning_test.go:170: 1353 blocks to traverse (900480 - 1073344)
    pruning_test.go:135: it.err missing trie node 1d52c3cabd8749a6212d9a432d80a8f5ffaaaa65ec9cbe4983508a7b8ced00d9 (path 00)
    pruning_test.go:144: state_0 has 1 nodes
    pruning_test.go:144: state_1072640 has 249634 nodes
    pruning_test.go:144: state_1072768 has 249647 nodes

...

    pruning_test.go:144: state_900608 has 197396 nodes
    pruning_test.go:144: state_901120 has 198594 nodes
left 0x77aedb0bca12c387f4f9c2e0e1f8a7acc69d6064997d6e48301be294dab5a18b17795c6b56f16b
left 0xf1ddfbd236c22eceecff09eab90c8dd556d431a54c99f01f345b7ec5244b838b17795c6b5a59cd


...

left 0x64f665839099d773de72b16a519594dce0ce8aa2ec1e0ceae12b734cf529ccd217795c6b5a42cf
left 0x57c4cc716f0d5ba54af5bcf36db00cd35a8b99cf47c983b015dbe198b22b21df17795c6b561015
left 0x61a25a38d99f4a18046a9185c2a5a317936e2a36f9874d7547fa13d616305fd017795c6b59a277
>>> stored nodes count 510380
>>> referenced nodes count 509961
>>> deleted 0 left 419

@JayChoi1736
Copy link
Contributor Author

JayChoi1736 commented Aug 3, 2023

Regular QA Test

  • Rolling Update test: PASS
  • RPC/WS test: PASS
  • Governance test: PASS
  • Rosetta reward test:
  • Rosetta result
  • Rosetta check:data is not working in [EthTxType hardfork ~ before Magma hardfork]. looking for the reason
  • API performance test: PASS
    • TC : readBlockNumber, readGetAccount, readGetBlockByNumber, readGetBlockWithConsensusInfoByNumber
    • EN : m6i.4xlarge * 1
    • result
Version 1.10.2 1.11.0-rc.1
readBlockNumber 173340 166968.
readGetAccount 99345 87225
readGetBlockByNumber 167.76 181.50
readGetBlockWithConsensusInfoByNumber 194.71 205.14
  • Sync test:
network sync duration sync time Latest DB size
baobab 0 to 130040000 5d 12h 479GB
cypress 0 to 52007590 6d 2T
cypress 52007591 to 76539733 7d 22h 3.8T
cypress 76539734 to 85287012 8d 5.2T
cypress 85394216 to 130040000 19d 36h (in next sync test, run one more node) 8.2T
  • baobab result is not accuracy due to due to bad block recovery. recommended to refer v1.10.2 synctest sync time result.

  • unusual error logs

    • bad block occured -> fixed
  • Load test

    • Stress: 10000 RPS load test for 30m

      • TC: transferSignedTx

      • TPS: 5520

      • CN : m6i.8xlarge

      • block mining time : 1.0s

      • grafana image

        stress

    • Reliability: 2000 RPS load test for 72h

    • TC: transferSignedTx, newValueTransferTC, newFeeDelegatedSmartContractExecutionTC

    • TPS: 2000

    • Peer Connection: stable

    • BlockGenerationTime: -

    • grafana image

      reliable

  • Reward test: Deprecated

    • will be replaced by rosetta reward check test
  • Caver js/java test: Deprecated

@aidan-kwon aidan-kwon added this to the v1.11.0 milestone Aug 3, 2023
@jeongkyun-oh
Copy link
Contributor

jeongkyun-oh commented Aug 3, 2023

RocksDB Test

High memory consumption

graph

Before controlling max_open_files
스크린샷 2023-08-04 오전 7 57 08

After controlling max_open_files
스크린샷 2023-08-04 오전 8 18 59

StateDB Migration

  • RocksDB as a destination
    • LDB to RDB - Okay
  • RocksDB as a source
    • RDB to RDB - Failed
    • RDB to LDB - Failed
log for failed migration
INFO[08/01,09:27:34 +09] [19] dbManager created                         
srcDB="{\"Dir\":\"./dstrdb\",\"DBType\":\"RocksDB\",\"SingleDB\":false,\"NumStateTrieShards\":4,\"ParallelDBWrite\":false,\"OpenFilesLimit\":61440,\"EnableDBPerfMetrics\":true,\"LevelDBCacheSize\":768,\"LevelDBCompression\":0,\"LevelDBBufferPool\":false,\"RocksDBConfig\":{\"Secondary\":false,\"DumpMallocStat\":false,\"DisableMetrics\":false,\"CacheSize\":768,\"CompressionType\":\"lz4\",\"BottommostCompressionType\":\"zstd\",\"FilterPolicy\":\"ribbon\"},\"DynamoDBConfig\":{\"TableName\":\"\",\"Region\":\"ap-northeast-2\",\"Endpoint\":\"\",\"S3Endpoint\":\"\",\"IsProvisioned\":false,\"ReadCapacityUnits\":10000,\"WriteCapacityUnits\":10000,\"ReadOnly\":false,\"PerfCheck\":true}}" 
dstDB="{\"Dir\":\"./dstrdb2\",\"DBType\":\"RocksDB\",\"SingleDB\":false,\"NumStateTrieShards\":4,\"ParallelDBWrite\":false,\"OpenFilesLimit\":61440,\"EnableDBPerfMetrics\":true,\"LevelDBCacheSize\":768,\"LevelDBCompression\":0,\"LevelDBBufferPool\":false,\"RocksDBConfig\":{\"Secondary\":false,\"DumpMallocStat\":false,\"DisableMetrics\":false,\"CacheSize\":768,\"CompressionType\":\"lz4\",\"BottommostCompressionType\":\"zstd\",\"FilterPolicy\":\"ribbon\"},\"DynamoDBConfig\":{\"TableName\":\"\",\"Region\":\"ap-northeast-2\",\"Endpoint\":\"\",\"S3Endpoint\":\"\",\"IsProvisioned\":false,\"ReadCapacityUnits\":10000,\"WriteCapacityUnits\":10000,\"ReadOnly\":false,\"PerfCheck\":true}}"
INFO[08/01,09:27:34 +09] [48] Non-single database is used for persistent storage  DBType=RocksDB
INFO[08/01,09:27:34 +09] [48] RocksDB configuration                     blockCacheSize=7340032 bufferSize=7340032 enableDumpMallocStat=false compressionType=lz4 bottommostCompressionType=zstd filterPolicy=ribbon disableMetrics=false
INFO[08/01,09:27:34 +09] [48] RocksDB configuration                     blockCacheSize=19922944 bufferSize=19922944 enableDumpMallocStat=false compressionType=lz4 bottommostCompressionType=zstd filterPolicy=ribbon disableMetrics=false
INFO[08/01,09:27:34 +09] [48] RocksDB configuration                     blockCacheSize=19922944 bufferSize=19922944 enableDumpMallocStat=false compressionType=lz4 bottommostCompressionType=zstd filterPolicy=ribbon disableMetrics=false
INFO[08/01,09:27:34 +09] [48] RocksDB configuration                     blockCacheSize=19922944 bufferSize=19922944 enableDumpMallocStat=false compressionType=lz4 bottommostCompressionType=zstd filterPolicy=ribbon disableMetrics=false
INFO[08/01,09:27:34 +09] [48] RocksDB configuration                     blockCacheSize=160432128 bufferSize=160432128 enableDumpMallocStat=false compressionType=lz4 bottommostCompressionType=zstd filterPolicy=ribbon disableMetrics=false
INFO[08/01,09:27:34 +09] [48] RocksDB configuration                     blockCacheSize=160432128 bufferSize=160432128 enableDumpMallocStat=false compressionType=lz4 bottommostCompressionType=zstd filterPolicy=ribbon disableMetrics=false
INFO[08/01,09:27:34 +09] [48] RocksDB configuration                     blockCacheSize=160432128 bufferSize=160432128 enableDumpMallocStat=false compressionType=lz4 bottommostCompressionType=zstd filterPolicy=ribbon disableMetrics=false
INFO[08/01,09:27:34 +09] [48] RocksDB configuration                     blockCacheSize=160432128 bufferSize=160432128 enableDumpMallocStat=false compressionType=lz4 bottommostCompressionType=zstd filterPolicy=ribbon disableMetrics=false
INFO[08/01,09:27:34 +09] [48] Created a sharded database                dbType=statetrie numShards=4
INFO[08/01,09:27:34 +09] [48] RocksDB configuration                     blockCacheSize=7340032   bufferSize=7340032   enableDumpMallocStat=false compressionType=lz4 bottommostCompressionType=zstd filterPolicy=ribbon disableMetrics=false
INFO[08/01,09:27:34 +09] [48] RocksDB configuration                     blockCacheSize=3145728   bufferSize=3145728   enableDumpMallocStat=false compressionType=lz4 bottommostCompressionType=zstd filterPolicy=ribbon disableMetrics=false
INFO[08/01,09:27:34 +09] [48] RocksDB configuration                     blockCacheSize=11534336  bufferSize=11534336  enableDumpMallocStat=false compressionType=lz4 bottommostCompressionType=zstd filterPolicy=ribbon disableMetrics=false
INFO[08/01,09:27:34 +09] [48] Non-single database is used for persistent storage  DBType=RocksDB
INFO[08/01,09:27:34 +09] [48] RocksDB configuration                     blockCacheSize=7340032   bufferSize=7340032   enableDumpMallocStat=false compressionType=lz4 bottommostCompressionType=zstd filterPolicy=ribbon disableMetrics=false
INFO[08/01,09:27:34 +09] [48] RocksDB configuration                     blockCacheSize=19922944  bufferSize=19922944  enableDumpMallocStat=false compressionType=lz4 bottommostCompressionType=zstd filterPolicy=ribbon disableMetrics=false
INFO[08/01,09:27:34 +09] [48] RocksDB configuration                     blockCacheSize=19922944  bufferSize=19922944  enableDumpMallocStat=false compressionType=lz4 bottommostCompressionType=zstd filterPolicy=ribbon disableMetrics=false
INFO[08/01,09:27:34 +09] [48] RocksDB configuration                     blockCacheSize=19922944  bufferSize=19922944  enableDumpMallocStat=false compressionType=lz4 bottommostCompressionType=zstd filterPolicy=ribbon disableMetrics=false
INFO[08/01,09:27:34 +09] [48] RocksDB configuration                     blockCacheSize=160432128 bufferSize=160432128 enableDumpMallocStat=false compressionType=lz4 bottommostCompressionType=zstd filterPolicy=ribbon disableMetrics=false
INFO[08/01,09:27:34 +09] [48] RocksDB configuration                     blockCacheSize=160432128 bufferSize=160432128 enableDumpMallocStat=false compressionType=lz4 bottommostCompressionType=zstd filterPolicy=ribbon disableMetrics=false
INFO[08/01,09:27:34 +09] [48] RocksDB configuration                     blockCacheSize=160432128 bufferSize=160432128 enableDumpMallocStat=false compressionType=lz4 bottommostCompressionType=zstd filterPolicy=ribbon disableMetrics=false
INFO[08/01,09:27:34 +09] [48] RocksDB configuration                     blockCacheSize=160432128 bufferSize=160432128 enableDumpMallocStat=false compressionType=lz4 bottommostCompressionType=zstd filterPolicy=ribbon disableMetrics=false
INFO[08/01,09:27:34 +09] [48] Created a sharded database                dbType=statetrie numShards=4
INFO[08/01,09:27:34 +09] [48] RocksDB configuration                     blockCacheSize=7340032   bufferSize=7340032   enableDumpMallocStat=false compressionType=lz4 bottommostCompressionType=zstd filterPolicy=ribbon disableMetrics=false
INFO[08/01,09:27:34 +09] [48] RocksDB configuration                     blockCacheSize=3145728   bufferSize=3145728   enableDumpMallocStat=false compressionType=lz4 bottommostCompressionType=zstd filterPolicy=ribbon disableMetrics=false
INFO[08/01,09:27:34 +09] [48] RocksDB configuration                     blockCacheSize=11534336  bufferSize=11534336  enableDumpMallocStat=false compressionType=lz4 bottommostCompressionType=zstd filterPolicy=ribbon disableMetrics=false
WARN[08/01,09:27:34 +09] [48] skip nil src db                           db=statetrie_migrated
INFO[08/01,09:27:34 +09] [48] Finish DB migration                       db=snapshot           fetchedTotal=0 elapsedTotal=99.792µs
fatal error: unexpected signal during runtime execution
INFO[08/01,09:27:34 +09] [48] DB migrated                               db=misc               fetchedTotal=0 elapsedTotal=9.792µs
[signal SIGSEGV: segmentation violation code=0x2 addr=0x0 pc=0x10674899c]

runtime stack:
runtime.throw({0x104245a24?, 0x14000d796c0?})
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/panic.go:1047 +0x40 fp=0x172f16e50 sp=0x172f16e20 pc=0x102fcae90
runtime.sigpanic()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/signal_unix.go:821 +0x244 fp=0x172f16e90 sp=0x172f16e50 pc=0x102fe2874

goroutine 32 [syscall]:
runtime.cgocall(0x1041658bc, 0x14000d79d88)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/cgocall.go:157 +0x54 fp=0x14000d79d50 sp=0x14000d79d10 pc=0x102f98884
github.com/linxGnu/grocksdb._Cfunc_rocksdb_iter_get_error(0x0, 0x140000105c0)
	_cgo_gotypes.go:3261 +0x34 fp=0x14000d79d80 sp=0x14000d79d50 pc=0x103776144
github.com/linxGnu/grocksdb.(*Iterator).Err.func1(0x600002208390?, 0x600002208390?)
	/Users/ojeong-gyun/go/pkg/mod/github.com/linx!gnu/grocksdb@v1.7.17-0.20230425035833-f16fdbe0eb3c/iterator.go:122 +0x8c fp=0x14000d79dd0 sp=0x14000d79d80 pc=0x103797d3c
github.com/linxGnu/grocksdb.(*Iterator).Err(0x14000849340?)
	/Users/ojeong-gyun/go/pkg/mod/github.com/linx!gnu/grocksdb@v1.7.17-0.20230425035833-f16fdbe0eb3c/iterator.go:122 +0x38 fp=0x14000d79e10 sp=0x14000d79dd0 pc=0x103797c78
github.com/klaytn/klaytn/storage/database.(*rdbIter).Error(0x185d0?)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/rocksdb_database.go:238 +0x3c fp=0x14000d79e30 sp=0x14000d79e10 pc=0x1038903ec
github.com/klaytn/klaytn/storage/database.copyDB({0x1041f1113, 0x8}, {0x1049a8c58?, 0x140003a2990?}, {0x1049a8c58, 0x140003a2ea0}, 0x0?)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/db_migration.go:90 +0x930 fp=0x14000d79f70 sp=0x14000d79e30 pc=0x103884c60
github.com/klaytn/klaytn/storage/database.(*databaseManager).StartDBMigration.func2()
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/db_migration.go:143 +0x60 fp=0x14000d79fd0 sp=0x14000d79f70 pc=0x1038855e0
runtime.goexit()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/asm_arm64.s:1172 +0x4 fp=0x14000d79fd0 sp=0x14000d79fd0 pc=0x103001324
created by github.com/klaytn/klaytn/storage/database.(*databaseManager).StartDBMigration
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/db_migration.go:142 +0x484

goroutine 1 [chan receive]:
runtime.gopark(0x104732380?, 0x14000b2f638?, 0x30?, 0x2f?, 0x102fa1fbc?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/proc.go:381 +0xe4 fp=0x14000b2f4d0 sp=0x14000b2f4b0 pc=0x102fcd8e4
runtime.chanrecv(0x14000d66f00, 0x14000b2f638, 0x1)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/chan.go:583 +0x45c fp=0x14000b2f560 sp=0x14000b2f4d0 pc=0x102f9b47c
runtime.chanrecv1(0x104205288?, 0x1041fe09b?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/chan.go:442 +0x14 fp=0x14000b2f590 sp=0x14000b2f560 pc=0x102f9afe4
github.com/klaytn/klaytn/storage/database.(*databaseManager).StartDBMigration(0x14000a70140, {0x1049bf5f0, 0x14000a700a0})
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/db_migration.go:148 +0x670 fp=0x14000b2f650 sp=0x14000b2f590 pc=0x103885460
github.com/klaytn/klaytn/cmd/utils/nodecmd.startMigration(0x140000ab880?)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/cmd/utils/nodecmd/migrationcmd.go:73 +0xc0 fp=0x14000b2f6d0 sp=0x14000b2f650 pc=0x104141760
github.com/klaytn/klaytn/cmd/utils/nodecmd.MigrateGlobalFlags.func2.1(0x105837920?)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/cmd/utils/nodecmd/defaultcmd.go:275 +0x38 fp=0x14000b2f700 sp=0x14000b2f6d0 pc=0x104147658
github.com/urfave/cli/v2.(*Command).Run(0x105837920, 0x140000ab880, {0x14000a407e0, 0x1, 0x1})
	/Users/ojeong-gyun/go/pkg/mod/github.com/urfave/cli/v2@v2.25.7/command.go:274 +0x75c fp=0x14000b2f990 sp=0x14000b2f700 pc=0x103359fbc
github.com/urfave/cli/v2.(*Command).Run(0x1058377c0, 0x140000ab7c0, {0x14000a42340, 0x2, 0x2})
	/Users/ojeong-gyun/go/pkg/mod/github.com/urfave/cli/v2@v2.25.7/command.go:267 +0x97c fp=0x14000b2fc20 sp=0x14000b2f990 pc=0x10335a1dc
github.com/urfave/cli/v2.(*Command).Run(0x140006a8420, 0x14000776880, {0x140001aa000, 0xb, 0xb})
	/Users/ojeong-gyun/go/pkg/mod/github.com/urfave/cli/v2@v2.25.7/command.go:267 +0x97c fp=0x14000b2feb0 sp=0x14000b2fc20 pc=0x10335a1dc
github.com/urfave/cli/v2.(*App).RunContext(0x14000526000, {0x10499d7e0?, 0x140001a4008}, {0x140001aa000, 0xb, 0xb})
	/Users/ojeong-gyun/go/pkg/mod/github.com/urfave/cli/v2@v2.25.7/app.go:332 +0x604 fp=0x14000b2ff20 sp=0x14000b2feb0 pc=0x103356c24
github.com/urfave/cli/v2.(*App).Run(...)
	/Users/ojeong-gyun/go/pkg/mod/github.com/urfave/cli/v2@v2.25.7/app.go:309
main.main()
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/cmd/ken/main.go:97 +0xa4 fp=0x14000b2ff70 sp=0x14000b2ff20 pc=0x104149154
runtime.main()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/proc.go:250 +0x248 fp=0x14000b2ffd0 sp=0x14000b2ff70 pc=0x102fcd4b8
runtime.goexit()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/asm_arm64.s:1172 +0x4 fp=0x14000b2ffd0 sp=0x14000b2ffd0 pc=0x103001324

goroutine 2 [force gc (idle)]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/proc.go:381 +0xe4 fp=0x14000076fa0 sp=0x14000076f80 pc=0x102fcd8e4
runtime.goparkunlock(...)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/proc.go:387
runtime.forcegchelper()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/proc.go:305 +0xb8 fp=0x14000076fd0 sp=0x14000076fa0 pc=0x102fcd728
runtime.goexit()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/asm_arm64.s:1172 +0x4 fp=0x14000076fd0 sp=0x14000076fd0 pc=0x103001324
created by runtime.init.6
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/proc.go:293 +0x24

goroutine 3 [GC sweep wait]:
runtime.gopark(0x1?, 0x0?, 0x0?, 0x0?, 0x0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/proc.go:381 +0xe4 fp=0x14000077760 sp=0x14000077740 pc=0x102fcd8e4
runtime.goparkunlock(...)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/proc.go:387
runtime.bgsweep(0x0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/mgcsweep.go:319 +0x110 fp=0x140000777b0 sp=0x14000077760 pc=0x102fb8810
runtime.gcenable.func1()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/mgc.go:178 +0x28 fp=0x140000777d0 sp=0x140000777b0 pc=0x102fad1f8
runtime.goexit()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/asm_arm64.s:1172 +0x4 fp=0x140000777d0 sp=0x140000777d0 pc=0x103001324
created by runtime.gcenable
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/mgc.go:178 +0x74

goroutine 4 [sleep]:
runtime.gopark(0x14000054050?, 0x352bee1bc52d8?, 0x0?, 0x0?, 0x104984430?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/proc.go:381 +0xe4 fp=0x14000077f00 sp=0x14000077ee0 pc=0x102fcd8e4
runtime.goparkunlock(...)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/proc.go:387
runtime.(*scavengerState).sleep(0x105854a40, 0x40d552c000000000)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/mgcscavenge.go:479 +0x128 fp=0x14000077f80 sp=0x14000077f00 pc=0x102fb6828
runtime.bgscavenge(0x0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/mgcscavenge.go:637 +0x9c fp=0x14000077fb0 sp=0x14000077f80 pc=0x102fb6bfc
runtime.gcenable.func2()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/mgc.go:179 +0x28 fp=0x14000077fd0 sp=0x14000077fb0 pc=0x102fad198
runtime.goexit()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/asm_arm64.s:1172 +0x4 fp=0x14000077fd0 sp=0x14000077fd0 pc=0x103001324
created by runtime.gcenable
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/mgc.go:179 +0xb8

goroutine 18 [finalizer wait]:
runtime.gopark(0x140000765a8?, 0x102fa1d70?, 0x80?, 0xa?, 0x106054a90?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/proc.go:381 +0xe4 fp=0x14000076580 sp=0x14000076560 pc=0x102fcd8e4
runtime.runfinq()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/mfinal.go:193 +0x10c fp=0x140000767d0 sp=0x14000076580 pc=0x102fac28c
runtime.goexit()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/asm_arm64.s:1172 +0x4 fp=0x140000767d0 sp=0x140000767d0 pc=0x103001324
created by runtime.createfing
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/mfinal.go:163 +0x84

goroutine 5 [chan receive]:
runtime.gopark(0x1400035ab60?, 0x1400035abe8?, 0xa8?, 0xac?, 0x140000ac0b0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/proc.go:381 +0xe4 fp=0x140000726d0 sp=0x140000726b0 pc=0x102fcd8e4
runtime.chanrecv(0x140001a22a0, 0x0, 0x1)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/chan.go:583 +0x45c fp=0x14000072760 sp=0x140000726d0 pc=0x102f9b47c
runtime.chanrecv1(0x0?, 0x103001324?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/chan.go:442 +0x14 fp=0x14000072790 sp=0x14000072760 pc=0x102f9afe4
github.com/rcrowley/go-metrics.(*meterArbiter).tick(0x105853d60)
	/Users/ojeong-gyun/go/pkg/mod/github.com/rcrowley/go-metrics@v0.0.0-20190826022208-cac0b30c2563/meter.go:239 +0x30 fp=0x140000727b0 sp=0x14000072790 pc=0x1032cc8f0
github.com/rcrowley/go-metrics.NewMeter.func2()
	/Users/ojeong-gyun/go/pkg/mod/github.com/rcrowley/go-metrics@v0.0.0-20190826022208-cac0b30c2563/meter.go:46 +0x28 fp=0x140000727d0 sp=0x140000727b0 pc=0x1032cbe98
runtime.goexit()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/asm_arm64.s:1172 +0x4 fp=0x140000727d0 sp=0x140000727d0 pc=0x103001324
created by github.com/rcrowley/go-metrics.NewMeter
	/Users/ojeong-gyun/go/pkg/mod/github.com/rcrowley/go-metrics@v0.0.0-20190826022208-cac0b30c2563/meter.go:46 +0xd4

goroutine 6 [chan receive]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/proc.go:381 +0xe4 fp=0x14000078640 sp=0x14000078620 pc=0x102fcd8e4
runtime.chanrecv(0x140000add40, 0x140000787a0, 0x1)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/chan.go:583 +0x45c fp=0x140000786d0 sp=0x14000078640 pc=0x102f9b47c
runtime.chanrecv2(0x0?, 0x0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/chan.go:447 +0x14 fp=0x14000078700 sp=0x140000786d0 pc=0x102f9b004
github.com/klaytn/klaytn/blockchain/state.encodeStateObject(0x0?)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/blockchain/state/state_object_encoder.go:84 +0x34 fp=0x140000787b0 sp=0x14000078700 pc=0x1039e51f4
github.com/klaytn/klaytn/blockchain/state.newStateObjectEncoder.func1()
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/blockchain/state/state_object_encoder.go:52 +0x28 fp=0x140000787d0 sp=0x140000787b0 pc=0x1039e50b8
runtime.goexit()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/asm_arm64.s:1172 +0x4 fp=0x140000787d0 sp=0x140000787d0 pc=0x103001324
created by github.com/klaytn/klaytn/blockchain/state.newStateObjectEncoder
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/blockchain/state/state_object_encoder.go:52 +0x78

goroutine 7 [chan receive]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/proc.go:381 +0xe4 fp=0x14000078e40 sp=0x14000078e20 pc=0x102fcd8e4
runtime.chanrecv(0x140000add40, 0x14000078fa0, 0x1)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/chan.go:583 +0x45c fp=0x14000078ed0 sp=0x14000078e40 pc=0x102f9b47c
runtime.chanrecv2(0x0?, 0x0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/chan.go:447 +0x14 fp=0x14000078f00 sp=0x14000078ed0 pc=0x102f9b004
github.com/klaytn/klaytn/blockchain/state.encodeStateObject(0x0?)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/blockchain/state/state_object_encoder.go:84 +0x34 fp=0x14000078fb0 sp=0x14000078f00 pc=0x1039e51f4
github.com/klaytn/klaytn/blockchain/state.newStateObjectEncoder.func1()
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/blockchain/state/state_object_encoder.go:52 +0x28 fp=0x14000078fd0 sp=0x14000078fb0 pc=0x1039e50b8
runtime.goexit()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/asm_arm64.s:1172 +0x4 fp=0x14000078fd0 sp=0x14000078fd0 pc=0x103001324
created by github.com/klaytn/klaytn/blockchain/state.newStateObjectEncoder
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/blockchain/state/state_object_encoder.go:52 +0x78

goroutine 8 [chan receive]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/proc.go:381 +0xe4 fp=0x14000079640 sp=0x14000079620 pc=0x102fcd8e4
runtime.chanrecv(0x140000add40, 0x140000797a0, 0x1)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/chan.go:583 +0x45c fp=0x140000796d0 sp=0x14000079640 pc=0x102f9b47c
runtime.chanrecv2(0x0?, 0x0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/chan.go:447 +0x14 fp=0x14000079700 sp=0x140000796d0 pc=0x102f9b004
github.com/klaytn/klaytn/blockchain/state.encodeStateObject(0x0?)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/blockchain/state/state_object_encoder.go:84 +0x34 fp=0x140000797b0 sp=0x14000079700 pc=0x1039e51f4
github.com/klaytn/klaytn/blockchain/state.newStateObjectEncoder.func1()
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/blockchain/state/state_object_encoder.go:52 +0x28 fp=0x140000797d0 sp=0x140000797b0 pc=0x1039e50b8
runtime.goexit()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/asm_arm64.s:1172 +0x4 fp=0x140000797d0 sp=0x140000797d0 pc=0x103001324
created by github.com/klaytn/klaytn/blockchain/state.newStateObjectEncoder
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/blockchain/state/state_object_encoder.go:52 +0x78

goroutine 9 [GC worker (idle)]:
runtime.gopark(0x352be7c630a7f?, 0x0?, 0x0?, 0x0?, 0x0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/proc.go:381 +0xe4 fp=0x14000079f40 sp=0x14000079f20 pc=0x102fcd8e4
runtime.gcBgMarkWorker()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/mgc.go:1275 +0xec fp=0x14000079fd0 sp=0x14000079f40 pc=0x102faf13c
runtime.goexit()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/asm_arm64.s:1172 +0x4 fp=0x14000079fd0 sp=0x14000079fd0 pc=0x103001324
created by runtime.gcBgMarkStartWorkers
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/mgc.go:1199 +0x28

goroutine 20 [GC worker (idle)]:
runtime.gopark(0x352be7c62c42f?, 0x3?, 0x48?, 0xdb?, 0x0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/proc.go:381 +0xe4 fp=0x14000072f40 sp=0x14000072f20 pc=0x102fcd8e4
runtime.gcBgMarkWorker()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/mgc.go:1275 +0xec fp=0x14000072fd0 sp=0x14000072f40 pc=0x102faf13c
runtime.goexit()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/asm_arm64.s:1172 +0x4 fp=0x14000072fd0 sp=0x14000072fd0 pc=0x103001324
created by runtime.gcBgMarkStartWorkers
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/mgc.go:1199 +0x28

goroutine 35 [GC worker (idle)]:
runtime.gopark(0x352be6c377a4e?, 0x1?, 0xc8?, 0x33?, 0x0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/proc.go:381 +0xe4 fp=0x1400013c740 sp=0x1400013c720 pc=0x102fcd8e4
runtime.gcBgMarkWorker()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/mgc.go:1275 +0xec fp=0x1400013c7d0 sp=0x1400013c740 pc=0x102faf13c
runtime.goexit()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/asm_arm64.s:1172 +0x4 fp=0x1400013c7d0 sp=0x1400013c7d0 pc=0x103001324
created by runtime.gcBgMarkStartWorkers
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/mgc.go:1199 +0x28

goroutine 36 [GC worker (idle)]:
runtime.gopark(0x352be6c377bc5?, 0x1?, 0xab?, 0x15?, 0x0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/proc.go:381 +0xe4 fp=0x1400013cf40 sp=0x1400013cf20 pc=0x102fcd8e4
runtime.gcBgMarkWorker()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/mgc.go:1275 +0xec fp=0x1400013cfd0 sp=0x1400013cf40 pc=0x102faf13c
runtime.goexit()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/asm_arm64.s:1172 +0x4 fp=0x1400013cfd0 sp=0x1400013cfd0 pc=0x103001324
created by runtime.gcBgMarkStartWorkers
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/mgc.go:1199 +0x28

goroutine 37 [GC worker (idle)]:
runtime.gopark(0x352be7c62c2b8?, 0x3?, 0xc5?, 0x2?, 0x0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/proc.go:381 +0xe4 fp=0x1400013d740 sp=0x1400013d720 pc=0x102fcd8e4
runtime.gcBgMarkWorker()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/mgc.go:1275 +0xec fp=0x1400013d7d0 sp=0x1400013d740 pc=0x102faf13c
runtime.goexit()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/asm_arm64.s:1172 +0x4 fp=0x1400013d7d0 sp=0x1400013d7d0 pc=0x103001324
created by runtime.gcBgMarkStartWorkers
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/mgc.go:1199 +0x28

goroutine 10 [GC worker (idle)]:
runtime.gopark(0x352be6c37c7c7?, 0x3?, 0x49?, 0xe0?, 0x0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/proc.go:381 +0xe4 fp=0x14000138740 sp=0x14000138720 pc=0x102fcd8e4
runtime.gcBgMarkWorker()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/mgc.go:1275 +0xec fp=0x140001387d0 sp=0x14000138740 pc=0x102faf13c
runtime.goexit()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/asm_arm64.s:1172 +0x4 fp=0x140001387d0 sp=0x140001387d0 pc=0x103001324
created by runtime.gcBgMarkStartWorkers
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/mgc.go:1199 +0x28

goroutine 11 [GC worker (idle)]:
runtime.gopark(0x105890a80?, 0x3?, 0x8f?, 0xeb?, 0x0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/proc.go:381 +0xe4 fp=0x14000138f40 sp=0x14000138f20 pc=0x102fcd8e4
runtime.gcBgMarkWorker()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/mgc.go:1275 +0xec fp=0x14000138fd0 sp=0x14000138f40 pc=0x102faf13c
runtime.goexit()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/asm_arm64.s:1172 +0x4 fp=0x14000138fd0 sp=0x14000138fd0 pc=0x103001324
created by runtime.gcBgMarkStartWorkers
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/mgc.go:1199 +0x28

goroutine 38 [GC worker (idle)]:
runtime.gopark(0x352be6c3774c5?, 0x3?, 0xdb?, 0x13?, 0x0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/proc.go:381 +0xe4 fp=0x1400013df40 sp=0x1400013df20 pc=0x102fcd8e4
runtime.gcBgMarkWorker()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/mgc.go:1275 +0xec fp=0x1400013dfd0 sp=0x1400013df40 pc=0x102faf13c
runtime.goexit()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/asm_arm64.s:1172 +0x4 fp=0x1400013dfd0 sp=0x1400013dfd0 pc=0x103001324
created by runtime.gcBgMarkStartWorkers
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/mgc.go:1199 +0x28

goroutine 39 [GC worker (idle)]:
runtime.gopark(0x352be6c36cc50?, 0x3?, 0xd5?, 0x8c?, 0x0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/proc.go:381 +0xe4 fp=0x1400013e740 sp=0x1400013e720 pc=0x102fcd8e4
runtime.gcBgMarkWorker()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/mgc.go:1275 +0xec fp=0x1400013e7d0 sp=0x1400013e740 pc=0x102faf13c
runtime.goexit()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/asm_arm64.s:1172 +0x4 fp=0x1400013e7d0 sp=0x1400013e7d0 pc=0x103001324
created by runtime.gcBgMarkStartWorkers
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/mgc.go:1199 +0x28

goroutine 21 [GC worker (idle)]:
runtime.gopark(0x352be7c62bfca?, 0x1?, 0xe9?, 0xc3?, 0x0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/proc.go:381 +0xe4 fp=0x14000073740 sp=0x14000073720 pc=0x102fcd8e4
runtime.gcBgMarkWorker()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/mgc.go:1275 +0xec fp=0x140000737d0 sp=0x14000073740 pc=0x102faf13c
runtime.goexit()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/asm_arm64.s:1172 +0x4 fp=0x140000737d0 sp=0x140000737d0 pc=0x103001324
created by runtime.gcBgMarkStartWorkers
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/mgc.go:1199 +0x28

goroutine 40 [chan receive]:
runtime.gopark(0x1400013eef8?, 0x102ffddec?, 0x0?, 0x60?, 0x140001bc008?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/proc.go:381 +0xe4 fp=0x1400013eea0 sp=0x1400013ee80 pc=0x102fcd8e4
runtime.chanrecv(0x14000438120, 0x1400013ef90, 0x1)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/chan.go:583 +0x45c fp=0x1400013ef30 sp=0x1400013eea0 pc=0x102f9b47c
runtime.chanrecv2(0x6fc23ac00?, 0x0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/chan.go:447 +0x14 fp=0x1400013ef60 sp=0x1400013ef30 pc=0x102f9b004
github.com/golang/glog.(*loggingT).flushDaemon(0x0?)
	/Users/ojeong-gyun/go/pkg/mod/github.com/golang/glog@v1.0.0/glog.go:882 +0x5c fp=0x1400013efb0 sp=0x1400013ef60 pc=0x103b21c8c
github.com/golang/glog.init.0.func1()
	/Users/ojeong-gyun/go/pkg/mod/github.com/golang/glog@v1.0.0/glog.go:410 +0x28 fp=0x1400013efd0 sp=0x1400013efb0 pc=0x103b1ff58
runtime.goexit()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/asm_arm64.s:1172 +0x4 fp=0x1400013efd0 sp=0x1400013efd0 pc=0x103001324
created by github.com/golang/glog.init.0
	/Users/ojeong-gyun/go/pkg/mod/github.com/golang/glog@v1.0.0/glog.go:410 +0x1f0

goroutine 41 [chan receive]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/proc.go:381 +0xe4 fp=0x1400013f6a0 sp=0x1400013f680 pc=0x102fcd8e4
runtime.chanrecv(0x14000134660, 0x1400013f7a0, 0x1)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/chan.go:583 +0x45c fp=0x1400013f730 sp=0x1400013f6a0 pc=0x102f9b47c
runtime.chanrecv2(0x0?, 0x0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/chan.go:447 +0x14 fp=0x1400013f760 sp=0x1400013f730 pc=0x102f9b004
github.com/klaytn/klaytn/blockchain.(*txSenderCacher).cache(0x0?)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/blockchain/tx_cacher.go:90 +0x34 fp=0x1400013f7b0 sp=0x1400013f760 pc=0x103d0c504
github.com/klaytn/klaytn/blockchain.newTxSenderCacher.func1()
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/blockchain/tx_cacher.go:65 +0x28 fp=0x1400013f7d0 sp=0x1400013f7b0 pc=0x103d0c3d8
runtime.goexit()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/asm_arm64.s:1172 +0x4 fp=0x1400013f7d0 sp=0x1400013f7d0 pc=0x103001324
created by github.com/klaytn/klaytn/blockchain.newTxSenderCacher
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/blockchain/tx_cacher.go:65 +0x88

goroutine 42 [chan receive]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/proc.go:381 +0xe4 fp=0x1400013fea0 sp=0x1400013fe80 pc=0x102fcd8e4
runtime.chanrecv(0x14000134660, 0x1400013ffa0, 0x1)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/chan.go:583 +0x45c fp=0x1400013ff30 sp=0x1400013fea0 pc=0x102f9b47c
runtime.chanrecv2(0x0?, 0x0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/chan.go:447 +0x14 fp=0x1400013ff60 sp=0x1400013ff30 pc=0x102f9b004
github.com/klaytn/klaytn/blockchain.(*txSenderCacher).cache(0x0?)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/blockchain/tx_cacher.go:90 +0x34 fp=0x1400013ffb0 sp=0x1400013ff60 pc=0x103d0c504
github.com/klaytn/klaytn/blockchain.newTxSenderCacher.func1()
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/blockchain/tx_cacher.go:65 +0x28 fp=0x1400013ffd0 sp=0x1400013ffb0 pc=0x103d0c3d8
runtime.goexit()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/asm_arm64.s:1172 +0x4 fp=0x1400013ffd0 sp=0x1400013ffd0 pc=0x103001324
created by github.com/klaytn/klaytn/blockchain.newTxSenderCacher
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/blockchain/tx_cacher.go:65 +0x88

goroutine 43 [chan receive]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/proc.go:381 +0xe4 fp=0x14000073ea0 sp=0x14000073e80 pc=0x102fcd8e4
runtime.chanrecv(0x14000134660, 0x14000073fa0, 0x1)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/chan.go:583 +0x45c fp=0x14000073f30 sp=0x14000073ea0 pc=0x102f9b47c
runtime.chanrecv2(0x0?, 0x0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/chan.go:447 +0x14 fp=0x14000073f60 sp=0x14000073f30 pc=0x102f9b004
github.com/klaytn/klaytn/blockchain.(*txSenderCacher).cache(0x0?)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/blockchain/tx_cacher.go:90 +0x34 fp=0x14000073fb0 sp=0x14000073f60 pc=0x103d0c504
github.com/klaytn/klaytn/blockchain.newTxSenderCacher.func1()
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/blockchain/tx_cacher.go:65 +0x28 fp=0x14000073fd0 sp=0x14000073fb0 pc=0x103d0c3d8
runtime.goexit()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/asm_arm64.s:1172 +0x4 fp=0x14000073fd0 sp=0x14000073fd0 pc=0x103001324
created by github.com/klaytn/klaytn/blockchain.newTxSenderCacher
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/blockchain/tx_cacher.go:65 +0x88

goroutine 44 [chan receive]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/proc.go:381 +0xe4 fp=0x140000746a0 sp=0x14000074680 pc=0x102fcd8e4
runtime.chanrecv(0x14000134660, 0x140000747a0, 0x1)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/chan.go:583 +0x45c fp=0x14000074730 sp=0x140000746a0 pc=0x102f9b47c
runtime.chanrecv2(0x0?, 0x0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/chan.go:447 +0x14 fp=0x14000074760 sp=0x14000074730 pc=0x102f9b004
github.com/klaytn/klaytn/blockchain.(*txSenderCacher).cache(0x0?)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/blockchain/tx_cacher.go:90 +0x34 fp=0x140000747b0 sp=0x14000074760 pc=0x103d0c504
github.com/klaytn/klaytn/blockchain.newTxSenderCacher.func1()
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/blockchain/tx_cacher.go:65 +0x28 fp=0x140000747d0 sp=0x140000747b0 pc=0x103d0c3d8
runtime.goexit()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/asm_arm64.s:1172 +0x4 fp=0x140000747d0 sp=0x140000747d0 pc=0x103001324
created by github.com/klaytn/klaytn/blockchain.newTxSenderCacher
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/blockchain/tx_cacher.go:65 +0x88

goroutine 45 [chan receive]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/proc.go:381 +0xe4 fp=0x14000074ea0 sp=0x14000074e80 pc=0x102fcd8e4
runtime.chanrecv(0x14000134660, 0x14000074fa0, 0x1)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/chan.go:583 +0x45c fp=0x14000074f30 sp=0x14000074ea0 pc=0x102f9b47c
runtime.chanrecv2(0x0?, 0x0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/chan.go:447 +0x14 fp=0x14000074f60 sp=0x14000074f30 pc=0x102f9b004
github.com/klaytn/klaytn/blockchain.(*txSenderCacher).cache(0x0?)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/blockchain/tx_cacher.go:90 +0x34 fp=0x14000074fb0 sp=0x14000074f60 pc=0x103d0c504
github.com/klaytn/klaytn/blockchain.newTxSenderCacher.func1()
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/blockchain/tx_cacher.go:65 +0x28 fp=0x14000074fd0 sp=0x14000074fb0 pc=0x103d0c3d8
runtime.goexit()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/asm_arm64.s:1172 +0x4 fp=0x14000074fd0 sp=0x14000074fd0 pc=0x103001324
created by github.com/klaytn/klaytn/blockchain.newTxSenderCacher
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/blockchain/tx_cacher.go:65 +0x88

goroutine 46 [chan receive]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/proc.go:381 +0xe4 fp=0x140000756a0 sp=0x14000075680 pc=0x102fcd8e4
runtime.chanrecv(0x14000134660, 0x140000757a0, 0x1)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/chan.go:583 +0x45c fp=0x14000075730 sp=0x140000756a0 pc=0x102f9b47c
runtime.chanrecv2(0x0?, 0x0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/chan.go:447 +0x14 fp=0x14000075760 sp=0x14000075730 pc=0x102f9b004
github.com/klaytn/klaytn/blockchain.(*txSenderCacher).cache(0x0?)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/blockchain/tx_cacher.go:90 +0x34 fp=0x140000757b0 sp=0x14000075760 pc=0x103d0c504
github.com/klaytn/klaytn/blockchain.newTxSenderCacher.func1()
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/blockchain/tx_cacher.go:65 +0x28 fp=0x140000757d0 sp=0x140000757b0 pc=0x103d0c3d8
runtime.goexit()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/asm_arm64.s:1172 +0x4 fp=0x140000757d0 sp=0x140000757d0 pc=0x103001324
created by github.com/klaytn/klaytn/blockchain.newTxSenderCacher
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/blockchain/tx_cacher.go:65 +0x88

goroutine 47 [chan receive]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/proc.go:381 +0xe4 fp=0x14000075ea0 sp=0x14000075e80 pc=0x102fcd8e4
runtime.chanrecv(0x14000134660, 0x14000075fa0, 0x1)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/chan.go:583 +0x45c fp=0x14000075f30 sp=0x14000075ea0 pc=0x102f9b47c
runtime.chanrecv2(0x0?, 0x0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/chan.go:447 +0x14 fp=0x14000075f60 sp=0x14000075f30 pc=0x102f9b004
github.com/klaytn/klaytn/blockchain.(*txSenderCacher).cache(0x0?)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/blockchain/tx_cacher.go:90 +0x34 fp=0x14000075fb0 sp=0x14000075f60 pc=0x103d0c504
github.com/klaytn/klaytn/blockchain.newTxSenderCacher.func1()
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/blockchain/tx_cacher.go:65 +0x28 fp=0x14000075fd0 sp=0x14000075fb0 pc=0x103d0c3d8
runtime.goexit()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/asm_arm64.s:1172 +0x4 fp=0x14000075fd0 sp=0x14000075fd0 pc=0x103001324
created by github.com/klaytn/klaytn/blockchain.newTxSenderCacher
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/blockchain/tx_cacher.go:65 +0x88

goroutine 48 [chan receive]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/proc.go:381 +0xe4 fp=0x140002b5660 sp=0x140002b5640 pc=0x102fcd8e4
runtime.chanrecv(0x140001346c0, 0x140002b5798, 0x1)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/chan.go:583 +0x45c fp=0x140002b56f0 sp=0x140002b5660 pc=0x102f9b47c
runtime.chanrecv2(0x0?, 0x0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/chan.go:447 +0x14 fp=0x140002b5720 sp=0x140002b56f0 pc=0x102f9b004
github.com/rjeczalik/notify.(*recursiveTree).dispatch(0x140000548c0)
	/Users/ojeong-gyun/go/pkg/mod/github.com/rjeczalik/notify@v0.9.3/tree_recursive.go:125 +0x44 fp=0x140002b57b0 sp=0x140002b5720 pc=0x103d31744
github.com/rjeczalik/notify.newRecursiveTree.func1()
	/Users/ojeong-gyun/go/pkg/mod/github.com/rjeczalik/notify@v0.9.3/tree_recursive.go:119 +0x28 fp=0x140002b57d0 sp=0x140002b57b0 pc=0x103d316c8
runtime.goexit()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/asm_arm64.s:1172 +0x4 fp=0x140002b57d0 sp=0x140002b57d0 pc=0x103001324
created by github.com/rjeczalik/notify.newRecursiveTree
	/Users/ojeong-gyun/go/pkg/mod/github.com/rjeczalik/notify@v0.9.3/tree_recursive.go:119 +0x15c

goroutine 12 [select, locked to thread]:
runtime.gopark(0x140002b4fa0?, 0x2?, 0xa0?, 0xfb?, 0x140002b4f9c?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/proc.go:381 +0xe4 fp=0x140002b4e30 sp=0x140002b4e10 pc=0x102fcd8e4
runtime.selectgo(0x140002b4fa0, 0x140002b4f98, 0x0?, 0x0, 0x0?, 0x1)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/select.go:327 +0x690 fp=0x140002b4f50 sp=0x140002b4e30 pc=0x102fde700
runtime.ensureSigM.func1()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/signal_unix.go:1000 +0x190 fp=0x140002b4fd0 sp=0x140002b4f50 pc=0x102ff7db0
runtime.goexit()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/asm_arm64.s:1172 +0x4 fp=0x140002b4fd0 sp=0x140002b4fd0 pc=0x103001324
created by runtime.ensureSigM
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/signal_unix.go:983 +0xf4

goroutine 50 [syscall]:
runtime.sigNoteSleep(0x0)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/os_darwin.go:123 +0x20 fp=0x140002b0f90 sp=0x140002b0f50 pc=0x102fc7f50
os/signal.signal_recv()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/sigqueue.go:149 +0x2c fp=0x140002b0fb0 sp=0x140002b0f90 pc=0x102ffce5c
os/signal.loop()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/os/signal/signal_unix.go:23 +0x1c fp=0x140002b0fd0 sp=0x140002b0fb0 pc=0x1033ad80c
runtime.goexit()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/asm_arm64.s:1172 +0x4 fp=0x140002b0fd0 sp=0x140002b0fd0 pc=0x103001324
created by os/signal.Notify.func1.1
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/os/signal/signal.go:151 +0x2c

goroutine 14 [chan receive]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/proc.go:381 +0xe4 fp=0x140002b3e80 sp=0x140002b3e60 pc=0x102fcd8e4
runtime.chanrecv(0x14000839a40, 0x140002b3f88, 0x1)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/chan.go:583 +0x45c fp=0x140002b3f10 sp=0x140002b3e80 pc=0x102f9b47c
runtime.chanrecv2(0x0?, 0x0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/chan.go:447 +0x14 fp=0x140002b3f40 sp=0x140002b3f10 pc=0x102f9b004
github.com/klaytn/klaytn/storage/database.batchWriteWorker(0x0?)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/sharded_database.go:96 +0x80 fp=0x140002b3fb0 sp=0x140002b3f40 pc=0x103892ca0
github.com/klaytn/klaytn/storage/database.newShardedDB.func1()
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/sharded_database.go:84 +0x28 fp=0x140002b3fd0 sp=0x140002b3fb0 pc=0x103892be8
runtime.goexit()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/asm_arm64.s:1172 +0x4 fp=0x140002b3fd0 sp=0x140002b3fd0 pc=0x103001324
created by github.com/klaytn/klaytn/storage/database.newShardedDB
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/sharded_database.go:84 +0x1fc

goroutine 15 [chan receive]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/proc.go:381 +0xe4 fp=0x140002b5e80 sp=0x140002b5e60 pc=0x102fcd8e4
runtime.chanrecv(0x14000839a40, 0x140002b5f88, 0x1)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/chan.go:583 +0x45c fp=0x140002b5f10 sp=0x140002b5e80 pc=0x102f9b47c
runtime.chanrecv2(0x0?, 0x0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/chan.go:447 +0x14 fp=0x140002b5f40 sp=0x140002b5f10 pc=0x102f9b004
github.com/klaytn/klaytn/storage/database.batchWriteWorker(0x0?)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/sharded_database.go:96 +0x80 fp=0x140002b5fb0 sp=0x140002b5f40 pc=0x103892ca0
github.com/klaytn/klaytn/storage/database.newShardedDB.func1()
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/sharded_database.go:84 +0x28 fp=0x140002b5fd0 sp=0x140002b5fb0 pc=0x103892be8
runtime.goexit()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/asm_arm64.s:1172 +0x4 fp=0x140002b5fd0 sp=0x140002b5fd0 pc=0x103001324
created by github.com/klaytn/klaytn/storage/database.newShardedDB
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/sharded_database.go:84 +0x1fc

goroutine 16 [chan receive]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/proc.go:381 +0xe4 fp=0x14000139680 sp=0x14000139660 pc=0x102fcd8e4
runtime.chanrecv(0x14000839a40, 0x14000139788, 0x1)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/chan.go:583 +0x45c fp=0x14000139710 sp=0x14000139680 pc=0x102f9b47c
runtime.chanrecv2(0x0?, 0x0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/chan.go:447 +0x14 fp=0x14000139740 sp=0x14000139710 pc=0x102f9b004
github.com/klaytn/klaytn/storage/database.batchWriteWorker(0x0?)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/sharded_database.go:96 +0x80 fp=0x140001397b0 sp=0x14000139740 pc=0x103892ca0
github.com/klaytn/klaytn/storage/database.newShardedDB.func1()
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/sharded_database.go:84 +0x28 fp=0x140001397d0 sp=0x140001397b0 pc=0x103892be8
runtime.goexit()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/asm_arm64.s:1172 +0x4 fp=0x140001397d0 sp=0x140001397d0 pc=0x103001324
created by github.com/klaytn/klaytn/storage/database.newShardedDB
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/sharded_database.go:84 +0x1fc

goroutine 22 [chan receive]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/proc.go:381 +0xe4 fp=0x14000088e80 sp=0x14000088e60 pc=0x102fcd8e4
runtime.chanrecv(0x14000839a40, 0x14000088f88, 0x1)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/chan.go:583 +0x45c fp=0x14000088f10 sp=0x14000088e80 pc=0x102f9b47c
runtime.chanrecv2(0x0?, 0x0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/chan.go:447 +0x14 fp=0x14000088f40 sp=0x14000088f10 pc=0x102f9b004
github.com/klaytn/klaytn/storage/database.batchWriteWorker(0x0?)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/sharded_database.go:96 +0x80 fp=0x14000088fb0 sp=0x14000088f40 pc=0x103892ca0
github.com/klaytn/klaytn/storage/database.newShardedDB.func1()
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/sharded_database.go:84 +0x28 fp=0x14000088fd0 sp=0x14000088fb0 pc=0x103892be8
runtime.goexit()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/asm_arm64.s:1172 +0x4 fp=0x14000088fd0 sp=0x14000088fd0 pc=0x103001324
created by github.com/klaytn/klaytn/storage/database.newShardedDB
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/sharded_database.go:84 +0x1fc

goroutine 23 [chan receive]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/proc.go:381 +0xe4 fp=0x140002af680 sp=0x140002af660 pc=0x102fcd8e4
runtime.chanrecv(0x14000d3c600, 0x140002af788, 0x1)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/chan.go:583 +0x45c fp=0x140002af710 sp=0x140002af680 pc=0x102f9b47c
runtime.chanrecv2(0x0?, 0x0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/chan.go:447 +0x14 fp=0x140002af740 sp=0x140002af710 pc=0x102f9b004
github.com/klaytn/klaytn/storage/database.batchWriteWorker(0x0?)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/sharded_database.go:96 +0x80 fp=0x140002af7b0 sp=0x140002af740 pc=0x103892ca0
github.com/klaytn/klaytn/storage/database.newShardedDB.func1()
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/sharded_database.go:84 +0x28 fp=0x140002af7d0 sp=0x140002af7b0 pc=0x103892be8
runtime.goexit()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/asm_arm64.s:1172 +0x4 fp=0x140002af7d0 sp=0x140002af7d0 pc=0x103001324
created by github.com/klaytn/klaytn/storage/database.newShardedDB
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/sharded_database.go:84 +0x1fc

goroutine 66 [chan receive]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/proc.go:381 +0xe4 fp=0x140002b2680 sp=0x140002b2660 pc=0x102fcd8e4
runtime.chanrecv(0x14000d3c600, 0x140002b2788, 0x1)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/chan.go:583 +0x45c fp=0x140002b2710 sp=0x140002b2680 pc=0x102f9b47c
runtime.chanrecv2(0x0?, 0x0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/chan.go:447 +0x14 fp=0x140002b2740 sp=0x140002b2710 pc=0x102f9b004
github.com/klaytn/klaytn/storage/database.batchWriteWorker(0x0?)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/sharded_database.go:96 +0x80 fp=0x140002b27b0 sp=0x140002b2740 pc=0x103892ca0
github.com/klaytn/klaytn/storage/database.newShardedDB.func1()
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/sharded_database.go:84 +0x28 fp=0x140002b27d0 sp=0x140002b27b0 pc=0x103892be8
runtime.goexit()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/asm_arm64.s:1172 +0x4 fp=0x140002b27d0 sp=0x140002b27d0 pc=0x103001324
created by github.com/klaytn/klaytn/storage/database.newShardedDB
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/sharded_database.go:84 +0x1fc

goroutine 67 [chan receive]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/proc.go:381 +0xe4 fp=0x140002b2e80 sp=0x140002b2e60 pc=0x102fcd8e4
runtime.chanrecv(0x14000d3c600, 0x140002b2f88, 0x1)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/chan.go:583 +0x45c fp=0x140002b2f10 sp=0x140002b2e80 pc=0x102f9b47c
runtime.chanrecv2(0x0?, 0x0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/chan.go:447 +0x14 fp=0x140002b2f40 sp=0x140002b2f10 pc=0x102f9b004
github.com/klaytn/klaytn/storage/database.batchWriteWorker(0x0?)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/sharded_database.go:96 +0x80 fp=0x140002b2fb0 sp=0x140002b2f40 pc=0x103892ca0
github.com/klaytn/klaytn/storage/database.newShardedDB.func1()
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/sharded_database.go:84 +0x28 fp=0x140002b2fd0 sp=0x140002b2fb0 pc=0x103892be8
runtime.goexit()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/asm_arm64.s:1172 +0x4 fp=0x140002b2fd0 sp=0x140002b2fd0 pc=0x103001324
created by github.com/klaytn/klaytn/storage/database.newShardedDB
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/sharded_database.go:84 +0x1fc

goroutine 68 [chan receive]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/proc.go:381 +0xe4 fp=0x140002b3680 sp=0x140002b3660 pc=0x102fcd8e4
runtime.chanrecv(0x14000d3c600, 0x140002b3788, 0x1)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/chan.go:583 +0x45c fp=0x140002b3710 sp=0x140002b3680 pc=0x102f9b47c
runtime.chanrecv2(0x0?, 0x0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/chan.go:447 +0x14 fp=0x140002b3740 sp=0x140002b3710 pc=0x102f9b004
github.com/klaytn/klaytn/storage/database.batchWriteWorker(0x0?)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/sharded_database.go:96 +0x80 fp=0x140002b37b0 sp=0x140002b3740 pc=0x103892ca0
github.com/klaytn/klaytn/storage/database.newShardedDB.func1()
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/sharded_database.go:84 +0x28 fp=0x140002b37d0 sp=0x140002b37b0 pc=0x103892be8
runtime.goexit()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/asm_arm64.s:1172 +0x4 fp=0x140002b37d0 sp=0x140002b37d0 pc=0x103001324
created by github.com/klaytn/klaytn/storage/database.newShardedDB
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/sharded_database.go:84 +0x1fc

goroutine 24 [chan receive]:
runtime.gopark(0x1400000000f?, 0x1033acca0?, 0xa8?, 0x36?, 0x1033acda4?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/proc.go:381 +0xe4 fp=0x14000863e70 sp=0x14000863e50 pc=0x102fcd8e4
runtime.chanrecv(0x14000b5c060, 0x0, 0x1)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/chan.go:583 +0x45c fp=0x14000863f00 sp=0x14000863e70 pc=0x102f9b47c
runtime.chanrecv1(0x14000b5c060?, 0x14000863fa0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/chan.go:442 +0x14 fp=0x14000863f30 sp=0x14000863f00 pc=0x102f9afe4
github.com/klaytn/klaytn/storage/database.(*databaseManager).StartDBMigration.func1()
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/db_migration.go:107 +0xb0 fp=0x14000863fd0 sp=0x14000863f30 pc=0x1038856d0
runtime.goexit()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/asm_arm64.s:1172 +0x4 fp=0x14000863fd0 sp=0x14000863fd0 pc=0x103001324
created by github.com/klaytn/klaytn/storage/database.(*databaseManager).StartDBMigration
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/db_migration.go:103 +0x84

goroutine 25 [runnable]:
runtime.cgocall(0x104165964, 0x14000d75da8)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/cgocall.go:157 +0x54 fp=0x14000d75d70 sp=0x14000d75d30 pc=0x102f98884
github.com/linxGnu/grocksdb._Cfunc_rocksdb_iter_next(0x60000221c0d0)
	_cgo_gotypes.go:3289 +0x34 fp=0x14000d75da0 sp=0x14000d75d70 pc=0x103776264
github.com/linxGnu/grocksdb.(*Iterator).Next.func1(0x1400007e1e0?)
	/Users/ojeong-gyun/go/pkg/mod/github.com/linx!gnu/grocksdb@v1.7.17-0.20230425035833-f16fdbe0eb3c/iterator.go:87 +0x50 fp=0x14000d75de0 sp=0x14000d75da0 pc=0x1037977b0
github.com/linxGnu/grocksdb.(*Iterator).Next(0x1400001a000?)
	/Users/ojeong-gyun/go/pkg/mod/github.com/linx!gnu/grocksdb@v1.7.17-0.20230425035833-f16fdbe0eb3c/iterator.go:87 +0x1c fp=0x14000d75e00 sp=0x14000d75de0 pc=0x10379773c
github.com/klaytn/klaytn/storage/database.(*rdbIter).Next(0x140001242a0)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/rocksdb_database.go:227 +0x38 fp=0x14000d75e30 sp=0x14000d75e00 pc=0x103890368
github.com/klaytn/klaytn/storage/database.copyDB({0x1041e7cb7, 0x4}, {0x1049a8c58?, 0x140000ea630?}, {0x1049a8c58, 0x140003a2ab0}, 0x0?)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/db_migration.go:45 +0xf0 fp=0x14000d75f70 sp=0x14000d75e30 pc=0x103884420
github.com/klaytn/klaytn/storage/database.(*databaseManager).StartDBMigration.func2()
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/db_migration.go:143 +0x60 fp=0x14000d75fd0 sp=0x14000d75f70 pc=0x1038855e0
runtime.goexit()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/asm_arm64.s:1172 +0x4 fp=0x14000d75fd0 sp=0x14000d75fd0 pc=0x103001324
created by github.com/klaytn/klaytn/storage/database.(*databaseManager).StartDBMigration
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/db_migration.go:142 +0x484

goroutine 26 [runnable]:
runtime.gcTrigger.test({0x0?, 0x0?, 0x0?})
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/mgc.go:547 +0x150 fp=0x14000867c10 sp=0x14000867c10 pc=0x102fad6c0
runtime.mallocgc(0xd0, 0x104895f60, 0x1)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/malloc.go:1171 +0x7c0 fp=0x14000867c80 sp=0x14000867c10 pc=0x102fa1d70
runtime.newobject(0x2?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/malloc.go:1254 +0x2c fp=0x14000867cb0 sp=0x14000867c80 pc=0x102fa1fbc
github.com/klaytn/klaytn/log.(*log15Logger).write(0x1400007e1e0, {0x1041f55da, 0xb}, 0x3, {0x1400086c000, 0x6, 0x6})
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/log/log15_logger.go:107 +0xe8 fp=0x14000867de0 sp=0x14000867cb0 pc=0x1032c60e8
github.com/klaytn/klaytn/log.(*log15Logger).Info(0x9ee?, {0x1041f55da?, 0x105854600?}, {0x1400086c000?, 0x14000d0e080?, 0x8?})
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/log/log15_logger.go:148 +0x34 fp=0x14000867e30 sp=0x14000867de0 pc=0x1032c6734
github.com/klaytn/klaytn/storage/database.copyDB({0x1041eb191, 0x6}, {0x1049a8c58?, 0x140000ea6c0?}, {0x1049a8c58, 0x140003a2b40}, 0x0?)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/db_migration.go:69 +0x410 fp=0x14000867f70 sp=0x14000867e30 pc=0x103884740
github.com/klaytn/klaytn/storage/database.(*databaseManager).StartDBMigration.func2()
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/db_migration.go:143 +0x60 fp=0x14000867fd0 sp=0x14000867f70 pc=0x1038855e0
runtime.goexit()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/asm_arm64.s:1172 +0x4 fp=0x14000867fd0 sp=0x14000867fd0 pc=0x103001324
created by github.com/klaytn/klaytn/storage/database.(*databaseManager).StartDBMigration
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/db_migration.go:142 +0x484

goroutine 27 [sync.Mutex.Lock]:
runtime.gopark(0x140005bd728?, 0x102feb81c?, 0x58?, 0xd7?, 0x102feb154?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/proc.go:381 +0xe4 fp=0x140005bd710 sp=0x140005bd6f0 pc=0x102fcd8e4
runtime.goparkunlock(...)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/proc.go:387
runtime.semacquire1(0x14000beada4, 0x7d?, 0x3, 0x1, 0xe?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/sema.go:160 +0x21c fp=0x140005bd770 sp=0x140005bd710 pc=0x102fdf62c
sync.runtime_SemacquireMutex(0x0?, 0x0?, 0x0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/sema.go:77 +0x28 fp=0x140005bd7b0 sp=0x140005bd770 pc=0x102ffc6e8
sync.(*Mutex).lockSlow(0x14000beada0)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/sync/mutex.go:171 +0x178 fp=0x140005bd800 sp=0x140005bd7b0 pc=0x10301cfb8
sync.(*Mutex).Lock(...)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/sync/mutex.go:90
github.com/klaytn/klaytn/log.SyncHandler.func1(0x104d4642b?)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/log/handler.go:61 +0xc0 fp=0x140005bd870 sp=0x140005bd800 pc=0x1032c3e40
github.com/klaytn/klaytn/log.funcHandler.Log(0x1c00b1?, 0xbd5?)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/log/handler.go:36 +0x28 fp=0x140005bd890 sp=0x140005bd870 pc=0x1032c3af8
github.com/klaytn/klaytn/log.LazyHandler.func1(0x1400027a270)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/log/handler.go:305 +0x2c0 fp=0x140005bd980 sp=0x140005bd890 pc=0x1032c43c0
github.com/klaytn/klaytn/log.funcHandler.Log(0x0?, 0x105887400?)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/log/handler.go:36 +0x28 fp=0x140005bd9a0 sp=0x140005bd980 pc=0x1032c3af8
github.com/klaytn/klaytn/log.(*GlogHandler).Log(0x140003fe000, 0x1400027a270)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/log/handler_glog.go:201 +0x3c8 fp=0x140005bdc30 sp=0x140005bd9a0 pc=0x1032c54a8
github.com/klaytn/klaytn/log.(*swapHandler).Log(0x140005bdca8?, 0x1032c60e8?)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/log/handler_go14.go:15 +0x78 fp=0x140005bdc70 sp=0x140005bdc30 pc=0x1032c56f8
github.com/klaytn/klaytn/log.(*swapHandler).Log(0x2?, 0x2?)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/log/handler_go14.go:15 +0x78 fp=0x140005bdcb0 sp=0x140005bdc70 pc=0x1032c56f8
github.com/klaytn/klaytn/log.(*log15Logger).write(0x1400007e1e0, {0x1041f55da, 0xb}, 0x3, {0x140005c0000, 0x6, 0x6})
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/log/log15_logger.go:107 +0x274 fp=0x140005bdde0 sp=0x140005bdcb0 pc=0x1032c6274
github.com/klaytn/klaytn/log.(*log15Logger).Info(0x109a?, {0x1041f55da?, 0x105854600?}, {0x140005c0000?, 0x140006e6080?, 0x2?})
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/log/log15_logger.go:148 +0x34 fp=0x140005bde30 sp=0x140005bdde0 pc=0x1032c6734
github.com/klaytn/klaytn/storage/database.copyDB({0x1041e794f, 0x4}, {0x1049a8c58?, 0x140000ea750?}, {0x1049a8c58, 0x140003a2bd0}, 0x0?)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/db_migration.go:69 +0x410 fp=0x140005bdf70 sp=0x140005bde30 pc=0x103884740
github.com/klaytn/klaytn/storage/database.(*databaseManager).StartDBMigration.func2()
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/db_migration.go:143 +0x60 fp=0x140005bdfd0 sp=0x140005bdf70 pc=0x1038855e0
runtime.goexit()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/asm_arm64.s:1172 +0x4 fp=0x140005bdfd0 sp=0x140005bdfd0 pc=0x103001324
created by github.com/klaytn/klaytn/storage/database.(*databaseManager).StartDBMigration
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/db_migration.go:142 +0x484

goroutine 28 [sync.Mutex.Lock]:
runtime.gopark(0x140005b9728?, 0x102feb81c?, 0x58?, 0x97?, 0x102feb154?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/proc.go:381 +0xe4 fp=0x140005b9710 sp=0x140005b96f0 pc=0x102fcd8e4
runtime.goparkunlock(...)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/proc.go:387
runtime.semacquire1(0x14000beada4, 0x7d?, 0x3, 0x1, 0xd5?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/sema.go:160 +0x21c fp=0x140005b9770 sp=0x140005b9710 pc=0x102fdf62c
sync.runtime_SemacquireMutex(0x0?, 0x0?, 0x0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/sema.go:77 +0x28 fp=0x140005b97b0 sp=0x140005b9770 pc=0x102ffc6e8
sync.(*Mutex).lockSlow(0x14000beada0)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/sync/mutex.go:171 +0x178 fp=0x140005b9800 sp=0x140005b97b0 pc=0x10301cfb8
sync.(*Mutex).Lock(...)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/sync/mutex.go:90
github.com/klaytn/klaytn/log.SyncHandler.func1(0x104d4642b?)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/log/handler.go:61 +0xc0 fp=0x140005b9870 sp=0x140005b9800 pc=0x1032c3e40
github.com/klaytn/klaytn/log.funcHandler.Log(0x1c00b1?, 0xbd5?)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/log/handler.go:36 +0x28 fp=0x140005b9890 sp=0x140005b9870 pc=0x1032c3af8
github.com/klaytn/klaytn/log.LazyHandler.func1(0x1400064a000)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/log/handler.go:305 +0x2c0 fp=0x140005b9980 sp=0x140005b9890 pc=0x1032c43c0
github.com/klaytn/klaytn/log.funcHandler.Log(0x0?, 0x105887400?)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/log/handler.go:36 +0x28 fp=0x140005b99a0 sp=0x140005b9980 pc=0x1032c3af8
github.com/klaytn/klaytn/log.(*GlogHandler).Log(0x140003fe000, 0x1400064a000)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/log/handler_glog.go:201 +0x3c8 fp=0x140005b9c30 sp=0x140005b99a0 pc=0x1032c54a8
github.com/klaytn/klaytn/log.(*swapHandler).Log(0x140005b9ca8?, 0x1032c60e8?)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/log/handler_go14.go:15 +0x78 fp=0x140005b9c70 sp=0x140005b9c30 pc=0x1032c56f8
github.com/klaytn/klaytn/log.(*swapHandler).Log(0x2?, 0x2?)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/log/handler_go14.go:15 +0x78 fp=0x140005b9cb0 sp=0x140005b9c70 pc=0x1032c56f8
github.com/klaytn/klaytn/log.(*log15Logger).write(0x1400007e1e0, {0x1041f55da, 0xb}, 0x3, {0x14000646000, 0x6, 0x6})
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/log/log15_logger.go:107 +0x274 fp=0x140005b9de0 sp=0x140005b9cb0 pc=0x1032c6274
github.com/klaytn/klaytn/log.(*log15Logger).Info(0x1bd5?, {0x1041f55da?, 0x105854600?}, {0x14000646000?, 0x140004442f0?, 0x1?})
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/log/log15_logger.go:148 +0x34 fp=0x140005b9e30 sp=0x140005b9de0 pc=0x1032c6734
github.com/klaytn/klaytn/storage/database.copyDB({0x1041f0f93, 0x8}, {0x1049a8c58?, 0x140000ea7e0?}, {0x1049a8c58, 0x140003a2c60}, 0x0?)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/db_migration.go:69 +0x410 fp=0x140005b9f70 sp=0x140005b9e30 pc=0x103884740
github.com/klaytn/klaytn/storage/database.(*databaseManager).StartDBMigration.func2()
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/db_migration.go:143 +0x60 fp=0x140005b9fd0 sp=0x140005b9f70 pc=0x1038855e0
runtime.goexit()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/asm_arm64.s:1172 +0x4 fp=0x140005b9fd0 sp=0x140005b9fd0 pc=0x103001324
created by github.com/klaytn/klaytn/storage/database.(*databaseManager).StartDBMigration
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/db_migration.go:142 +0x484

goroutine 29 [runnable]:
github.com/klaytn/klaytn/storage/database.(*rocksDB).NewIterator(0x140000ea990, {0x0, 0x0, 0x0}, {0x0, 0x0, 0x0?})
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/rocksdb_database.go:270 +0x180 fp=0x14000015ba0 sp=0x14000015ba0 pc=0x103890730
github.com/klaytn/klaytn/storage/database.(*shardedDB).NewParallelIterator(0x1400084a040, {0x10499d7e0?, 0x140001a4010?}, {0x0, 0x0, 0x0}, {0x0, 0x0, 0x0}, 0x0)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/sharded_database.go:355 +0x25c fp=0x14000015d00 sp=0x14000015ba0 pc=0x1038943ec
github.com/klaytn/klaytn/storage/database.(*shardedDB).NewIterator(0x0?, {0x0?, 0x0?, 0x0?}, {0x0?, 0x0?, 0x0?})
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/sharded_database.go:184 +0x60 fp=0x14000015e30 sp=0x14000015d00 pc=0x1038931e0
github.com/klaytn/klaytn/storage/database.copyDB({0x1041f2f0c, 0x9}, {0x1049a8cc0?, 0x1400084a040?}, {0x1049a8cc0, 0x1400084aa80}, 0x0?)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/db_migration.go:37 +0x6c fp=0x14000015f70 sp=0x14000015e30 pc=0x10388439c
github.com/klaytn/klaytn/storage/database.(*databaseManager).StartDBMigration.func2()
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/db_migration.go:143 +0x60 fp=0x14000015fd0 sp=0x14000015f70 pc=0x1038855e0
runtime.goexit()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/asm_arm64.s:1172 +0x4 fp=0x14000015fd0 sp=0x14000015fd0 pc=0x103001324
created by github.com/klaytn/klaytn/storage/database.(*databaseManager).StartDBMigration
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/db_migration.go:142 +0x484

goroutine 30 [runnable]:
runtime.gopark(0x14000864728?, 0x102feb81c?, 0x58?, 0x47?, 0x102feb154?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/proc.go:381 +0xe4 fp=0x14000864710 sp=0x140008646f0 pc=0x102fcd8e4
runtime.goparkunlock(...)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/proc.go:387
runtime.semacquire1(0x14000beada4, 0x7d?, 0x3, 0x1, 0x1b?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/sema.go:160 +0x21c fp=0x14000864770 sp=0x14000864710 pc=0x102fdf62c
sync.runtime_SemacquireMutex(0x0?, 0x0?, 0x0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/sema.go:77 +0x28 fp=0x140008647b0 sp=0x14000864770 pc=0x102ffc6e8
sync.(*Mutex).lockSlow(0x14000beada0)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/sync/mutex.go:171 +0x178 fp=0x14000864800 sp=0x140008647b0 pc=0x10301cfb8
sync.(*Mutex).Lock(...)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/sync/mutex.go:90
github.com/klaytn/klaytn/log.SyncHandler.func1(0x104d4642b?)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/log/handler.go:61 +0xc0 fp=0x14000864870 sp=0x14000864800 pc=0x1032c3e40
github.com/klaytn/klaytn/log.funcHandler.Log(0x1c00b1?, 0xbd5?)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/log/handler.go:36 +0x28 fp=0x14000864890 sp=0x14000864870 pc=0x1032c3af8
github.com/klaytn/klaytn/log.LazyHandler.func1(0x140003a5450)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/log/handler.go:305 +0x2c0 fp=0x14000864980 sp=0x14000864890 pc=0x1032c43c0
github.com/klaytn/klaytn/log.funcHandler.Log(0x0?, 0x0?)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/log/handler.go:36 +0x28 fp=0x140008649a0 sp=0x14000864980 pc=0x1032c3af8
github.com/klaytn/klaytn/log.(*GlogHandler).Log(0x140003fe000, 0x140003a5450)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/log/handler_glog.go:201 +0x3c8 fp=0x14000864c30 sp=0x140008649a0 pc=0x1032c54a8
github.com/klaytn/klaytn/log.(*swapHandler).Log(0x14000864ca8?, 0x1032c60e8?)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/log/handler_go14.go:15 +0x78 fp=0x14000864c70 sp=0x14000864c30 pc=0x1032c56f8
github.com/klaytn/klaytn/log.(*swapHandler).Log(0x2?, 0x2?)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/log/handler_go14.go:15 +0x78 fp=0x14000864cb0 sp=0x14000864c70 pc=0x1032c56f8
github.com/klaytn/klaytn/log.(*log15Logger).write(0x1400007e1e0, {0x1041f55da, 0xb}, 0x3, {0x14000b5c120, 0x6, 0x6})
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/log/log15_logger.go:107 +0x274 fp=0x14000864de0 sp=0x14000864cb0 pc=0x1032c6274
github.com/klaytn/klaytn/log.(*log15Logger).Info(0x99a?, {0x1041f55da?, 0x105854600?}, {0x14000b5c120?, 0x14000b58060?, 0x27?})
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/log/log15_logger.go:148 +0x34 fp=0x14000864e30 sp=0x14000864de0 pc=0x1032c6734
github.com/klaytn/klaytn/storage/database.copyDB({0x1041f12b3, 0x8}, {0x1049a8c58?, 0x140003a2870?}, {0x1049a8c58, 0x140003a2d80}, 0x0?)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/db_migration.go:69 +0x410 fp=0x14000864f70 sp=0x14000864e30 pc=0x103884740
github.com/klaytn/klaytn/storage/database.(*databaseManager).StartDBMigration.func2()
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/db_migration.go:143 +0x60 fp=0x14000864fd0 sp=0x14000864f70 pc=0x1038855e0
runtime.goexit()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/asm_arm64.s:1172 +0x4 fp=0x14000864fd0 sp=0x14000864fd0 pc=0x103001324
created by github.com/klaytn/klaytn/storage/database.(*databaseManager).StartDBMigration
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/db_migration.go:142 +0x484

goroutine 31 [sync.Mutex.Lock]:
runtime.gopark(0x14000865728?, 0x102feb81c?, 0x58?, 0x57?, 0x102feb154?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/proc.go:381 +0xe4 fp=0x14000865710 sp=0x140008656f0 pc=0x102fcd8e4
runtime.goparkunlock(...)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/proc.go:387
runtime.semacquire1(0x14000beada4, 0x7d?, 0x3, 0x1, 0x4f?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/sema.go:160 +0x21c fp=0x14000865770 sp=0x14000865710 pc=0x102fdf62c
sync.runtime_SemacquireMutex(0x0?, 0x0?, 0x0?)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/sema.go:77 +0x28 fp=0x140008657b0 sp=0x14000865770 pc=0x102ffc6e8
sync.(*Mutex).lockSlow(0x14000beada0)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/sync/mutex.go:171 +0x178 fp=0x14000865800 sp=0x140008657b0 pc=0x10301cfb8
sync.(*Mutex).Lock(...)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/sync/mutex.go:90
github.com/klaytn/klaytn/log.SyncHandler.func1(0x104d4642b?)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/log/handler.go:61 +0xc0 fp=0x14000865870 sp=0x14000865800 pc=0x1032c3e40
github.com/klaytn/klaytn/log.funcHandler.Log(0x1c0081?, 0xbd5?)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/log/handler.go:36 +0x28 fp=0x14000865890 sp=0x14000865870 pc=0x1032c3af8
github.com/klaytn/klaytn/log.LazyHandler.func1(0x140003a5e10)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/log/handler.go:305 +0x2c0 fp=0x14000865980 sp=0x14000865890 pc=0x1032c43c0
github.com/klaytn/klaytn/log.funcHandler.Log(0x0?, 0x0?)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/log/handler.go:36 +0x28 fp=0x140008659a0 sp=0x14000865980 pc=0x1032c3af8
github.com/klaytn/klaytn/log.(*GlogHandler).Log(0x140003fe000, 0x140003a5e10)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/log/handler_glog.go:201 +0x3c8 fp=0x14000865c30 sp=0x140008659a0 pc=0x1032c54a8
github.com/klaytn/klaytn/log.(*swapHandler).Log(0x14000865ca8?, 0x1032c60e8?)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/log/handler_go14.go:15 +0x78 fp=0x14000865c70 sp=0x14000865c30 pc=0x1032c56f8
github.com/klaytn/klaytn/log.(*swapHandler).Log(0x2?, 0x2?)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/log/handler_go14.go:15 +0x78 fp=0x14000865cb0 sp=0x14000865c70 pc=0x1032c56f8
github.com/klaytn/klaytn/log.(*log15Logger).write(0x1400007e1e0, {0x1042060f6, 0x13}, 0x3, {0x14000b5c1e0, 0x6, 0x6})
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/log/log15_logger.go:107 +0x274 fp=0x14000865de0 sp=0x14000865cb0 pc=0x1032c6274
github.com/klaytn/klaytn/log.(*log15Logger).Info(0xf44e?, {0x1042060f6?, 0x105854600?}, {0x14000b5c1e0?, 0x0?, 0x0?})
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/log/log15_logger.go:148 +0x34 fp=0x14000865e30 sp=0x14000865de0 pc=0x1032c6734
github.com/klaytn/klaytn/storage/database.copyDB({0x1041f96c6, 0xd}, {0x1049a8c58?, 0x140003a2900?}, {0x1049a8c58, 0x140003a2e10}, 0x0?)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/db_migration.go:87 +0x910 fp=0x14000865f70 sp=0x14000865e30 pc=0x103884c40
github.com/klaytn/klaytn/storage/database.(*databaseManager).StartDBMigration.func2()
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/db_migration.go:143 +0x60 fp=0x14000865fd0 sp=0x14000865f70 pc=0x1038855e0
runtime.goexit()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/asm_arm64.s:1172 +0x4 fp=0x14000865fd0 sp=0x14000865fd0 pc=0x103001324
created by github.com/klaytn/klaytn/storage/database.(*databaseManager).StartDBMigration
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/db_migration.go:142 +0x484

goroutine 51 [runnable]:
runtime.cgocall(0x104165b14, 0x140002b0648)
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/cgocall.go:157 +0x54 fp=0x140002b0610 sp=0x140002b05d0 pc=0x102f98884
github.com/linxGnu/grocksdb._Cfunc_rocksdb_iter_valid(0x600002210340)
	_cgo_gotypes.go:3385 +0x38 fp=0x140002b0640 sp=0x140002b0610 pc=0x103776658
github.com/linxGnu/grocksdb.(*Iterator).ValidForPrefix.func1(0x600002210340?)
	/Users/ojeong-gyun/go/pkg/mod/github.com/linx!gnu/grocksdb@v1.7.17-0.20230425035833-f16fdbe0eb3c/iterator.go:45 +0x50 fp=0x140002b0680 sp=0x140002b0640 pc=0x103797300
github.com/linxGnu/grocksdb.(*Iterator).ValidForPrefix(0x14000a7c060?, {0x0, 0x0, 0x0?})
	/Users/ojeong-gyun/go/pkg/mod/github.com/linx!gnu/grocksdb@v1.7.17-0.20230425035833-f16fdbe0eb3c/iterator.go:45 +0x28 fp=0x140002b06c0 sp=0x140002b0680 pc=0x1037971e8
github.com/klaytn/klaytn/storage/database.(*rdbIter).Next(0x1400044c990?)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/rocksdb_database.go:229 +0x54 fp=0x140002b06f0 sp=0x140002b06c0 pc=0x103890384
github.com/klaytn/klaytn/storage/database.(*shardedDBParallelIterator).runChanWorker(0x14000a7c000, {0x10499d7a8, 0x14000742000}, {0x1049a0120, 0x1400044c990}, 0x0?)
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/sharded_database.go:373 +0x8c fp=0x140002b0790 sp=0x140002b06f0 pc=0x1038947cc
github.com/klaytn/klaytn/storage/database.(*shardedDB).NewParallelIterator.func1()
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/sharded_database.go:361 +0x3c fp=0x140002b07d0 sp=0x140002b0790 pc=0x10389470c
runtime.goexit()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/asm_arm64.s:1172 +0x4 fp=0x140002b07d0 sp=0x140002b07d0 pc=0x103001324
created by github.com/klaytn/klaytn/storage/database.(*shardedDB).NewParallelIterator
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/sharded_database.go:361 +0x204

goroutine 52 [runnable]:
github.com/klaytn/klaytn/storage/database.(*shardedDB).NewParallelIterator.func1()
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/sharded_database.go:361 fp=0x1400016d7d0 sp=0x1400016d7d0 pc=0x1038946d0
runtime.goexit()
	/opt/homebrew/Cellar/go/1.20.3/libexec/src/runtime/asm_arm64.s:1172 +0x4 fp=0x1400016d7d0 sp=0x1400016d7d0 pc=0x103001324
created by github.com/klaytn/klaytn/storage/database.(*shardedDB).NewParallelIterator
	/Users/ojeong-gyun/go/src/github.com/klaytn/klaytn/storage/database/sharded_database.go:361 +0x204

Performance test (1-writer / n-readers)

  • GFS2 - not avaliable
    • custom setting / setting guide from Megazone was failed
system log
Aug  1 16:25:39 ip-10-117-2-12 kernel: INFO: task ken:17417 blocked for more than 120 seconds.
Aug  1 16:25:39 ip-10-117-2-12 kernel:      Not tainted 5.10.184-175.749.amzn2.x86_64 #1
Aug  1 16:25:39 ip-10-117-2-12 kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
Aug  1 16:25:39 ip-10-117-2-12 kernel: task:ken             state:D stack:    0 pid:17417 ppid:     1 flags:0x00000080
Aug  1 16:25:39 ip-10-117-2-12 kernel: Call Trace:
Aug  1 16:25:40 ip-10-117-2-12 kernel: __schedule+0x1f9/0x660
Aug  1 16:25:40 ip-10-117-2-12 kernel: ? out_of_line_wait_on_bit_lock+0xb0/0xb0
Aug  1 16:25:40 ip-10-117-2-12 kernel: schedule+0x46/0xb0
Aug  1 16:25:40 ip-10-117-2-12 kernel: bit_wait+0xd/0x60
Aug  1 16:25:40 ip-10-117-2-12 kernel: __wait_on_bit+0x2a/0x90
Aug  1 16:25:40 ip-10-117-2-12 kernel: out_of_line_wait_on_bit+0x92/0xb0
Aug  1 16:25:40 ip-10-117-2-12 kernel: ? var_wake_function+0x30/0x30
Aug  1 16:25:40 ip-10-117-2-12 kernel: gfs2_glock_wait+0x34/0x70 [gfs2]
Aug  1 16:25:40 ip-10-117-2-12 kernel: evict_should_delete.constprop.0+0x71/0x1e0 [gfs2]
Aug  1 16:25:40 ip-10-117-2-12 kernel: gfs2_evict_inode+0x79/0x400 [gfs2]
Aug  1 16:25:40 ip-10-117-2-12 kernel: ? evict_should_delete.constprop.0+0x69/0x1e0 [gfs2]
Aug  1 16:25:40 ip-10-117-2-12 kernel: evict+0xd1/0x1a0
Aug  1 16:25:40 ip-10-117-2-12 kernel: __dentry_kill+0xe4/0x180
Aug  1 16:25:40 ip-10-117-2-12 kernel: dentry_kill+0x4d/0x1a0
Aug  1 16:25:40 ip-10-117-2-12 kernel: dput+0x106/0x150
Aug  1 16:25:40 ip-10-117-2-12 kernel: __fput+0xe5/0x240
Aug  1 16:25:40 ip-10-117-2-12 kernel: task_work_run+0x5f/0x90
Aug  1 16:25:40 ip-10-117-2-12 kernel: exit_to_user_mode_loop+0x118/0x120
Aug  1 16:25:40 ip-10-117-2-12 kernel: exit_to_user_mode_prepare+0x6e/0x80
Aug  1 16:25:40 ip-10-117-2-12 kernel: syscall_exit_to_user_mode+0x22/0x140
Aug  1 16:25:40 ip-10-117-2-12 kernel: entry_SYSCALL_64_after_hwframe+0x61/0xc6
Aug  1 16:25:40 ip-10-117-2-12 kernel: RIP: 0033:0x7fbbe8c5ce2b
Aug  1 16:25:40 ip-10-117-2-12 kernel: RSP: 002b:00007fbb711f2db8 EFLAGS: 00000206 ORIG_RAX: 0000000000000003
Aug  1 16:25:40 ip-10-117-2-12 kernel: RAX: 0000000000000000 RBX: 00007fbba0fa6980 RCX: 00007fbbe8c5ce2b
Aug  1 16:25:40 ip-10-117-2-12 kernel: RDX: 00007fbbe8f8b8c0 RSI: 0000000000000001 RDI: 000000000000004b
Aug  1 16:25:40 ip-10-117-2-12 kernel: RBP: 00007fbbe8f8c400 R08: 00007fbb711f4700 R09: 00007fbb78050b70
Aug  1 16:25:40 ip-10-117-2-12 kernel: R10: 00000000000787a7 R11: 0000000000000206 R12: 0000000000000000
Aug  1 16:25:40 ip-10-117-2-12 kernel: R13: 00007fbb90825520 R14: 00007fbba125d600 R15: 0000000000000000
  • FSx for lustre:
    • too low performance for read (more than 1000ms latency)..
  • FSx for optap:
    • WIP, maybe expensive
  • FSx for openZFS
    • data consistency issue
  • NFS with openZFS
    • best option until now

@yoomee1313
Copy link
Contributor

yoomee1313 commented Aug 4, 2023

Shanghai Hardfork test

  • PUSH0 opcode: test both at pre-hardfork and post-hardfork
    • deploy bytecode which contains PUSH0 opcode in constructor part
    • deploy bytecode which contains PUSH0 opcode in runtime code
    • deploy bytecode which contains PUSH0 opcode in both constructor part and runtime code
    • deploy bytecode which has no PUSH0 opcode in bytecode
    • PUSH0 opcode gas cost and computation cost check
  • limit initcode size: test post-hardfork
    • deploy contract which initcode size is 49152 by transaction -> deployable
    • deploy contract which initcode size exceeds 49152 by transaction -> deploy failed
  • Enable SCA overwriting over EOA: test post-hardfork
    • precalculate → overwrite by create2 → one more time overwrite by create2
    • precalculate → send value to precalculated account (EOA) → overwrite by create2 (should succeed)
  • coinbase gas cost decrease
    • call coinbase address - for example, opCoinbase, opGetBalance
  • initcode gas cost increase
    • random initcode length case with some fixed size test
      • 0, max, 1~(wordsize-1), wordsize, wordsize2, wordsize3, …

@ian0371
Copy link
Contributor

ian0371 commented Aug 4, 2023

Yaml configuration

  • Ensure there's no missing flag
  • Ensure all alias names conform to the convention
  • Ensure cypress' kcn flag configuration works -> kcn is run without any flags

CheckExclusive pointer bugs (remove '&' operator)

@yoomee1313
Copy link
Contributor

yoomee1313 commented Aug 11, 2023

Test Pre-built binaries in different environments

  • ubuntu18.04
  • ubuntu20.04
  • ubuntu22.04
  • macos
  • amazon-linux2

@aidan-kwon
Copy link
Member

Close this since all mandatory testing are done successfully

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Github QA QA tests for version release
Projects
None yet
Development

No branches or pull requests

8 participants