From 8544b1ffe1f7bb0ce0c56fa50980e26572643855 Mon Sep 17 00:00:00 2001 From: "alex.sharov" Date: Wed, 17 Jul 2024 09:43:29 +0700 Subject: [PATCH 1/4] save --- erigon-lib/txpool/pool.go | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/erigon-lib/txpool/pool.go b/erigon-lib/txpool/pool.go index 12d1dec899c..04d8fea00ab 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/erigon-lib/chain" "github.com/ledgerwatch/erigon-lib/common" @@ -1965,8 +1966,20 @@ 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 { + defer func(t time.Time) { fmt.Printf("pool.go:1969: %s\n", time.Since(t)) }(time.Now()) + // 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 @@ -2328,6 +2341,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 e6760477e379454f9b731264c7589eb5539472e2 Mon Sep 17 00:00:00 2001 From: "alex.sharov" Date: Wed, 17 Jul 2024 09:50:55 +0700 Subject: [PATCH 2/4] save --- erigon-lib/txpool/fetch.go | 2 +- erigon-lib/txpool/pool.go | 23 +++++++++++------------ 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/erigon-lib/txpool/fetch.go b/erigon-lib/txpool/fetch.go index 4545dd48485..06e553d02ba 100644 --- a/erigon-lib/txpool/fetch.go +++ b/erigon-lib/txpool/fetch.go @@ -189,7 +189,7 @@ func (f *Fetch) receiveMessage(ctx context.Context, sentryClient sentry.SentryCl time.Sleep(3 * time.Second) continue } - f.logger.Debug("[txpool.fetch] Handling incoming message", "msg", string(req.Data), "reqID", req.Id.String(), "err", err) + f.logger.Debug("[txpool.fetch] Handling incoming message", "reqID", req.Id.String(), "err", err) } if f.wg != nil { f.wg.Done() diff --git a/erigon-lib/txpool/pool.go b/erigon-lib/txpool/pool.go index 04d8fea00ab..0f8705cfcef 100644 --- a/erigon-lib/txpool/pool.go +++ b/erigon-lib/txpool/pool.go @@ -39,8 +39,6 @@ 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/erigon-lib/chain" "github.com/ledgerwatch/erigon-lib/common" "github.com/ledgerwatch/erigon-lib/common/assert" @@ -1969,16 +1967,17 @@ func (p *TxPool) flush(ctx context.Context, db kv.RwDB) (written uint64, err err defer func(t time.Time) { fmt.Printf("pool.go:1969: %s\n", time.Since(t)) }(time.Now()) // 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)) + //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)) + return nil }); err != nil { return 0, err } From fb3ad0c0fd80cbce60074c0b414781f9b66f0e94 Mon Sep 17 00:00:00 2001 From: "alex.sharov" Date: Wed, 17 Jul 2024 09:52:03 +0700 Subject: [PATCH 3/4] save --- erigon-lib/txpool/pool.go | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/erigon-lib/txpool/pool.go b/erigon-lib/txpool/pool.go index 0f8705cfcef..2033ef6cb3c 100644 --- a/erigon-lib/txpool/pool.go +++ b/erigon-lib/txpool/pool.go @@ -44,6 +44,7 @@ import ( "github.com/ledgerwatch/erigon-lib/common/assert" "github.com/ledgerwatch/erigon-lib/common/dbg" "github.com/ledgerwatch/erigon-lib/common/fixedgas" + "github.com/ledgerwatch/erigon-lib/common/hexutility" "github.com/ledgerwatch/erigon-lib/common/u256" libkzg "github.com/ledgerwatch/erigon-lib/crypto/kzg" "github.com/ledgerwatch/erigon-lib/gointerfaces" @@ -1964,19 +1965,18 @@ func (p *TxPool) flush(ctx context.Context, db kv.RwDB) (written uint64, err err return 0, err } - defer func(t time.Time) { fmt.Printf("pool.go:1969: %s\n", time.Since(t)) }(time.Now()) // 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)) + 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)) return nil }); err != nil { return 0, err From e05a23e033e6fe85a1983863e872e3925639dfb9 Mon Sep 17 00:00:00 2001 From: "alex.sharov" Date: Wed, 17 Jul 2024 09:52:16 +0700 Subject: [PATCH 4/4] save --- erigon-lib/txpool/pool.go | 1 - 1 file changed, 1 deletion(-) diff --git a/erigon-lib/txpool/pool.go b/erigon-lib/txpool/pool.go index 2033ef6cb3c..58e342f0622 100644 --- a/erigon-lib/txpool/pool.go +++ b/erigon-lib/txpool/pool.go @@ -1977,7 +1977,6 @@ func (p *TxPool) flush(ctx context.Context, db kv.RwDB) (written uint64, err err } version++ return tx.Put(kv.PoolInfo, PoolStateVersion, hexutility.EncodeTs(version)) - return nil }); err != nil { return 0, err }