[
https://issues.apache.org/jira/browse/IGNITE-2565?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15143171#comment-15143171
]
Andrey Gura edited comment on IGNITE-2565 at 2/11/16 6:18 PM:
--------------------------------------------------------------
This test fails in cases when rebalancing is not finished for current topology.
See
{{org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache#updateAllAsyncInternal0}}:
{code}
boolean sndPrevVal = !top.rebalanceFinished(req.topologyVersion())
{code}
As result {{GridCacheMapEntry#innerUpdate}} method invoked with {{retval ==
true}} and performs get operation. It leads to update "cache miss" metric
becasue it was the first put in test.
{code}
if (metrics && cctx.cache().configuration().isStatisticsEnabled() && needVal) {
// PutIfAbsent methods mustn't update hit/miss statistics
if (op != GridCacheOperation.UPDATE || F.isEmpty(filter) ||
!cctx.putIfAbsentFilter(filter))
cctx.cache().metrics0().onRead(oldVal != null);
}
{code}
HitPercentage problem is related with the same behavior. The first {{put}} in
the test performs {{get}} and miss metrics incremented.
{{RemoveEntryProcessor}} perfroms {{get}} and hit metric incremented (gets
metric equals two). As result we have {{hits / gets * 100 == 50}}.
was (Author: agura):
This test fails in cases when rebalancing is not finished for current topology.
See
{{org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache#updateAllAsyncInternal0}}:
{code}
boolean sndPrevVal = !top.rebalanceFinished(req.topologyVersion())
{code}
As result {{GridCacheMapEntry#innerUpdate}} method invoked with {{retval ==
true}} and performs get operation. It leads to update "cache miss" metric
becasue it was the first put in test.
{code}
if (metrics && cctx.cache().configuration().isStatisticsEnabled() && needVal) {
// PutIfAbsent methods mustn't update hit/miss statistics
if (op != GridCacheOperation.UPDATE || F.isEmpty(filter) ||
!cctx.putIfAbsentFilter(filter))
cctx.cache().metrics0().onRead(oldVal != null);
}
{code}
> TCK fails when client nodes are particapating in the cluster.
> -------------------------------------------------------------
>
> Key: IGNITE-2565
> URL: https://issues.apache.org/jira/browse/IGNITE-2565
> Project: Ignite
> Issue Type: Bug
> Components: cache
> Affects Versions: 1.5.0.final
> Reporter: Anton Vinogradov
> Assignee: Vladimir Ershov
> Priority: Critical
> Labels: important
> Fix For: 1.6
>
>
> TCK suite fail periodically fails with assetrions about CacheHitPercentage.
> I see that a lot of changes was made last two months where added logic with
> invoking of metrics.onRead(); possible this affects statictic counting.
> Typical stacktrace:
> java.lang.AssertionError: expected:<100.0> but was:<50.0>
> at org.junit.Assert.fail(Assert.java:88)
> at org.junit.Assert.failNotEquals(Assert.java:743)
> at org.junit.Assert.assertEquals(Assert.java:118)
> at org.junit.Assert.assertEquals(Assert.java:144)
> at
> org.jsr107.tck.management.CacheMBStatisticsBeanTest.testCacheStatisticsInvokeEntryProcessorRemove(CacheMBStatisticsBeanTest.java:424)
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)