I tend to agree with Mike.  Removing collection reads from the txn state 
changes the programming model and makes it harder to write a Geode application. 
 We’re leaking internal details into the public behavior.

Is there another way to provide this optimization to the user?  Perhaps 
something like:

    CacheTransactionManager txMgr = cache.getCacheTransactionManager();
    txMgr.begin(READ_COMMITTED);  // just thinking out loud here

Or, we could set a hard cap on the size of txState.  Would that satisfy the 
original goal to ensure that users apply Geode txns correctly?

Anthony

> On Feb 10, 2017, at 12:15 AM, Michael Stolz <mst...@pivotal.io> wrote:
> 
> -1
> 
> I would recommend against breaking repeatable read semantics for specific
> cases. If we're going to do something about the memory pressure, great, but
> not at the cost of functionality guarantees.
> 
> --
> Mike Stolz
> Principal Engineer - Gemfire Product Manager
> Mobile: 631-835-4771
> 
> On Feb 9, 2017 10:29 PM, "Eric Shu" <e...@pivotal.io> wrote:
> 
> All,
> 
> In current Geode transaction implementation, there will be memory pressure
> if collection is used in a transaction. (GEODE-2392
> https://issues.apache.org/jira/browse/GEODE-2392).
> 
> Geode transactions provide repeatable read semantics. In order to support
> this repeatable read isolation, all read operations copy the current value
> in txState.
> 
> The proposed new implementation is to have collection operation in a
> transaction not copying all values into its txState. Instead, it will go
> over to region directly but reflecting the new state of the entries changed
> by the previous operations of this transaction.
> 
> Please note that the proposed implementation will not support repeatable
> read for collection operations.
> 
> Any thoughts?
> 
> Regards,
> Eric

Reply via email to