Questions:

1) Do you know why we don’t set detectReadConflicts [1] true by default?  I 
would guess that most users would not expect dirty reads in the context of a 
repeatable read isolation level.
2) In the case of non-local reads on a Partitioned Region, shouldn’t we throw a 
TransactionDataNotColocatedException?
3) Some cache operations throw an UnsupportedOperationInTransactionException.  
Is there a reason we don’t for containsValue()?


Anthony

[1] 
https://geode.apache.org/docs/guide/developing/transactions/transaction_semantics.html

> On Feb 10, 2017, at 12:23 PM, Anilkumar Gingade <aging...@pivotal.io> wrote:
> 
> As Eric mentioned, this will address the current inconsistencies in the
> product and will provide consistent behavior with replicated and
> partitioned region.
> 
> Also, if we look into typical database transaction applications, the
> transaction queries doesn't touch/read all the records in the table, mostly
> or always they are targeted queries (with where clause) with small result
> set. In Geode case, without support for any filtering option with
> collection api's, it may have to bring in all the region entries into the
> Tx state, which application may not be looking for...The better solution to
> support this is by making Geode queries transactional; which can provide
> repeatable read semantic on sub-set data.
> 
> I agree, its hard for application to distinguish what apis are part of Tx
> and what is not...Option to address this could be, proper documentation or
> not allowing collection apis inside the Tx. In needed, application has to
> suspend the Tx, to call them.
> 
> -Anil.
> 
> 
> 
> 
> 
> 
> 
> 
> On Fri, Feb 10, 2017 at 10:57 AM, Eric Shu <e...@pivotal.io> wrote:
> 
>> Hi Dan,
>> 
>> Currently query results do not reflect transaction state at all. The new
>> proposal won't change that.
>> 
>> On Fri, Feb 10, 2017 at 10:47 AM, Eric Shu <e...@pivotal.io> wrote:
>> 
>>> Please note even in our current transaction implementation, repeatable
>>> read is not supported on collection operation in transaction with
>>> Partitioned Region. Currently, only the local entry set (resides in the
>>> local node) of a PR is copied into the txState, while data on the remote
>>> nodes are not. Another call of the collection operation of the same
>>> transaction could have different results for the data on the remote
>> nodes.
>>> 
>>> In addition, containValue() call currently does not support repeatable
>>> read either. It does not copy all data into txState (replicated or
>>> partitioned regions.)
>>> 
>>> Currently we only support limited repeatable read for collection
>>> operations in transaction (at least for PR).
>>> 
>>> On Fri, Feb 10, 2017 at 8:36 AM, Anthony Baker <aba...@pivotal.io>
>> wrote:
>>> 
>>>> 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