ignite-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ivan Pavlukhin (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (IGNITE-9602) Transaction timeout setter could break GridTimeoutProcessor behavior
Date Fri, 14 Sep 2018 13:10:00 GMT

     [ https://issues.apache.org/jira/browse/IGNITE-9602?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Ivan Pavlukhin updated IGNITE-9602:
-----------------------------------
    Attachment: TimeoutBugReproducer.java

> Transaction timeout setter could break GridTimeoutProcessor behavior
> --------------------------------------------------------------------
>
>                 Key: IGNITE-9602
>                 URL: https://issues.apache.org/jira/browse/IGNITE-9602
>             Project: Ignite
>          Issue Type: Bug
>          Components: cache
>    Affects Versions: 2.7
>            Reporter: Ivan Pavlukhin
>            Priority: Major
>         Attachments: TimeoutBugReproducer.java
>
>
> Current transaction API provides setter method for transaction timeout. It is possible
to run transaction as follows:
> {code:java}
> try (Transaction tx = ign.transactions().txStart()) {
>     tx.timeout(TimeUnit.MINUTES.toMillis(10));
>     ...
> }
> {code}
> If default timeout is configured to smaller timeout value then it is possible that transaction
will be added to the head of timeout queue. Changing timeout after that to some big number
will lead to situation when head of timeout queue contains not smallest timeout end time value,
totally breaking invariant of that queue. It could lead to a different negative consequences.
From delaying other tasks in timeout processor until mentioned transaction completes or timeouts
to completely stalling timeout processor progress (broken queue invariant could lead to impossibility
to remove objects from it). (java.util.concurrent.ConcurrentSkipListMap is used under the
hood of the timeout queue)
> Actually it looks like {{GridNearTxLocal.timeout}} setter tries to do timeout reset properly
but does it improperly.
> Reproducer is attached.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Mime
View raw message