Steve Ebersole For correctness, the QueryCache needs to store timestamp taken before the query results was retrieved from DB, now it is retrieved after that in StandardQueryCache.put. The timestamp needs to be therefore taken in o.h.loader.Loader.listUsingQueryCache() before calling doList(), and then passed to putResultInQueryCache.
b) would create a hidden channel between get() and put() to get around the fact that the timestamp is not the argument - it would use a map keyed by the SessionImplementor. But I don't like such solution.
c) Right, that should be reset after tx. Methods in RegionAccessStrategy which use this source even assume that this is the timestamp acquired prior to transaction start time. Now I realize that I should have removed the txTimestamp parameter from the SPI as part of
HHH-9977
, since it is redundant when you already have the SessionImplementor. Nevertheless, is transaction start time late enough?
|