[
https://issues.jboss.org/browse/JBTM-2266?page=com.atlassian.jira.plugin....
]
David Lloyd updated JBTM-2266:
------------------------------
Description:
Noticed while browsing through some code that the TransactionReaper uses
currentTimeMillis() to calculate timeouts. However the timestamp reported by this method
can change in an unexpected way if the system clock is changed.
An artificial clock based on System.nanoTime() should be used instead, since while this
time may vary slightly between cores, in general it will be highly accurate and, most
importantly, monotonic and steady (and unaffected by changes to the system time).
was:
Noticed while browsing through some code that the TransactionReaper uses
currentTimeMillis() to calculate timeouts. However this method can change if the system
time has changed.
An artificial clock based on System.nanoTime() should be used instead, since while this
time may vary slightly between cores, in general it will be highly accurate and, most
importantly, monotonic and steady (and unaffected by changes to the system time).
TransactionReaper is using currentTimeMillis for timeout calculation
--------------------------------------------------------------------
Key: JBTM-2266
URL:
https://issues.jboss.org/browse/JBTM-2266
Project: JBoss Transaction Manager
Issue Type: Bug
Affects Versions: 5.0.3
Reporter: David Lloyd
Assignee: Tom Jenkinson
Priority: Minor
Noticed while browsing through some code that the TransactionReaper uses
currentTimeMillis() to calculate timeouts. However the timestamp reported by this method
can change in an unexpected way if the system clock is changed.
An artificial clock based on System.nanoTime() should be used instead, since while this
time may vary slightly between cores, in general it will be highly accurate and, most
importantly, monotonic and steady (and unaffected by changes to the system time).
--
This message was sent by Atlassian JIRA
(v6.3.1#6329)