hermeznetwork / hermez-node

Hermez node Go implementation
GNU Affero General Public License v3.0
60 stars 33 forks source link

fix UpdateTxsInfo to handle more than 65535 tx #1123

Closed tclemos closed 2 years ago

tclemos commented 3 years ago

Closes #1120.

What does this PR does?

Allows UpdateTxsInfo to update more than 65535 txs.

How to test?

Add more than 65535 tx to the pool that will be discarded in the tx selector, causing them to be updated with some information related to the discarding

Checklist

These are the criteria that every PR should meet, please check them off as you review them:

tclemos commented 3 years ago
Compilation finished successfully
executing MakeFile to initalize all the services in dockers
Starting test
    ✓ Init variables (9477ms)
    ✓ Check ETH L1 deposit (58469ms)
    ✓ Check ERC20 L1 deposit (44337ms)
    ✓ Check ETH L1 force exit (48129ms)
    ✓ Check ERC20 L1 force exit (38135ms)
    ✓ Check ETH withdrawal from firsts forceExits (12131ms)
    ✓ Check ERC20 withdrawal from firsts forceExits (16146ms)
    ✓ Check ETH N L1 force exits (44129ms)
    ✓ Check ETH withdrawal from previous N force exits (8062ms)
    ✓ Check single ETH L2 transfer (30199ms)
    ✓ Check single ERC20 L2 transfer (30195ms)
    ✓ Transfer ETH to a non-existent Bjj address (40230ms)
    ✓ Transfer ERC20 to a non-existent Bjj address (50239ms)
    ✓ Transfer ETH to hermez ethereum address (40200ms)
    ✓ Transfer ERC20 to hermez ethereum address (40204ms)
    ✓ Transfer ETH to non-existent ETH address (40220ms)
    ✓ Transfer ETH to hermez ethereum address from internal account (30188ms)
    ✓ Transfer ERC20 to hermez ethereum address from internal account (40240ms)
    ✓ Check multiple L2 ETH transfer in same batch (40884ms)
    ✓ Check multiple L2 ETH transfer in different batches (180931ms)
    ✓ Atomic txs (40462ms)
    ✓ Check L2 ETH exit (30193ms)
    ✓ Check L2 ERC20 exit (40228ms)
    ✓ Check ETH withdrawal from L2 exit (4059ms)
    ✓ Check ERC20 withdrawal from L2 exit (8067ms)
    ✓ Exit ETH and circuit withdrawal (56586ms)
    ✓ Assert API endpoints (1518ms)
    ✓ Update Buckets (16205ms)
    ✓ Check ETH L1 force exit bucket (34126ms)
    ✓ Check ERC20 L1 force exit bucket (48171ms)
    ✓ Check ETH withdrawal buckets (12113ms)
    ✓ Check ERC20 withdrawal buckets (12128ms)
    ✓ Check withdrawals buckets
arnaubennassar commented 2 years ago

If I understood this correctly, you're trying to fix a problem when the bulk update is too big for Postgres updating row by row. I'd consider updating in reasonable chunks instead.

jeffprestes commented 2 years ago

If I understood this correctly, you're trying to fix a problem when the bulk update is too big for Postgres updating row by row. I'd consider updating in reasonable chunks instead.

After we tested more then 300,000 tx we realized that this is the safer mode. We check the performance later but we need it working.