Hi,

I guess 2 scenario behaves considers transactional boundaries because of this 
feature implemented for DML:
https://apacheignite-sql.readme.io/docs/how-ignite-sql-works#section-concurrent-modifications
 
<https://apacheignite-sql.readme.io/docs/how-ignite-sql-works#section-concurrent-modifications>

However, SQL SELECTS are still not transactional. For instance, if you update A 
and B in one transaction and A has already been updated in the storage while B 
update is in progress, and at the same time you try to get A and B using SELECT 
from another transaction then you will see A of the latest version and B of the 
uncommitted one. That will be solved once we release MVCC.

—
Denis

> On Nov 2, 2017, at 12:21 AM, devkumar <dev...@gmail.com> wrote:
> 
> Hi Denis,
> I tested the transactional nature using SqlFieldsQuery and
> cache.get()/cache.put() in PESSIMISTIC & REPEATABLE_READ mode.
> case 1: update using SqlFieldsQuery in one transaction and read using
> SqlFieldsQuery in another transaction on the same record and we didn't
> commit any of the transaction.
>          observation: Lock in write operation and read is not blocked(which
> is expected).
> case 2: update using SqlFieldsQuery in one transaction and read using
> cache.get() in another transaction on the same record and we didn't commit
> any of the transaction.
>        observation: whichever ran first is taking the lock and other one is
> blocked 
> 
> 
> Can you please describe transaction nature of SqlFieldsQuery and
> cache.get()/cache.put() ?
> 
> 
> 
> --
> Sent from: http://apache-ignite-users.70518.x6.nabble.com/

Reply via email to