Skip to content

jdbc: Support transactions #63

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

Open
Totktonada opened this issue Nov 1, 2018 · 1 comment
Open

jdbc: Support transactions #63

Totktonada opened this issue Nov 1, 2018 · 1 comment

Comments

@Totktonada
Copy link
Member

Totktonada commented Nov 1, 2018

It is required by the JDBC standard.

The tricky point is how to represent support of transactions within one engine (memtx or vinyl) if we'll implement it for vinyl for the first time.

Blocked by tarantool/tarantool#2016

@Totktonada
Copy link
Member Author

Moved out isolation level getters/setters to #103.

ligurio added a commit to tarantool/jepsen.tarantool that referenced this issue Nov 2, 2020
In the bank test, we create a pool of simulated bank accounts, and transfer
money between them using transactions which read two randomly selected
accounts, subtract and increment their balances accordingly, and write the new
account values back. Under snapshot isolation, the total of all accounts should
be constant over time. We read the state of all accounts concurrently, and
check for changes in the total, which suggests read skew or other snapshot
isolation anomalies.

BIGINT support
Interactive transactions in IPROTO #2016
  tarantool/tarantool-java#63
Add bank tests with Lua functions

Closes #67
ligurio added a commit to tarantool/jepsen.tarantool that referenced this issue Nov 2, 2020
In the bank test, we create a pool of simulated bank accounts, and transfer
money between them using transactions which read two randomly selected
accounts, subtract and increment their balances accordingly, and write the new
account values back. Under snapshot isolation, the total of all accounts should
be constant over time. We read the state of all accounts concurrently, and
check for changes in the total, which suggests read skew or other snapshot
isolation anomalies.

BIGINT support
Interactive transactions in IPROTO #2016
  tarantool/tarantool-java#63
Add bank tests with Lua functions

Closes #67
ligurio added a commit to tarantool/jepsen.tarantool that referenced this issue Nov 2, 2020
In the bank test, we create a pool of simulated bank accounts, and transfer
money between them using transactions which read two randomly selected
accounts, subtract and increment their balances accordingly, and write the new
account values back. Under snapshot isolation, the total of all accounts should
be constant over time. We read the state of all accounts concurrently, and
check for changes in the total, which suggests read skew or other snapshot
isolation anomalies.

BIGINT support
Interactive transactions in IPROTO #2016
  tarantool/tarantool-java#63
Add bank tests with Lua functions

Closes #67
ligurio added a commit to tarantool/jepsen.tarantool that referenced this issue Nov 6, 2020
In the bank test, we create a pool of simulated bank accounts, and transfer
money between them using transactions which read two randomly selected
accounts, subtract and increment their balances accordingly, and write the new
account values back. Under snapshot isolation, the total of all accounts should
be constant over time. We read the state of all accounts concurrently, and
check for changes in the total, which suggests read skew or other snapshot
isolation anomalies.

There are two kind of test: first one stores bank accounts in a single space
and second one stores each bank account in a separate space.
Original version of tests were used only SQL commands to manipulate accounts
but `transfer` operation requires using transactions which are not supported in
Tarantool [1]. So second version of tests has been added where sequences of SQL
commands required atomicity were replaced by Lua functions `_WITHDRAW` and
`_WITHDRAW_MULTITABLE`.

1. tarantool/tarantool-java#63

Closes #67
ligurio added a commit to tarantool/jepsen.tarantool that referenced this issue Nov 6, 2020
In the bank test, we create a pool of simulated bank accounts, and transfer
money between them using transactions which read two randomly selected
accounts, subtract and increment their balances accordingly, and write the new
account values back. Under snapshot isolation, the total of all accounts should
be constant over time. We read the state of all accounts concurrently, and
check for changes in the total, which suggests read skew or other snapshot
isolation anomalies.

There are two kind of test: first one stores bank accounts in a single space
and second one stores each bank account in a separate space.
Original version of tests were used only SQL commands to manipulate accounts
but `transfer` operation requires using transactions which are not supported in
Tarantool [1]. So second version of tests has been added where sequences of SQL
commands required atomicity were replaced by Lua functions `_WITHDRAW` and
`_WITHDRAW_MULTITABLE`.

1. tarantool/tarantool-java#63

Closes #67
ligurio added a commit to tarantool/jepsen.tarantool that referenced this issue Nov 6, 2020
In the bank test, we create a pool of simulated bank accounts, and transfer
money between them using transactions which read two randomly selected
accounts, subtract and increment their balances accordingly, and write the new
account values back. Under snapshot isolation, the total of all accounts should
be constant over time. We read the state of all accounts concurrently, and
check for changes in the total, which suggests read skew or other snapshot
isolation anomalies.

There are two kind of test: first one stores bank accounts in a single space
and second one stores each bank account in a separate space.
Original version of tests were used only SQL commands to manipulate accounts
but `transfer` operation requires using transactions which are not supported in
Tarantool [1]. So second version of tests has been added where sequences of SQL
commands required atomicity were replaced by Lua functions `_WITHDRAW` and
`_WITHDRAW_MULTITABLE`.

1. tarantool/tarantool-java#63

Closes #67
ligurio added a commit to tarantool/jepsen.tarantool that referenced this issue Nov 6, 2020
In [1] new transaction manager has been added that implements MVCC support.
Without concurrency control, if someone is reading from a database at the same
time as someone else is writing to it, it is possible that the reader will see
a half-written or inconsistent piece of data. In the bank test, we create a
pool of simulated bank accounts, and transfer money between them using
transactions which read two randomly selected accounts, subtract and increment
their balances accordingly, and write the new account values back. Under
snapshot isolation, the total of all accounts should be constant over time. We
read the state of all accounts concurrently, and check for changes in the
total, which suggests read skew or other snapshot isolation anomalies.

There are two kind of test: first one stores bank accounts in a single space
and second one stores each bank account in a separate space.
Original version of tests were used only SQL commands to manipulate accounts
but `transfer` operation requires using transactions which are not supported in
Tarantool [2]. So second version of tests has been added where sequences of SQL
commands required atomicity were replaced by Lua functions `_WITHDRAW` and
`_WITHDRAW_MULTITABLE`.

1. tarantool/tarantool#4897
2. tarantool/tarantool-java#63

Closes #67
ligurio added a commit to tarantool/jepsen.tarantool that referenced this issue Nov 6, 2020
Fix setting data engine broken in commit "Rewrite client in a register
workload" 3214905 and add option validation.

Blocked by tarantool/tarantool-java#63

Closes #52
ligurio added a commit to tarantool/jepsen.tarantool that referenced this issue Nov 6, 2020
In [1] new transaction manager has been added that implements MVCC support.
Without concurrency control, if someone is reading from a database at the same
time as someone else is writing to it, it is possible that the reader will see
a half-written or inconsistent piece of data. In the bank test, we create a
pool of simulated bank accounts, and transfer money between them using
transactions which read two randomly selected accounts, subtract and increment
their balances accordingly, and write the new account values back. Under
snapshot isolation, the total of all accounts should be constant over time. We
read the state of all accounts concurrently, and check for changes in the
total, which suggests read skew or other snapshot isolation anomalies.

There are two kind of test: first one stores bank accounts in a single space
and second one stores each bank account in a separate space.
Original version of tests were used only SQL commands to manipulate accounts
but `transfer` operation requires using transactions which are not supported in
Tarantool [2]. So second version of tests has been added where sequences of SQL
commands required atomicity were replaced by Lua functions `_WITHDRAW` and
`_WITHDRAW_MULTITABLE`.

1. tarantool/tarantool#4897
2. tarantool/tarantool-java#63

Closes #67
@Totktonada Totktonada removed the blocked Not ready to be implemented label Nov 2, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant