Skip to content

fix(mempool): tx is skipped when sending to a lagging peer or sending fails (backport #3647)#3657

Merged
hvanz merged 3 commits intov1.xfrom
mergify/bp/v1.x/pr-3647
Aug 9, 2024
Merged

fix(mempool): tx is skipped when sending to a lagging peer or sending fails (backport #3647)#3657
hvanz merged 3 commits intov1.xfrom
mergify/bp/v1.x/pr-3647

Conversation

@mergify
Copy link
Contributor

@mergify mergify bot commented Aug 9, 2024

Fixes a bug introduced in #3459 where instead of retrying the same tx when the peer is lagging, it was skipping it and moving on to the next entry. The same used to happen when sending the transaction failed: instead of retrying to send, it skipped it and proceeded to the next tx. This PR also reverts #3430, which was not working as expected.

Note that the first commit introduces a new test TestMempoolReactorSendLaggingPeer that initially fails and then it's fixed: https://github.com/cometbft/cometbft/actions/runs/10300181146/job/28509056466?pr=3647


PR checklist

  • Tests written/updated
  • [ ] Changelog entry added in .changelog (we use unclog to manage our changelog)
  • [ ] Updated relevant documentation (docs/ or spec/) and code comments
  • Title follows the Conventional Commits spec

This is an automatic backport of pull request #3647 done by [Mergify](https://mergify.com).

… fails (#3647)

Fixes a bug introduced in #3459 where instead of retrying the same tx
when the peer is lagging, it was skipping it and moving on to the next
entry. The same used to happen when sending the transaction failed:
instead of retrying to send, it skipped it and proceeded to the next tx.
This PR also reverts #3430, which was not working as expected.

Note that the first commit introduces a new test
`TestMempoolReactorSendLaggingPeer` that initially fails and then it's
fixed:
https://github.com/cometbft/cometbft/actions/runs/10300181146/job/28509056466?pr=3647

---

#### PR checklist

- [X] Tests written/updated
- ~~[ ] Changelog entry added in `.changelog` (we use
[unclog](https://github.com/informalsystems/unclog) to manage our
changelog)~~
- ~~[ ] Updated relevant documentation (`docs/` or `spec/`) and code
comments~~
- [X] Title follows the [Conventional
Commits](https://www.conventionalcommits.org/en/v1.0.0/) spec

(cherry picked from commit 1ac8832)

# Conflicts:
#	mempool/reactor.go
@mergify

This comment was marked as resolved.

@mergify mergify bot requested a review from a team as a code owner August 9, 2024 11:31
@mergify mergify bot added the conflicts label Aug 9, 2024
@mergify mergify bot requested a review from a team August 9, 2024 11:31
Copy link
Collaborator

@hvanz hvanz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

#3459 was not backported to v1.x, so its bug does not affect this branch. This PR essentially reverts #3430 and adds a new test.

@hvanz hvanz removed the conflicts label Aug 9, 2024
@hvanz hvanz merged commit ce3ef79 into v1.x Aug 9, 2024
@hvanz hvanz deleted the mergify/bp/v1.x/pr-3647 branch August 9, 2024 12:43
github-merge-queue bot pushed a commit that referenced this pull request Sep 26, 2024
The test should be able now to catch the error introduced by
#3657.

----

To see how it would break, please checkout the branch
`cason/test-nobroadcastsender`, then:

```
$ cd mempool
$ go test -v -run TestReactorNoBroadcastToSender
```

And wait it to fail, after 2 minutes. You are going to see the busy-loop
around, logs entries starting with `Skipping tx`, forever for the same
transaction.

Important: the test unit only works in the traditional mempool design,
without lanes. We should consider adding a variant of it that should
also pass when lanes are considered.

---

#### PR checklist

- [x] Tests written/updated
- [ ] Changelog entry added in `.changelog` (we use
[unclog](https://github.com/informalsystems/unclog) to manage our
changelog)
- [ ] Updated relevant documentation (`docs/` or `spec/`) and code
comments

---------

Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
mergify bot pushed a commit that referenced this pull request Sep 26, 2024
The test should be able now to catch the error introduced by
#3657.

----

To see how it would break, please checkout the branch
`cason/test-nobroadcastsender`, then:

```
$ cd mempool
$ go test -v -run TestReactorNoBroadcastToSender
```

And wait it to fail, after 2 minutes. You are going to see the busy-loop
around, logs entries starting with `Skipping tx`, forever for the same
transaction.

Important: the test unit only works in the traditional mempool design,
without lanes. We should consider adding a variant of it that should
also pass when lanes are considered.

---

#### PR checklist

- [x] Tests written/updated
- [ ] Changelog entry added in `.changelog` (we use
[unclog](https://github.com/informalsystems/unclog) to manage our
changelog)
- [ ] Updated relevant documentation (`docs/` or `spec/`) and code
comments

---------

Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
(cherry picked from commit 9e25845)

# Conflicts:
#	mempool/reactor.go
#	mempool/reactor_test.go
mergify bot added a commit that referenced this pull request Sep 27, 2024
) (#4182)

The test should be able now to catch the error introduced by
#3657.

FOR REVIEWERS: the
91ab7a7
commit was reverted in this backport, since mempool lanes is not
implemented in `v1.x`.

#### PR checklist

- [x] Tests written/updated
- [ ] Changelog entry added in `.changelog` (we use
[unclog](https://github.com/informalsystems/unclog) to manage our
changelog)
- [ ] Updated relevant documentation (`docs/` or `spec/`) and code
comments
<hr>This is an automatic backport of pull request #4127 done by
[Mergify](https://mergify.com).

---------

Co-authored-by: Daniel <daniel.cason@informal.systems>
hvanz pushed a commit to InjectiveLabs/cometbft that referenced this pull request Mar 12, 2025
The test should be able now to catch the error introduced by
cometbft#3657.

----

To see how it would break, please checkout the branch
`cason/test-nobroadcastsender`, then:

```
$ cd mempool
$ go test -v -run TestReactorNoBroadcastToSender
```

And wait it to fail, after 2 minutes. You are going to see the busy-loop
around, logs entries starting with `Skipping tx`, forever for the same
transaction.

Important: the test unit only works in the traditional mempool design,
without lanes. We should consider adding a variant of it that should
also pass when lanes are considered.

---

- [x] Tests written/updated
- [ ] Changelog entry added in `.changelog` (we use
[unclog](https://github.com/informalsystems/unclog) to manage our
changelog)
- [ ] Updated relevant documentation (`docs/` or `spec/`) and code
comments

---------

Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
maxim-inj pushed a commit to InjectiveLabs/cometbft that referenced this pull request Mar 15, 2025
The test should be able now to catch the error introduced by
cometbft#3657.

----

To see how it would break, please checkout the branch
`cason/test-nobroadcastsender`, then:

```
$ cd mempool
$ go test -v -run TestReactorNoBroadcastToSender
```

And wait it to fail, after 2 minutes. You are going to see the busy-loop
around, logs entries starting with `Skipping tx`, forever for the same
transaction.

Important: the test unit only works in the traditional mempool design,
without lanes. We should consider adding a variant of it that should
also pass when lanes are considered.

---

- [x] Tests written/updated
- [ ] Changelog entry added in `.changelog` (we use
[unclog](https://github.com/informalsystems/unclog) to manage our
changelog)
- [ ] Updated relevant documentation (`docs/` or `spec/`) and code
comments

---------

Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant