Hi,
I tried this with simple code and it works fine.
But in my application when I do similar thing I get following exception
when I do commit. I am getting transaction as follows.

    IgniteTransactions igniteTx =
getServiceContext().getGridService().getTransaction();
    try (Transaction transaction = igniteTx
        .txStart(TransactionConcurrency.OPTIMISTIC,
TransactionIsolation.SERIALIZABLE)) {

Can you please advise?

Caused by: org.apache.ignite.transactions.TransactionOptimisticException:
Failed to prepare transaction, read/write conflict
[key=DefaultDataAffinityKey{id=1556524, affinityId=1},
keyCls=com.qls.agms.grid.data.key.DefaultDataAffinityKey, val=null,
cache=IPV4_ASSET_GROUP_DETAIL_CACHE, thread=IgniteThread
[compositeRwLockIdx=7, stripe=-1, plc=0, name=pub-#53%springDataNode%]]
            at
org.apache.ignite.internal.util.IgniteUtils$14.apply(IgniteUtils.java:895)
            at
org.apache.ignite.internal.util.IgniteUtils$14.apply(IgniteUtils.java:893)
            at
org.apache.ignite.internal.util.IgniteUtils.convertException(IgniteUtils.java:975)
            at
org.apache.ignite.internal.processors.cache.transactions.TransactionProxyImpl.commit(TransactionProxyImpl.java:296)
            at
com.qls.agms.task.ignite.EditAssetGroupIgniteTask.run(EditAssetGroupIgniteTask.java:44)
            at
org.apache.ignite.internal.processors.closure.GridClosureProcessor$C4.execute(GridClosureProcessor.java:1944)
            at
org.apache.ignite.internal.processors.job.GridJobWorker$2.call(GridJobWorker.java:566)
            at
org.apache.ignite.internal.util.IgniteUtils.wrapThreadLoader(IgniteUtils.java:6623)
            at
org.apache.ignite.internal.processors.job.GridJobWorker.execute0(GridJobWorker.java:560)
            ... 5 common frames omitted
Caused by:
org.apache.ignite.internal.transactions.IgniteTxOptimisticCheckedException:
Failed to prepare transaction, read/write conflict
[key=DefaultDataAffinityKey{id=1556524, affinityId=1},
keyCls=com.qls.agms.grid.data.key.DefaultDataAffinityKey, val=null,
cache=IPV4_ASSET_GROUP_DETAIL_CACHE, thread=IgniteThread
[compositeRwLockIdx=7, stripe=-1, plc=0, name=pub-#53%springDataNode%]]
            at
org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTxPrepareFuture.versionCheckError(GridDhtTxPrepareFuture.java:1190)
            at
org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTxPrepareFuture.checkReadConflict(GridDhtTxPrepareFuture.java:1138)
            at
org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTxPrepareFuture.prepare0(GridDhtTxPrepareFuture.java:1205)
            at
org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTxPrepareFuture.mapIfLocked(GridDhtTxPrepareFuture.java:671)
            at
org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTxPrepareFuture.prepare(GridDhtTxPrepareFuture.java:1048)
            at
org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal.prepareAsyncLocal(GridNearTxLocal.java:3452)
            at
org.apache.ignite.internal.processors.cache.transactions.IgniteTxHandler.prepareColocatedTx(IgniteTxHandler.java:257)
            at
org.apache.ignite.internal.processors.cache.distributed.near.GridNearOptimisticSerializableTxPrepareFuture.prepareLocal(GridNearOptimisticSerializableTxPrepareFuture.java:580)
            at
org.apache.ignite.internal.processors.cache.distributed.near.GridNearOptimisticSerializableTxPrepareFuture.prepare(GridNearOptimisticSerializableTxPrepareFuture.java:494)
            at
org.apache.ignite.internal.processors.cache.distributed.near.GridNearOptimisticSerializableTxPrepareFuture.prepare(GridNearOptimisticSerializableTxPrepareFuture.java:408)
            at
org.apache.ignite.internal.processors.cache.distributed.near.GridNearOptimisticSerializableTxPrepareFuture.prepare0(GridNearOptimisticSerializableTxPrepareFuture.java:315)
            at
org.apache.ignite.internal.processors.cache.distributed.near.GridNearOptimisticTxPrepareFutureAdapter.prepareOnTopology(GridNearOptimisticTxPrepareFutureAdapter.java:137)
            at
org.apache.ignite.internal.processors.cache.distributed.near.GridNearOptimisticTxPrepareFutureAdapter.prepare(GridNearOptimisticTxPrepareFutureAdapter.java:74)
            at
org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal.prepareNearTxLocal(GridNearTxLocal.java:3161)
            at
org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal.commitNearTxLocalAsync(GridNearTxLocal.java:3221)
            at
org.apache.ignite.internal.processors.cache.GridCacheAdapter.commitTxAsync(GridCacheAdapter.java:4019)
            at
org.apache.ignite.internal.processors.cache.GridCacheSharedContext.commitTxAsync(GridCacheSharedContext.java:975)
            at
org.apache.ignite.internal.processors.cache.transactions.TransactionProxyImpl.commit(TransactionProxyImpl.java:288)
            ... 10 common frames omitted

Thanks,
Prasad

On Tue, Jun 5, 2018 at 2:18 PM, Andrey Mashenkov <[email protected]
> wrote:

> Hi,
>
> Sure, multiple actions with same query within same transaction should work.
>
> Please, let us know if you observe unexpected behavior.
> Any reproducer will be appreciated.
>
>
> On Tue, Jun 5, 2018 at 10:36 AM, Prasad Bhalerao <
> [email protected]> wrote:
>
>> Hi,
>>
>> Can I update the same entry multiple time inside ignite transaction?
>> Or
>> Can I update an entry and then remove the same entry in ignite
>> transaction?
>>
>> Thanks,
>> Prasad
>>
>
>
>
> --
> Best regards,
> Andrey V. Mashenkov
>

Reply via email to