Author: Kenneth S. Redler
This has become a possible show-stopping problem for me. I have a
high-load application running on CF8 that relies on query caching to
achieve good performance. It's never been a problem with CF7, but now
on CF8 I'm seeing the same problem described above (and elsewhere).
The problem appears after random periods of time. Sometimes it appears
to resolve itself. Other times it seems to "spread" to all other
cached queries, to the point that any code anywhere on the server that
uses a cached query fails with the "corrupt table" error. Bouncing the
coldfusion service is not necessary: setting the query cache to zero
immediately resolves the problem. Setting it to zero (to flush it),
and then resetting it to its previous value also provides a temporary
fix -- but the problem reemerges after a time.
I've confirmed the behavior with all versions of CF8. I've confirmed
it on Windows and on Redhat. I've tried different JVM setups -- big
heap, small heap, different garbage collectors, different tenuring (on
the theory that perhaps Java's GC might be invading the query cache
based on CF not properly identifying the cached query memory as it's
allocated). No go. I haven't yet tried older JVM versions (I'm running
what comes with CF8).
This has grown into such a big problem that I'm facing two undesirable
options: reverting the entire application (and all its shiny new CF8-
specific code) back to CF7, or building a separate custom query
caching mechanism to sidestep the issue. At the moment, I'm running
the server with the query cache at zero. Which is to say: slowly.
It's surprising I'm not hearing more about the problem -- is anyone
else experiencing this? Are there only a few people heavily using the
inbuilt query caching system?
Hoping for suggestions or commiseration...and my apologies for the
cross-posting, in case you've noticed my similar message on usenet.