errose28 commented on PR #8871:
URL: https://github.com/apache/ozone/pull/8871#issuecomment-3141542793

   > My understanding is that the lastAppliedTxn is just the last txn the 
leader executed, there is no guarantee it was executed successfully - is that 
assumption incorrect? E.g. If the notify process is on txn 2 and the leader is 
on txn 10 how do we confirm which of txns 2->10 were applied successfully?
   
   Yes this is true. Actually the raft-log-only proposal would only work in the 
context of the new leader execution model in 
[HDDS-11897](https://issues.apache.org/jira/browse/HDDS-11897), where the 
commit index is guaranteed to have its corresponding operations applied to the 
state machine. We would then track the commit index to know where in the raft 
logs we need to generate events for. The current model will update the applied 
index even for invalid transactions that don't cause mutations like a directory 
already existing. The challenge is that you need an up to date OM DB to know 
whether or not a transaction will succeed. However this may require 
provisioning a whole OM Node with hardware just to push some json messages to 
an endpoint, and does not have at least once delivery in the presence of Ratis 
snapshot installs. This overhead would then become tech debt once the leader 
execution project finishes.
   
   I think the high level design requirements we seem to be converging on are:
   - A ledger of events
   - Highly available persistence for this ledger to maintain at least once 
delivery
   - Events will need to be persisted before returning to the client, although 
they may not need to be pushed to the consumers at this point.
   - Minimal extra hardware provisioning
   
   While using Raft logs seems to fit most of these requirements, it is not the 
only option if other Ratis constraints are getting in the way. Another option 
is that when the apply happens to the state machine, we write a ledger to the 
disk if that transaction indicates a successful modification. Basically the 
ledgers become part of the Ratis state machine, not the Ratis log. The notifier 
then consumes these ledgers and pushes them to the consumers without worrying 
about indices, because all ledgers represent successful operations. The 
notifier can prune these ledgers as it goes. Since we would likely need to add 
some metadata to the Ratis requests about operation type in HDDS-11897 for most 
event notification proposals I've seen so far, this should still work for both 
request models.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to