KB Article #177865
Finding the contents of ehCache
Problem
How can you see what's stored inside an API Gateway ehCache?
Resolution
Use a script, like the following Nashorn syntax JavaScript:
//# sorceURL=Examine ehCache
var script_name = "Examine ehCache";
// This script prints the contents of a particular ehCache to the trace at INFO level.
// It also prints out the current message.key to help debug item not found errors.
// Change the variable cacheName to match the cache you want to examine. For example:
// var cacheName = "OAuth Client Access Token Cache";
var imp = new JavaImporter(com.vordel.trace, com.vordel.circuit, com.vordel.circuit.cache);
with (imp) {
var cacheName = "YOUR CACHE NAME"; // TODO - change to an actual cache name.
function invoke(msg) {
try {
Trace.info("Listing items in cache:");
Trace.info("The message.key value is " + msg.get("message.key"));
var cache = CacheContainer.getInstance().getCache(cacheName);
var keys = cache.getKeys();
Trace.info("There are " + keys.size() + " items in cache");
for (var i = 0; i < keys.size(); i++) {
var k = keys.get(i);
Trace.info(k + " = " + cache.get(k));
}
} catch (e) {
Trace.error(script_name + " error: " + e.stack);
throw new CircuitAbortException(e); // Used to follow the abort path on error.
}
return true;
}
};
Sample output:
DEBUG 3/30/21, 17:27:45.777 run filter [Test Script] {
INFO 3/30/21, 17:27:45.931 Listing items in cache:
INFO 3/30/21, 17:27:45.933 The message.key value is ljJObQK7QKy5DnZ+cAqBpGC28lY=
INFO 3/30/21, 17:27:46.104 There are 1 items in cache
INFO 3/30/21, 17:27:46.477 ljJObQK7QKy5DnZ+cAqBpGC28lY= = [ key = ljJObQK7QKy5DnZ+cAqBpGC28lY=, value=com.vordel.circuit.cache.BodySerializer@45a42040, version=1, hitCount=1, CreationTime = 1617150465777, LastAccessTime = 1617150466437 ]
DEBUG 3/30/21, 17:27:46.477 Return from script is: true
DEBUG 3/30/21, 17:27:46.477 ScriptProcessor.invoke: finished with status true
DEBUG 3/30/21, 17:27:46.477 } = 1, filter [Test Script]
DEBUG 3/30/21, 17:27:46.477 Filter [Test Script] completes in 700 milliseconds.