Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove protocol-specific assert from TxSetUtils::getInvalidTxList #4417

Merged
merged 1 commit into from
Aug 6, 2024

Conversation

marta-lokhova
Copy link
Contributor

This assert isn't quite right, as nodes may still call this functionality when out-of-sync/catching up. I think there are two scenarios where this can be triggered:

  • Node externalized latest (p21) ledger, but it's at genesis (p0), so tx queue cleanup crashes at the assert.
  • Validator starts at genesis with force_scp=true, which causes it to crash while trying to nominate a block for ledger 2 (which gets ignored by the network). It's not crashed right now given how the code is written (the function is not called if the transaction set is empty), but it's still a footgun.

I removed the assert - for out-of-sync nodes, this path should be harmless, as we don't accept any invalid/unsupported transactions in the transaction queue to begin with. I believe this is how it was handled in previous protocols as well.

@dmkozh dmkozh added this pull request to the merge queue Aug 6, 2024
Merged via the queue into stellar:master with commit 4554182 Aug 6, 2024
14 checks passed
@marta-lokhova marta-lokhova deleted the catchupTxQueueFix branch August 7, 2024 18:29
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