0

It seems like Ignite does not return metrics for a cache in local mode.

The code I used to test this in Ignite 2.6 is:

IgniteConfiguration igniteConfig = new IgniteConfiguration();
CacheConfiguration cacheConfig = new CacheConfiguration("testCache");
cacheConfig.setStatisticsEnabled(true);
igniteConfig.setCacheConfiguration(cacheConfig);

for (CacheMode cacheMode : CacheMode.values()) {
    cacheConfig.setCacheMode(cacheMode);
    try (Ignite ignite = Ignition.start(igniteConfig)) {
        IgniteCache cache = ignite.<String, String>getOrCreateCache(cacheConfig.getName());
        System.out.println(cacheMode + " local metrics size before:" + cache.localMetrics().getSize());
        System.out.println(cacheMode + " metrics size before:" + cache.metrics().getSize());
        //adding a sleep just in case it's needed
        Thread.sleep(5000);
        cache.put("key", "val");
        System.out.println(cacheMode + " local metrics size after:" + cache.localMetrics().getSize());
        System.out.println(cacheMode + " metrics size after:" + cache.metrics().getSize());
    }
}

The output shows that for the REPLICATED and PARTITIONED caches both IgniteCache.metrics and IgniteCache.localMetrics report the size after the put as 1, whereas when the cache is in LOCAL cache mode then they both report the size as 0 even after the put.

EDIT: some further debugging shows that not all the metrics are missing. For example using:

IgniteConfiguration igniteConfig = new IgniteConfiguration();
CacheConfiguration cacheConfig = new CacheConfiguration("testCache");
cacheConfig.setStatisticsEnabled(true);
igniteConfig.setCacheConfiguration(cacheConfig);
cacheConfig.setCacheMode(CacheMode.LOCAL);

try (Ignite ignite = Ignition.start(igniteConfig)) {
    IgniteCache cache = ignite.<String, String>getOrCreateCache(cacheConfig.getName());
    cache.put("key", "val");
    cache.put("key2", "val2");
    cache.remove("key2");

    System.out.println(cache.localMetrics());
}

I get:

CacheMetricsSnapshot [reads=0, puts=2, hits=0, misses=0, txCommits=0, txRollbacks=0, evicts=0, removes=1, putAvgTimeNanos=8054.916, getAvgTimeNanos=0.0, rmvAvgTimeNanos=3732.072, commitAvgTimeNanos=0.0, rollbackAvgTimeNanos=0.0, cacheName=testCache, offHeapGets=0, offHeapPuts=0, offHeapRemoves=0, offHeapEvicts=0, offHeapHits=0, offHeapMisses=0, offHeapEntriesCnt=1, heapEntriesCnt=0, offHeapPrimaryEntriesCnt=1, offHeapBackupEntriesCnt=1, offHeapAllocatedSize=0, size=0, keySize=0, isEmpty=false, dhtEvictQueueCurrSize=-1, txThreadMapSize=0, txXidMapSize=0, txCommitQueueSize=0, txPrepareQueueSize=0, txStartVerCountsSize=0, txCommittedVersionsSize=0, txRolledbackVersionsSize=0, txDhtThreadMapSize=0, txDhtXidMapSize=-1, txDhtCommitQueueSize=0, txDhtPrepareQueueSize=0, txDhtStartVerCountsSize=0, txDhtCommittedVersionsSize=-1, txDhtRolledbackVersionsSize=-1, isWriteBehindEnabled=false, writeBehindFlushSize=-1, writeBehindFlushThreadCnt=-1, writeBehindFlushFreq=-1, writeBehindStoreBatchSize=-1, writeBehindTotalCriticalOverflowCnt=-1, writeBehindCriticalOverflowCnt=-1, writeBehindErrorRetryCnt=-1, writeBehindBufSize=-1, totalPartitionsCnt=0, rebalancingPartitionsCnt=0, keysToRebalanceLeft=0, rebalancingKeysRate=0, rebalancingBytesRate=0, rebalanceStartTime=-1, rebalanceFinishTime=-1, rebalanceClearingPartitionsLeft=0, keyType=java.lang.Object, valType=java.lang.Object, isStoreByVal=true, isStatisticsEnabled=true, isManagementEnabled=false, isReadThrough=false, isWriteThrough=false, isValidForReading=true, isValidForWriting=true]

Which shows that, put & remove metrics seem to be working, but size is 0.

1 Answer 1

0

Looks like it's not working properly for LOCAL cache now. However, you can use offHeapEntriesCnt metric instead - it shows proper size.

I've created a ticket for fixing this: https://issues.apache.org/jira/browse/IGNITE-10398

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.