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
MVCC sometimes loses gap record #8326
Comments
alyapunov
added a commit
to alyapunov/tarantool
that referenced
this issue
May 16, 2023
By a mistake in 8a56514 a shortcut was added to procedure that handles gap write: it was considered that if the writing transaction is the same as reading - there is no actual conflict that must be stored further. That was a wrong desision: if such a transaction yields and another transaction comes and commits a value with the same key - the first one must go to conflicted state since it has read no more possible state. Fix it, reverting the prevous changes and add a test. Closes tarantool#8326 NO_DOC=bugfix
alyapunov
added a commit
to alyapunov/tarantool
that referenced
this issue
May 17, 2023
By a mistake in 8a56514 a shortcut was added to procedure that handles gap write: it was considered that if the writing transaction is the same as reading - there is no actual conflict that must be stored further. That was a wrong decision: if such a transaction yields and another transaction comes and commits a value with the same key - the first one must go to conflicted state since it has read no more possible state. Fix it, reverting the previous changes and add a test. Closes tarantool#8326 NO_DOC=bugfix
alyapunov
added a commit
to alyapunov/tarantool
that referenced
this issue
Jun 7, 2023
Co-authored-by: Pavel Semyonov <p.semyonov@vk.team>
alyapunov
added a commit
to alyapunov/tarantool
that referenced
this issue
Jun 7, 2023
By a mistake in 8a56514 a shortcut was added to procedure that handles gap write: it was considered that if the writing transaction is the same as reading - there is no actual conflict that must be stored further. That was a wrong decision: if such a transaction yields and another transaction comes and commits a value with the same key - the first one must go to conflicted state since it has read no more possible state. Fix it, reverting the previous changes and add a test. Closes tarantool#8326 NO_DOC=bugfix
alyapunov
added a commit
to alyapunov/tarantool
that referenced
this issue
Jun 8, 2023
By a mistake in 8a56514 a shortcut was added to procedure that handles gap write: it was considered that if the writing transaction is the same as reading - there is no actual conflict that must be stored further. That was a wrong decision: if such a transaction yields and another transaction comes and commits a value with the same key - the first one must go to conflicted state since it has read no more possible state. Fix it, reverting the previous changes and add a test. Closes tarantool#8326 NO_DOC=bugfix
alyapunov
added a commit
to alyapunov/tarantool
that referenced
this issue
Jun 14, 2023
By a mistake in 8a56514 a shortcut was added to procedure that handles gap write: it was considered that if the writing transaction is the same as reading - there is no actual conflict that must be stored further. That was a wrong decision: if such a transaction yields and another transaction comes and commits a value with the same key - the first one must go to conflicted state since it has read no more possible state. Another similar mistake was made in e6f5090, where writing after full scan of the same transaction was not tracked as read. Obviously that was wrong: if some other transaction overwrites the key and commits - this transaction must go to read view since it did not see anything by this key which is not so anymore. Fix it, reverting the first commit and an modifying the second and add a test. Closes tarantool#8326 NO_DOC=bugfix
alyapunov
added a commit
to alyapunov/tarantool
that referenced
this issue
Jun 21, 2023
By a mistake in 8a56514 a shortcut was added to procedure that handles gap write: it was considered that if the writing transaction is the same as reading - there is no actual conflict that must be stored further. That was a wrong decision: if such a transaction yields and another transaction comes and commits a value with the same key - the first one must go to conflicted state since it has read no more possible state. Another similar mistake was made in e6f5090, where writing after full scan of the same transaction was not tracked as read. Obviously that was wrong: if some other transaction overwrites the key and commits - this transaction must go to read view since it did not see anything by this key which is not so anymore. Fix it, reverting the first commit and an modifying the second and add a test. Closes tarantool#8326 NO_DOC=bugfix
alyapunov
added a commit
that referenced
this issue
Jun 21, 2023
By a mistake in 8a56514 a shortcut was added to procedure that handles gap write: it was considered that if the writing transaction is the same as reading - there is no actual conflict that must be stored further. That was a wrong decision: if such a transaction yields and another transaction comes and commits a value with the same key - the first one must go to conflicted state since it has read no more possible state. Another similar mistake was made in e6f5090, where writing after full scan of the same transaction was not tracked as read. Obviously that was wrong: if some other transaction overwrites the key and commits - this transaction must go to read view since it did not see anything by this key which is not so anymore. Fix it, reverting the first commit and an modifying the second and add a test. Closes #8326 NO_DOC=bugfix
alyapunov
added a commit
to alyapunov/tarantool
that referenced
this issue
Jun 21, 2023
By a mistake in 8a56514 a shortcut was added to procedure that handles gap write: it was considered that if the writing transaction is the same as reading - there is no actual conflict that must be stored further. That was a wrong decision: if such a transaction yields and another transaction comes and commits a value with the same key - the first one must go to conflicted state since it has read no more possible state. Another similar mistake was made in e6f5090, where writing after full scan of the same transaction was not tracked as read. Obviously that was wrong: if some other transaction overwrites the key and commits - this transaction must go to read view since it did not see anything by this key which is not so anymore. Fix it, reverting the first commit and an modifying the second and add a test. Closes tarantool#8326 NO_DOC=bugfix (cherry picked from commit b41c454)
alyapunov
added a commit
to alyapunov/tarantool
that referenced
this issue
Jun 21, 2023
By a mistake in 8a56514 a shortcut was added to procedure that handles gap write: it was considered that if the writing transaction is the same as reading - there is no actual conflict that must be stored further. That was a wrong decision: if such a transaction yields and another transaction comes and commits a value with the same key - the first one must go to conflicted state since it has read no more possible state. Another similar mistake was made in e6f5090, where writing after full scan of the same transaction was not tracked as read. Obviously that was wrong: if some other transaction overwrites the key and commits - this transaction must go to read view since it did not see anything by this key which is not so anymore. Fix it, reverting the first commit and an modifying the second and add a test. Closes tarantool#8326 NO_DOC=bugfix (cherry picked from commit b41c454)
alyapunov
added a commit
that referenced
this issue
Jun 22, 2023
By a mistake in 8a56514 a shortcut was added to procedure that handles gap write: it was considered that if the writing transaction is the same as reading - there is no actual conflict that must be stored further. That was a wrong decision: if such a transaction yields and another transaction comes and commits a value with the same key - the first one must go to conflicted state since it has read no more possible state. Another similar mistake was made in e6f5090, where writing after full scan of the same transaction was not tracked as read. Obviously that was wrong: if some other transaction overwrites the key and commits - this transaction must go to read view since it did not see anything by this key which is not so anymore. Fix it, reverting the first commit and an modifying the second and add a test. Closes #8326 NO_DOC=bugfix (cherry picked from commit b41c454)
alyapunov
added a commit
to alyapunov/tarantool
that referenced
this issue
Jun 23, 2023
By a mistake in 8a56514 a shortcut was added to procedure that handles gap write: it was considered that if the writing transaction is the same as reading - there is no actual conflict that must be stored further. That was a wrong decision: if such a transaction yields and another transaction comes and commits a value with the same key - the first one must go to conflicted state since it has read no more possible state. Another similar mistake was made in e6f5090, where writing after full scan of the same transaction was not tracked as read. Obviously that was wrong: if some other transaction overwrites the key and commits - this transaction must go to read view since it did not see anything by this key which is not so anymore. Fix it, reverting the first commit and an modifying the second and add a test. Closes tarantool#8326 NO_DOC=bugfix (cherry picked from commit b41c454)
alyapunov
added a commit
that referenced
this issue
Jun 23, 2023
By a mistake in 8a56514 a shortcut was added to procedure that handles gap write: it was considered that if the writing transaction is the same as reading - there is no actual conflict that must be stored further. That was a wrong decision: if such a transaction yields and another transaction comes and commits a value with the same key - the first one must go to conflicted state since it has read no more possible state. Another similar mistake was made in e6f5090, where writing after full scan of the same transaction was not tracked as read. Obviously that was wrong: if some other transaction overwrites the key and commits - this transaction must go to read view since it did not see anything by this key which is not so anymore. Fix it, reverting the first commit and an modifying the second and add a test. Closes #8326 NO_DOC=bugfix (cherry picked from commit b41c454)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Simple reproduce:
The text was updated successfully, but these errors were encountered: