[
https://issues.apache.org/jira/browse/IGNITE-5714?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16858557#comment-16858557
]
Igor Seliverstov commented on IGNITE-5714:
------------------------------------------
[~alex_pl] For the described case you may use threadlocal explicit lock
version. This way you do not need thread id at all.
Another comment from me is how you deal with txFinishSync object. Initially it
was introduced not to conflict with possible previously started transaction
with same thread id which is being concurrently finished at the moment (it
possible on concurrent rollback when we return control to an user thread
straight after sending finish requests). So, let's see how you use
{{IgniteTxManager#awaitFinishAckAsync}} (GridDhtColocatedLockFuture.java:1233
for example) - here you're trying to wait for *current* tx finish which looks
ambiguous . The same happens in other places.
We need to get rid of both threadIds and TxSyncs.
> Implementation of suspend/resume for pessimistic transactions
> -------------------------------------------------------------
>
> Key: IGNITE-5714
> URL: https://issues.apache.org/jira/browse/IGNITE-5714
> Project: Ignite
> Issue Type: Sub-task
> Components: general
> Reporter: Alexey Kuznetsov
> Assignee: Aleksey Plekhanov
> Priority: Major
> Labels: iep-34
> Time Spent: 10m
> Remaining Estimate: 0h
>
> Support transaction suspend()\resume() operations for pessimistic
> transactions. Resume can be called in another thread.
> _+But there is a problem+_: Imagine, we started pessimistic transaction in
> thread T1 and then perform put operation, which leads to sending
> GridDistributedLockRequest to another node. Lock request contains thread id
> of the transaction. Then we call suspend, resume in another thread and we
> also must send messages to other nodes to change thread id.
> It seems complicated task.It’s better to get rid of sending thread id to the
> nodes.
> We can use transaction xid on other nodes instead of thread id. Xid is sent
> to nodes in GridDistributedLockRequest#nearXidVer
> _+Proposed solution+_ : On remote nodes instead of thread id of near
> transaction GridDistributedLockRequest#threadId use its xid
> GridDistributedLockRequest#nearXidVer.
> Remove usages of near transaction's thread id on remote nodes.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)