-
Notifications
You must be signed in to change notification settings - Fork 52
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
Implement ready space storage mode for vinyl engine for utube and utubettl #230
Comments
In case of a transaction conflict for 'vinyl' we need to retry an entire transaction. Part of #230
Ready space.Original issue #228 was fixed by creating new ready space mode for This mode was implemented only for Issue overview.The main problem with Right now every operation on a queue requires working with both spaces: main queue space with all tasks and ready space. And in a nutshell, if To be more precise.Utube.Lets review some examples.
if taken == nil or taken[2] ~= state.TAKEN then
require('fiber').sleep(10)
local next_task = self.space.index.utube:min{state.READY, utube} After that lets open two terminals:
Second terminal (after delete call)
After all that we will have two taken tasks from the single queue (task 1 and task 2).
As we can see, the main problem here is the necessity to work with two separate spaces. Firstly we need to check that all invariants are fulfilled (using main space) and then to update the ready space. And Utubettl.All yield conflicts from above will also work for Proposition.We cannot fix The easy way is to leave |
This issue will become relevant after merging this PR: #229
Right now new
STORAGE_MODE_UTUBE_READY_SPACE
storage mode forutube
andutubettl
implemented only formemtx
engine. Withvinyl
there is a problem with yields inside ofspace
andspace.index
methods.Conflict
ER_TRANSACTION_CONFLICT: Transaction has been aborted by conflict
may be received in a transaction, resulting in incorrect work of the tube.Possible fix: repeat the transaction in case of a conflict several times.
The text was updated successfully, but these errors were encountered: