*Note, however, that until the commit happens you can still read a partial
transaction state, so the transaction logic must protect against it.*
This means you shouldn't pass partial read result outside transaction scope
(like writing to external storage) until a commit has happened.

*So this basically means that in this mode all reads of an entity are
sequential, right?*
No, reads can be done without blocking using OPTIMISTIC SERIALIZABLE mode.
This is the big difference with PESSIMISTIC REPEATABLE_READ mode.

*Any hints on how to solve this?*
I would suggest avoiding high contention on the same key. Ignite currently
uses lock based concurrency control and is not well suited for such a
scenario.

пн, 20 дек. 2021 г. в 17:27, <jay.et...@gmx.de>:

> Actually, we get even worse performance with Optimistic Serializable
> transactions. Reason may be:
>
>
>
> “[..] Another important point to note here is that a transaction fails
> even if an entry was read without being modified [..],since the value of
> the entry could be important to the logic within the initiated transaction.
> ”
>
>
>
> So this basically means that in this mode all reads of an entity are
> sequential, right? If so, it cannot help with performance when having a lot
> of reads and the need for strong consistency.
>
>
>
>
>
>   Guys: Ignite is such an impressive product with so so many awesome
> features but effectively we have all our data in memory - and it is just
> dead-slow...
>
>
>
>
>
> Any hints on how to solve this?
>
>
>
> Appreciate it.
>
>
>
> Jay
>
>
>
>
>
>
>
> *From:* jay.et...@gmx.de <jay.et...@gmx.de>
> *Sent:* Friday, 17 December 2021 08:44
> *To:* user@ignite.apache.org
> *Subject:* RE: Transactional Reader Writer Locks
>
>
>
> Hi Alexei
>
>
>
> Thanks for your note. We have actually considered optimistic transactional
> transactions before but to be honest we’re not entirely sure how to address
> this:
>
>
>
> Wiki: “When using OPTIMISTIC transactions, full read consistency can be
> achieved by disallowing potential conflicts between reads. This behavior is
> provided by OPTIMISTIC SERIALIZABLE mode.* =>* *Note, however, that until
> the commit happens you can still read a partial transaction state, so the
> transaction logic must protect against it. <=*”
>
>
>
> How would a tx logic look like that protects against partial transaction
> state in optimistic serializable mode?
>
>
>
> Jay
>
>
>
>
>
> *From:* Alexei Scherbakov <alexey.scherbak...@gmail.com>
> *Sent:* Thursday, 16 December 2021 18:10
> *To:* user <user@ignite.apache.org>
> *Subject:* Re: Transactional Reader Writer Locks
>
>
>
> Hi.
>
>
>
> You can try OPTIMISTIC SERIALIZABLE isolation, it might have better
> throughput in contending scenarios.
>
> But this is not the same as RW lock, because a tx can be invalidated after
> a commit if a lock conflict is detected.
>
> No RW lock of any kind is planned, AFAIK.
>
>
>
> вт, 7 дек. 2021 г. в 23:22, <jay.et...@gmx.de>:
>
> Dear all,
>
>
>
> we’re running in circles with Ignite for so long now. Can anyone please
> help? All our attempts to custom-build a Reader Writer Lock (/Re-entrant
> Lock) for use inside transactions have failed.
>
>
>
> Background:
>
> - Multi-node setup
>
> - Very high throughput mixed read/write cache access
>
> - Key-Value API using transactional caches
>
> - Strong consistency absolute requirement
>
> - Transactional context required for guarantees and fault-tolerance
>
>
>
> Using Pessimistic Repeatable-Read transactions gives strong consistency
> but kills performance if there’s a large number of operations on the same
> cache entry (and they tend to introduce performance penalties in
> entire-cache operations and difficulties in cross-cache locking as well).
> All other transactional modes somehow violate the strong consistency
> requirement as we see it and were able to test so far.
>
>
>
> In other distributed environments we use reader writer locks to gain both
> strong consistency and high performance with mixed workloads. In Ignite
> however we’re not aware that explicit locks can be used inside
> transactions: The documentation clearly states so (
> https://ignite.apache.org/docs/latest/distributed-locks) and trying to
> custom-build a reader writer lock for use inside transactions we always end
> up concluding that this may not be achievable if there are multiple ways to
> implicitly acquire but none to release locks.
>
>
>
> Are we out of luck here or
>
> - did we miss something?
>
> - are there workarounds you know of?
>
> - are there plans to implement transactional re-entrant locks in future
> releases?
>
>
>
> Jay
>
>
>
>
>
>
>
>
> --
>
>
> Best regards,
>
> Alexei Scherbakov
>


-- 

Best regards,
Alexei Scherbakov

Reply via email to