Description
Found following issue when GridDhtTxRemote is never finished:
- start explicit PESSIMISTIC, REPEATABLE_READ transaction
- in transaction just execute cache.get(key) and commit
- there are two nodes, node1, node2. Tx is started on node1, node2 is just started, it is new primary for key but preloading is not finished
- during 'get' handling node2 sends GridDhtLockRequest to node1 with single key (lines 830-836) in GridDhtLockFuture
- node1 starts GridDhtTxRemote
- when tx is committed GridDhtTxPrepareFuture on node2 does not send GridDhtTxPrepareRequest if tx has only write entries (see GridDhtTxPrepareFuture.prepare0). As result GridDhtTxRemote created on node1 is never finished (and partitionReleaseFuture also will never finish).
Added simple test reproducing issue: IgniteCacheTxPreloadNoWriteTest.