You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
With version 1.4 no hit or miss is counted, for a no operation EntryProcessor. This is a violation of the (current) JCache TCK, however, in our opinion it is correct, since with 1.4 the entry is never touched. Details:
The JCache TCK makes assumptions about the Hit and Miss statistics counters when an entry processor is used. The underlying assumption is, that a cached entry is always accessed.
The comment in the TCK reads:
The lookup and locking of the key is enough to invoke the hit or miss. No
Cache.Entry or MutableEntry operation is required.
// increase put counter
cache.put(1l, "Sooty");
//existent key. increase hit counter even though this entry processor does not call anything
cache.invoke(1l, new NoOpEntryProcessor<Long, String>());
cache.invoke(1l, new NoOpEntryProcessor<Long, String>());
//non-existent key. increase miss counter
cache.invoke(1000l, new NoOpEntryProcessor<Long, String>());
Starting in version 1.4 cache2k will not access the cache content, when no operation is done or it is only a write operation. With this optimization there is actually no way to find out whether its a hit or a miss, hence, there is no way to update the counters accordingly.
This optimization is IMHO legal with respect to the specification. The JCache TCK is asserting a behavior that is not specified. The Spec says the contrary (EntryProcessor javadoc):
Implementations may execute {@link EntryProcessor}s in situ, thus avoiding
locking, round-trips and expensive network transfers.
The text was updated successfully, but these errors were encountered:
cruftex
changed the title
JCache: hit and miss counter for EntryProcessor operations
JCache: hit and miss counter fail TCK tests for noop EntryProcessor operations
Aug 14, 2020
With version 1.4 no hit or miss is counted, for a no operation
EntryProcessor
. This is a violation of the (current) JCache TCK, however, in our opinion it is correct, since with 1.4 the entry is never touched. Details:The JCache TCK makes assumptions about the Hit and Miss statistics counters when an entry processor is used. The underlying assumption is, that a cached entry is always accessed.
The comment in the TCK reads:
The relevant TCK tests are:
CacheMBStatisticsBeanTest.testCacheStatisticsInvokeEntryProcessorNoOp()
CacheMBStatisticsBeanTest.testCacheStatisticsInvokeEntryProcessorGet()
CacheMBStatisticsBeanTest.testCacheStatisticsInvokeEntryProcessorUpdate()
For example the sequence:
Starting in version 1.4 cache2k will not access the cache content, when no operation is done or it is only a write operation. With this optimization there is actually no way to find out whether its a hit or a miss, hence, there is no way to update the counters accordingly.
This optimization is IMHO legal with respect to the specification. The JCache TCK is asserting a behavior that is not specified. The Spec says the contrary (
EntryProcessor
javadoc):The text was updated successfully, but these errors were encountered: