Skip to content

fix(mempool)!: stop accepting TXs in the mempool if we can't keep up with reCheckTX (backport #3314)#3338

Merged
hvanz merged 1 commit intov0.37.xfrom
mergify/bp/v0.37.x/pr-3314
Jun 24, 2024
Merged

fix(mempool)!: stop accepting TXs in the mempool if we can't keep up with reCheckTX (backport #3314)#3338
hvanz merged 1 commit intov0.37.xfrom
mergify/bp/v0.37.x/pr-3314

Conversation

@mergify
Copy link
Contributor

@mergify mergify bot commented Jun 24, 2024

This PR is a combination of ideas from @ValarDragon, @hvanz and @sergio-mena to alleviate nodes that, while not having their mempool full "officially", they have too many TXs lingering in the mempool which causes them to fall behind.
The mechanism works as follows:

  • We mark when we start and end reChecking
  • If, by the time a new block is decided we are still running the previous reCheckTx, we declare the mempool as rechecktx-full
  • Otherwise, we declare the mempool as not rechecktx-full

We have tested this and it fixes the failing nightlies that are blocking us from cutting v1.0.0-rc1.

Some UTs need to be fixed, hence posting as draft for the moment.


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 #3314 done by [Mergify](https://mergify.com).

@mergify mergify bot requested a review from a team as a code owner June 24, 2024 21:01
@mergify
Copy link
Contributor Author

mergify bot commented Jun 24, 2024

Cherry-pick of 0cd2907 has failed:

On branch mergify/bp/v0.37.x/pr-3314
Your branch is up to date with 'origin/v0.37.x'.

You are currently cherry-picking commit 0cd2907ac.
  (fix conflicts and run "git cherry-pick --continue")
  (use "git cherry-pick --skip" to skip this patch)
  (use "git cherry-pick --abort" to cancel the cherry-pick operation)

Changes to be committed:
	new file:   .changelog/unreleased/breaking-changes/3314-mempool-preupdate.md
	new file:   .changelog/unreleased/improvements/3314-mempool-update-consider-full-when-rechecking.md
	modified:   blocksync/reactor_test.go
	modified:   mempool/mempool.go
	modified:   mempool/mocks/mempool.go
	modified:   mempool/nop_mempool.go
	modified:   state/validation_test.go

Unmerged paths:
  (use "git add/rm <file>..." as appropriate to mark resolution)
	deleted by us:   internal/consensus/replay_stubs.go
	deleted by us:   mempool/clist_mempool.go
	deleted by us:   mempool/clist_mempool_test.go
	deleted by us:   mempool/errors.go
	deleted by us:   mempool/reactor_test.go
	both modified:   state/execution.go
	both modified:   state/execution_test.go

To fix up this pull request, you can check it out locally. See documentation: https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/checking-out-pull-requests-locally

@mergify mergify bot added the conflicts label Jun 24, 2024
…with reCheckTX (#3314)

This PR is a combination of ideas from @ValarDragon, @hvanz and
@sergio-mena to alleviate nodes that, while not having their mempool
full "officially", they have too many TXs lingering in the mempool which
causes them to fall behind.
The mechanism works as follows:

* We mark when we start and end reChecking
* If, by the time a new block is decided we are still running the
previous `reCheckTx`, we declare the mempool as rechecktx-full
* Otherwise, we declare the mempool as not rechecktx-full

We have tested this and it fixes the failing nightlies that are blocking
us from cutting `v1.0.0-rc1`.

Some UTs need to be fixed, hence posting as draft for the moment.

---

- [ ] Tests written/updated
- [x] 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

---------

Co-authored-by: Andy Nogueira <me@andynogueira.dev>
Co-authored-by: Dev Ojha <dojha@berkeley.edu>
Co-authored-by: hvanz <hernan.vanzetto@gmail.com>
Co-authored-by: Hernán Vanzetto <15466498+hvanz@users.noreply.github.com>
@hvanz hvanz force-pushed the mergify/bp/v0.37.x/pr-3314 branch from 25dde39 to 02c7c66 Compare June 24, 2024 21:56
@hvanz hvanz merged commit 751e818 into v0.37.x Jun 24, 2024
@hvanz hvanz deleted the mergify/bp/v0.37.x/pr-3314 branch June 24, 2024 22:02
@hvanz hvanz removed the conflicts label Jun 24, 2024
ValarDragon added a commit to osmosis-labs/cometbft that referenced this pull request Jun 27, 2024
…with reCheckTX (backport cometbft#3314) (cometbft#3338)

This PR is a combination of ideas from @ValarDragon, @hvanz and
@sergio-mena to alleviate nodes that, while not having their mempool
full "officially", they have too many TXs lingering in the mempool which
causes them to fall behind.
The mechanism works as follows:

* We mark when we start and end reChecking
* If, by the time a new block is decided we are still running the
previous `reCheckTx`, we declare the mempool as rechecktx-full
* Otherwise, we declare the mempool as not rechecktx-full

We have tested this and it fixes the failing nightlies that are blocking
us from cutting `v1.0.0-rc1`.

Some UTs need to be fixed, hence posting as draft for the moment.

---

#### PR checklist

- [ ] Tests written/updated
- [x] 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
<hr>This is an automatic backport of pull request cometbft#3314 done by
[Mergify](https://mergify.com).

Co-authored-by: Sergio Mena <sergio@informal.systems>
Co-authored-by: Andy Nogueira <me@andynogueira.dev>
Co-authored-by: Dev Ojha <dojha@berkeley.edu>
Co-authored-by: hvanz <hernan.vanzetto@gmail.com>
Co-authored-by: Hernán Vanzetto <15466498+hvanz@users.noreply.github.com>
ValarDragon added a commit to osmosis-labs/cometbft that referenced this pull request Jun 27, 2024
… with reCheckTX (backport cometbft#3314) cometbft#3338  (#117)

* Revert "Add ResetUpdate, so non-block proposers no longer fail to sync (#113)"

This reverts commit 158bcbe.

* fix(mempool)!: stop accepting TXs in the mempool if we can't keep up with reCheckTX (backport cometbft#3314) (cometbft#3338)

This PR is a combination of ideas from @ValarDragon, @hvanz and
@sergio-mena to alleviate nodes that, while not having their mempool
full "officially", they have too many TXs lingering in the mempool which
causes them to fall behind.
The mechanism works as follows:

* We mark when we start and end reChecking
* If, by the time a new block is decided we are still running the
previous `reCheckTx`, we declare the mempool as rechecktx-full
* Otherwise, we declare the mempool as not rechecktx-full

We have tested this and it fixes the failing nightlies that are blocking
us from cutting `v1.0.0-rc1`.

Some UTs need to be fixed, hence posting as draft for the moment.

---

#### PR checklist

- [ ] Tests written/updated
- [x] 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
<hr>This is an automatic backport of pull request cometbft#3314 done by
[Mergify](https://mergify.com).

Co-authored-by: Sergio Mena <sergio@informal.systems>
Co-authored-by: Andy Nogueira <me@andynogueira.dev>
Co-authored-by: Dev Ojha <dojha@berkeley.edu>
Co-authored-by: hvanz <hernan.vanzetto@gmail.com>
Co-authored-by: Hernán Vanzetto <15466498+hvanz@users.noreply.github.com>

---------

Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Co-authored-by: Sergio Mena <sergio@informal.systems>
Co-authored-by: Andy Nogueira <me@andynogueira.dev>
Co-authored-by: hvanz <hernan.vanzetto@gmail.com>
Co-authored-by: Hernán Vanzetto <15466498+hvanz@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.

2 participants