I have 2 different caches C1, C2 on 3 nodes N1, N2, N3. I want to configure
it in the most possibly reliable way to avoid any inconsistency and data
loss, so both caches are REPLICATED, TRANSACTIONAL,  FULL_SYNC.

Most of my operations are transactions: PESSIMISTIC, SERIALIZABLE that touch
both caches, for example
tx {
  v= get(C1, k1);
  put(C2, v, x);
}

But there are also non-transactional reads from one of the caches.
All operations are performed from client (in client mode).

Some questions to better map the features:

* There will be only 2PC commit for transactions, no 1-phase commit, since I
have 3 nodes, REPLICATED?
* During the transaction, even for get, locks will be taken on backups
during the prepare phase, since it's PESSIMISTIC concurrency?
* readFromBackup - looks like it's not going to improve transactions
performance since transaction coordinator still going to always send it to
primary node and primary node will instruct backup to take locks?
* readFromBackup - still should help in non-transactional read, no? or it
always sent to primary node?
* affinity - will it help to configure it for REPLICATED caches, where
transaction touches all the node anyway?
* If there is no timeout for transaction and one of the backup nodes is
segmented out, transaction seems to be blocked for FailureDetectionTimeout
time (worst case). But is it supposed to resume and succeed after topology
is recalculated to include 2 nodes only?

Thank you
Ariel





--
Sent from: http://apache-ignite-users.70518.x6.nabble.com/

Reply via email to