[
https://issues.apache.org/jira/browse/IGNITE-25766?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Aleksey Plekhanov updated IGNITE-25766:
---------------------------------------
Description:
Metric {{TotalAllocatedPages}} was introduced by IGNITE-14774, but value of
this metric is incorrect:
{noformat}
public void testTotalAllocatedPagesForInMemoryCacheGroups() throws
Exception {
IgniteEx ignite = startGrid(0);
IgniteCache<Integer, byte[]> cache1 = ignite.createCache("cache1");
IgniteCache<Integer, byte[]> cache2 = ignite.createCache("cache2");
IgniteCache<Integer, byte[]> cache3 = ignite.createCache("cache3");
for (int i = 0; i < 1000; i++) {
cache1.put(i, new byte[200]);
cache2.put(i, new byte[3700]);
}
CacheGroupContext grp1 =
ignite.cachex(cache1.getName()).context().group();
CacheGroupContext grp2 =
ignite.cachex(cache2.getName()).context().group();
CacheGroupContext grp3 =
ignite.cachex(cache3.getName()).context().group();
assertTrue(grp1.metrics().getTotalAllocatedPages() <
grp2.metrics().getTotalAllocatedPages());
assertEquals(0, grp3.metrics().getTotalAllocatedPages());
}
{noformat}
Metric was added without any tests. Wrong metric result confuses users.
Moreover, it's impossible to calculate such a metric, because for in-memory
mode one data page can contain data for different cache groups. Additionally,
certain data structures are shared across different caches (page lists, for
example).
Perhaps it worth to set this metric to 0.
was:
Metric {{TotalAllocatedPages}} was introduced by IGNITE-14774, but value of
this metric is incorrect:
{noformat}
public void testTotalAllocatedPagesForInMemoryCacheGroups() throws
Exception {
IgniteEx ignite = startGrid(0);
IgniteCache<Integer, byte[]> cache1 = ignite.createCache("cache1");
IgniteCache<Integer, byte[]> cache2 = ignite.createCache("cache2");
IgniteCache<Integer, byte[]> cache3 = ignite.createCache("cache3");
for (int i = 0; i < 1000; i++) {
cache1.put(i, new byte[200]);
cache2.put(i, new byte[3700]);
}
CacheGroupContext grp1 =
ignite.cachex(cache1.getName()).context().group();
CacheGroupContext grp2 =
ignite.cachex(cache2.getName()).context().group();
CacheGroupContext grp3 =
ignite.cachex(cache3.getName()).context().group();
assertTrue(grp1.metrics().getTotalAllocatedPages() <
grp2.metrics().getTotalAllocatedPages());
assertEquals(0, grp3.metrics().getTotalAllocatedPages());
}
{noformat}
Metric was added without any tests. Wrong metric result confuses users.
Moreover, it's impossible to calculate such a metric, since in in-memory mode
one data page can contain data for different cache groups and there are data
structures exist, which shared accross different caches (page lists, for
example).
Perhaps it worth to set this metric to 0.
> Incorrect metric value TotalAllocatedPages for in-memory cache groups
> ---------------------------------------------------------------------
>
> Key: IGNITE-25766
> URL: https://issues.apache.org/jira/browse/IGNITE-25766
> Project: Ignite
> Issue Type: Bug
> Reporter: Aleksey Plekhanov
> Priority: Major
>
> Metric {{TotalAllocatedPages}} was introduced by IGNITE-14774, but value of
> this metric is incorrect:
> {noformat}
> public void testTotalAllocatedPagesForInMemoryCacheGroups() throws
> Exception {
> IgniteEx ignite = startGrid(0);
> IgniteCache<Integer, byte[]> cache1 = ignite.createCache("cache1");
> IgniteCache<Integer, byte[]> cache2 = ignite.createCache("cache2");
> IgniteCache<Integer, byte[]> cache3 = ignite.createCache("cache3");
> for (int i = 0; i < 1000; i++) {
> cache1.put(i, new byte[200]);
> cache2.put(i, new byte[3700]);
> }
> CacheGroupContext grp1 =
> ignite.cachex(cache1.getName()).context().group();
> CacheGroupContext grp2 =
> ignite.cachex(cache2.getName()).context().group();
> CacheGroupContext grp3 =
> ignite.cachex(cache3.getName()).context().group();
> assertTrue(grp1.metrics().getTotalAllocatedPages() <
> grp2.metrics().getTotalAllocatedPages());
> assertEquals(0, grp3.metrics().getTotalAllocatedPages());
> }
> {noformat}
> Metric was added without any tests. Wrong metric result confuses users.
> Moreover, it's impossible to calculate such a metric, because for in-memory
> mode one data page can contain data for different cache groups. Additionally,
> certain data structures are shared across different caches (page lists, for
> example).
> Perhaps it worth to set this metric to 0.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)