Igniters, I keep hearing questions from users about the snapshot isolation. Currently ignite provides Optimistic and Pessimistic <https://apacheignite.readme.io/docs/transactions#optimistic-and-pessimistic> transactions [1]. This modes ensure that transactional values are consistent with each other on 1st access of each value.
However, some use cases require that transactional values are consistent with each other not at 1st access, but at transaction start time. After giving it some thought, I think we can support it with minimal effort, if we add a few restrictions. For example, we can easily support it if users specify all the keys at the beginning of the transaction, for example 1. User tells Ignite which keys he/she plans to transact on 2. Ignite preemptively acquires locks on all these keys 3. After locks are acquired, user has assurance that values will not change outside of this transaction and are consistent with teacher. 4. Locks are released upon commit The above algorithm will also perform better, as the initial looks will be acquired in bulk, and not individually. Thoughts? [1] https://apacheignite.readme.io/docs/transactions#optimistic-and-pessimistic
