Some additional lock-levels (apart from write, synchronous-write) can give 
applications along more choices along correctness/latency trade-offs.
------------------------------------------------------------------------------------------------------------------------------------------------

                 Key: CDV-728
                 URL: https://jira.terracotta.org/jira//browse/CDV-728
             Project: Community Development
          Issue Type: New Feature
    Affects Versions: 2.6-stable0
            Reporter: Sreenivasan Iyer
            Assignee: Issue Review Board


Lock--level Write => Terracotta Transaction written to Commit Buffer and based 
on l1.transactionmanager properties, it gets flushed to L2 Asnchronously.

There is some exposure here in that 
1. If this JVM (L1) dies, some uncommitted "Terracotta Transactions" in the 
commit buffer aren't yet been flushed,
2. If any other component of the cluster fails, there is *no* exposure since 
upon rejoining the cluster, this JVM will retransmit the transaction and manage 
it as "in-flight" until the L2 Acks back.

So with regards to the exposure in (1),  i.e. for applications with 
requirements around greater levels of guarantees around Terracotta-transaction 
commits, Terracotta supports Synchronous-Write Lock-Level, where upon the 
calling thread blocks until the "Terracotta Transaction" is committed. However 
adoption of this feature is stunted, given the performance costs associated 
with it.  Current understanding is that the Application Calling thread will 
block until the L2 Acks, which it will do so only after:
1. The transaction gets applied on Primary L2 (which in turn may synch-relay it 
to Secondary L2 in NAP and/or persist to disk).
2. ACKs are received from all other L1s to which the change was broadcast to.

So to trade-off the risk/reward (i.e. guarantees v/s 
latency-issues-experienced-by-calling-application-thread), several DSO users 
request that we support more finer-grained synchronous-write lock levels. 

EXAMPLE - support synchronous-write-Lite where-in the flush from the L1 
Commit-Buffer to the Primary L2 is synchronous (so data is in at least 2 places 
instead of the usual N for the best possible guarantee), but the persistence to 
disk and/or ACKS from other L1s happen asynchronously. 





-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
https://jira.terracotta.org/jira//secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        
_______________________________________________
tc-dev mailing list
[email protected]
http://lists.terracotta.org/mailman/listinfo/tc-dev

Reply via email to