-
Notifications
You must be signed in to change notification settings - Fork 195
[master < T577] Transactional queue #790
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
Conversation
|
Few comments so it is clear what is happening, for me and for reviewers. To expose transactions, we have to somehow save all interpreters. The first idea was to save Interpreters are saved as a raw pointer in a vector synced with a Authorization is implemented by using two approaches:
|
…' into T577-FL-transaction-queue
|
Please merge the main into epic E578-MG and merge epic E578-MG into this branch T577-FL, because there is code from PR of ReferenceBasedEvaluator here. |
Josipmrden
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Changes needed, but overall very good, not too many changes on the architecture!
antoniofilipovic
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
One small change from me, and that should be it
…aph into T577-FL-transaction-queue
antoniofilipovic
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good to me, I would just change the naming of transaction statuses.
Also, I think we can discuss on Monday, whether it makes sense to push transaction status info down to storage::Accessor as there is also information about the status of transactions for each. It would make sense to me, as we could make then call
interpreter->GetTransactionStatus()
And in interpreter we would have following check:
std::optional<uint64_t> Storage::Accessor::GetTransactionId() const {
if (is_transaction_active_) {
return transaction_.transaction_id.load(std::memory_order_acquire);
}
return {};
}
And Storage::Accessor would have 1:1 mapping with Transaction and we could easily be sure that interpreter is not in charge of TransactionStatus, but that is to Storage::Accessor
I am not sure if it makes sense but does to me.
Otherwise, I am confident enough that nothing should break, as with introduction of CheckingStatus, we should prevent deadlocks of any sort, or any damage.
[master < Epic] PR
To keep docs changelog up to date, one more thing to do: