Skip to content
This repository has been archived by the owner on Aug 2, 2022. It is now read-only.

Rodeos per block ack #10162

Merged
merged 11 commits into from
Mar 30, 2021
Merged

Rodeos per block ack #10162

merged 11 commits into from
Mar 30, 2021

Conversation

heifner
Copy link
Contributor

@heifner heifner commented Mar 19, 2021

Change Description

  • Wait on ack from AMQP before continuing on to processing the next block.

Change Type

Select ONE:

  • Documentation
  • Stability bug fix
  • Other
  • Other - special case

Testing Changes

Select ANY that apply:

  • New Tests
  • Existing Tests
  • Test Framework
  • CI System
  • Other

Consensus Changes

  • Consensus Changes

API Changes

  • API Changes

Documentation Additions

  • Documentation Additions

@swatanabe-b1
Copy link
Contributor

I don't understand the motivation for this change.

  • commitTransaction only guarantees that rabbitmq has taken responsibility for the message. It does not guarantee that the message has been delivered.
  • Rodeos can still be ahead of what has been successfully published to rabbit, so it doesn't allow you to get rid of the local storage for messages.

@heifner
Copy link
Contributor Author

heifner commented Mar 22, 2021

  1. commitTransaction only guarantees that rabbitmq has taken responsibility for the message. It does not guarantee that the message has been delivered.
  2. Rodeos can still be ahead of what has been successfully published to rabbit, so it doesn't allow you to get rid of the local storage for messages.
  1. The desired responsibility is that rabbitmq has taken responsibility of the message. Once it has ack'ed the message it is rabbitmq responsibility to deliver or recover the message on DR.
  2. Rodeos commits the changes to rocksdb after the ack from rabbitmq.

@swatanabe-b1
Copy link
Contributor

  1. Rodeos commits the changes to rocksdb after the ack from rabbitmq.

That's true, but the commit happens regardless of whether the ack was received or not. The only thing that I see that checks for app().quit() is write_deltas, which happens before the filter is processed. rodeos_db_snapshot::end_block may commit the changes before we return to appbase and check the quitting flag.

@heifner
Copy link
Contributor Author

heifner commented Mar 23, 2021

  1. Rodeos commits the changes to rocksdb after the ack from rabbitmq.

That's true, but the commit happens regardless of whether the ack was received or not. The only thing that I see that checks for app().quit() is write_deltas, which happens before the filter is processed. rodeos_db_snapshot::end_block may commit the changes before we return to appbase and check the quitting flag.

Oh, I see what you mean now, thanks.

@heifner heifner merged commit b02758f into develop-boxed Mar 30, 2021
@heifner heifner deleted the rodeos-per-block-ack branch March 30, 2021 19:47
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants