Skip to content

Commit 11aad3f

Browse files
authored
Merge pull request #3518 from iotaledger/fix-mp112233
Do not forward rejected requests.
2 parents a11e773 + 0b1ca66 commit 11aad3f

File tree

2 files changed

+19
-10
lines changed

2 files changed

+19
-10
lines changed

packages/chain/mempool/mempool.go

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ import (
5252
"github.com/samber/lo"
5353

5454
"github.com/iotaledger/hive.go/logger"
55+
5556
consGR "github.com/iotaledger/wasp/packages/chain/cons/cons_gr"
5657
"github.com/iotaledger/wasp/packages/chain/mempool/distsync"
5758
"github.com/iotaledger/wasp/packages/cryptolib"
@@ -505,8 +506,9 @@ func (mpi *mempoolImpl) distSyncRequestReceivedCB(request isc.Request) bool {
505506
return false
506507
}
507508
if err := mpi.shouldAddOffledgerRequest(offLedgerReq); err == nil {
508-
mpi.addOffledger(offLedgerReq)
509-
return true
509+
mpi.log.Warn("shouldAddOffledgerRequest: true, trying to add to offledger %T: %+v", request, request)
510+
511+
return mpi.addOffledger(offLedgerReq)
510512
}
511513
return false
512514
}
@@ -558,10 +560,13 @@ func (mpi *mempoolImpl) shouldAddOffledgerRequest(req isc.OffLedgerRequest) erro
558560
return nil
559561
}
560562

561-
func (mpi *mempoolImpl) addOffledger(request isc.OffLedgerRequest) {
562-
mpi.offLedgerPool.Add(request)
563+
func (mpi *mempoolImpl) addOffledger(request isc.OffLedgerRequest) bool {
564+
if !mpi.offLedgerPool.Add(request) {
565+
return false
566+
}
563567
mpi.metrics.IncRequestsReceived(request)
564568
mpi.log.Debugf("accepted by the mempool, requestID: %s", request.ID().String())
569+
return true
565570
}
566571

567572
func (mpi *mempoolImpl) handleServerNodesUpdated(recv *reqServerNodesUpdated) {
@@ -806,8 +811,9 @@ func (mpi *mempoolImpl) handleReceiveOnLedgerRequest(request isc.OnLedgerRequest
806811

807812
func (mpi *mempoolImpl) handleReceiveOffLedgerRequest(request isc.OffLedgerRequest) {
808813
mpi.log.Debugf("Received request %v from outside.", request.ID())
809-
mpi.addOffledger(request)
810-
mpi.sendMessages(mpi.distSync.Input(distsync.NewInputPublishRequest(request)))
814+
if mpi.addOffledger(request) {
815+
mpi.sendMessages(mpi.distSync.Input(distsync.NewInputPublishRequest(request)))
816+
}
811817
}
812818

813819
func (mpi *mempoolImpl) handleTangleTimeUpdated(tangleTime time.Time) {

packages/chain/mempool/offledger_pool.go

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import (
1414

1515
"github.com/iotaledger/hive.go/ds/shrinkingmap"
1616
"github.com/iotaledger/hive.go/logger"
17+
1718
consGR "github.com/iotaledger/wasp/packages/chain/cons/cons_gr"
1819
"github.com/iotaledger/wasp/packages/isc"
1920
"github.com/iotaledger/wasp/packages/kv/codec"
@@ -67,16 +68,16 @@ func (p *OffLedgerPool) Get(reqRef *isc.RequestRef) isc.OffLedgerRequest {
6768
return entry.req
6869
}
6970

70-
func (p *OffLedgerPool) Add(request isc.OffLedgerRequest) {
71+
func (p *OffLedgerPool) Add(request isc.OffLedgerRequest) bool {
7172
ref := isc.RequestRefFromRequest(request)
7273
entry := &OrderedPoolEntry{req: request, ts: time.Now()}
7374
account := request.SenderAccount().String()
7475

7576
//
7677
// add the request to the "request ref" Lookup Table
7778
if !p.refLUT.Set(ref.AsKey(), entry) {
78-
p.log.Debugf("NOT ADDED, already exists. reqID: %v as key=%v, senderAccount: ", request.ID(), ref, account)
79-
return // not added already exists
79+
p.log.Debugf("OffLedger Request NOT ADDED, already exists. reqID: %v as key=%v, senderAccount: %v", request.ID(), ref, account)
80+
return true // not added already exists
8081
}
8182

8283
//
@@ -134,14 +135,16 @@ func (p *OffLedgerPool) Add(request isc.OffLedgerRequest) {
134135
deleted := p.LimitPoolSize()
135136
if lo.Contains(deleted, entry) {
136137
// this exact request was deleted from the pool, do not update metrics, or mark available
137-
return
138+
p.log.Debugf("OffLedger Request NOT ADDED, was removed already. reqID: %v as key=%v, senderAccount: %v", request.ID(), ref, account)
139+
return false
138140
}
139141

140142
//
141143
// update metrics and signal that the request is available
142144
p.log.Debugf("ADD %v as key=%v, senderAccount: %s", request.ID(), ref, account)
143145
p.sizeMetric(p.refLUT.Size())
144146
p.waitReq.MarkAvailable(request)
147+
return true
145148
}
146149

147150
// LimitPoolSize drops the txs with the lowest price if the total number of requests is too big

0 commit comments

Comments
 (0)