From f9fbee1ca744c6d869e1b4f3883f5b856ff5561e Mon Sep 17 00:00:00 2001 From: "alex.sharov" Date: Wed, 17 Jul 2024 09:59:09 +0700 Subject: [PATCH 1/2] save --- erigon-lib/txpool/pool.go | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/erigon-lib/txpool/pool.go b/erigon-lib/txpool/pool.go index d9ecdc0d051..d31e71aaafb 100644 --- a/erigon-lib/txpool/pool.go +++ b/erigon-lib/txpool/pool.go @@ -39,6 +39,7 @@ import ( "github.com/google/btree" "github.com/hashicorp/golang-lru/v2/simplelru" "github.com/holiman/uint256" + "github.com/ledgerwatch/erigon-lib/common/hexutility" "github.com/ledgerwatch/log/v3" "github.com/ledgerwatch/erigon-lib/chain" @@ -1967,8 +1968,19 @@ func (p *TxPool) flush(ctx context.Context, db kv.RwDB) (written uint64, err err return 0, err } - // fsync - if err := db.Update(ctx, func(tx kv.RwTx) error { return nil }); err != nil { + // fsync. increase state version - just to make RwTx non-empty (mdbx skips empty RwTx) + if err := db.Update(ctx, func(tx kv.RwTx) error { + v, err := tx.GetOne(kv.PoolInfo, PoolStateVersion) + if err != nil { + return err + } + var version uint64 + if len(v) == 8 { + version = binary.BigEndian.Uint64(v) + } + version++ + return tx.Put(kv.PoolInfo, PoolStateVersion, hexutility.EncodeTs(version)) + }); err != nil { return 0, err } return written, nil @@ -2330,6 +2342,7 @@ var PoolChainConfigKey = []byte("chain_config") var PoolLastSeenBlockKey = []byte("last_seen_block") var PoolPendingBaseFeeKey = []byte("pending_base_fee") var PoolPendingBlobFeeKey = []byte("pending_blob_fee") +var PoolStateVersion = []byte("state_version") // recentlyConnectedPeers does buffer IDs of recently connected good peers // then sync of pooled Transaction can happen to all of then at once From 07aace96585aea6f32cd5122f9319a38ae737e12 Mon Sep 17 00:00:00 2001 From: "alex.sharov" Date: Thu, 18 Jul 2024 10:53:57 +0700 Subject: [PATCH 2/2] save --- eth/stagedsync/stage_snapshots.go | 1 + 1 file changed, 1 insertion(+) diff --git a/eth/stagedsync/stage_snapshots.go b/eth/stagedsync/stage_snapshots.go index bf90eaa1ea9..deee54ba615 100644 --- a/eth/stagedsync/stage_snapshots.go +++ b/eth/stagedsync/stage_snapshots.go @@ -1340,4 +1340,5 @@ func (u *snapshotUploader) upload(ctx context.Context, logger log.Logger) { u.removeBefore(maxUploaded - u.cfg.syncConfig.FrozenBlockLimit) } } + }