This is an automated email from the ASF dual-hosted git repository.
alexpl pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git
The following commit(s) were added to refs/heads/master by this push:
new 1154765f9d1 IGNITE-27687 Add metrics for inserted/removed bytes
to/from cache group - Fixes #12670.
1154765f9d1 is described below
commit 1154765f9d13b316c769246eed26e11930408344
Author: Aleksey Plekhanov <[email protected]>
AuthorDate: Fri Feb 13 17:54:54 2026 +0300
IGNITE-27687 Add metrics for inserted/removed bytes to/from cache group -
Fixes #12670.
Signed-off-by: Aleksey Plekhanov <[email protected]>
---
docs/_docs/monitoring-metrics/new-metrics.adoc | 2 +
docs/_docs/monitoring-metrics/system-views.adoc | 15 +++
.../ignite/jdbc/thin/JdbcThinMetadataSelfTest.java | 2 +
.../ignite/internal/metric/IoStatisticsHolder.java | 14 +++
.../internal/metric/IoStatisticsHolderCache.java | 28 ++++-
.../internal/metric/IoStatisticsHolderIndex.java | 10 ++
.../internal/metric/IoStatisticsHolderNoOp.java | 12 ++
.../internal/metric/IoStatisticsHolderQuery.java | 10 ++
.../persistence/freelist/AbstractFreeList.java | 29 +++--
.../spi/systemview/view/CacheGroupIoView.java | 22 ++++
...IoStatisticsMetricsLocalMXBeanImplSelfTest.java | 122 ++++++++++++++++++++-
.../internal/metric/IoStatisticsSelfTest.java | 2 +-
.../ignite/internal/metric/SystemViewSelfTest.java | 1 +
.../rebalancing/MultiDcRebalancingTest.java | 22 +---
.../junits/common/GridCommonAbstractTest.java | 16 +++
15 files changed, 272 insertions(+), 35 deletions(-)
diff --git a/docs/_docs/monitoring-metrics/new-metrics.adoc
b/docs/_docs/monitoring-metrics/new-metrics.adoc
index 862f27a3391..19a2ca3121e 100644
--- a/docs/_docs/monitoring-metrics/new-metrics.adoc
+++ b/docs/_docs/monitoring-metrics/new-metrics.adoc
@@ -244,6 +244,8 @@ Register name: `io.statistics.cacheGroups.{group_name}`
|grpId | integer | Group id
|name | string | Name of the index
|startTime | long | Statistics collect start time
+|insertedBytes | long | Count of inserted to store bytes
+|removedBytes | long | Count of removed from store bytes
|===
diff --git a/docs/_docs/monitoring-metrics/system-views.adoc
b/docs/_docs/monitoring-metrics/system-views.adoc
index f9afb0ccc90..ad4589bb23c 100644
--- a/docs/_docs/monitoring-metrics/system-views.adoc
+++ b/docs/_docs/monitoring-metrics/system-views.adoc
@@ -789,6 +789,21 @@ This view exposes information about the distribution of
cache group partitions a
|IS_PRIMARY | boolean | Primary partition flag
|===
+== LOCAL_CACHE_GROUPS_IO
+
+This view exposes information about local node IO statistics for cache groups.
+
+[{table_opts}]
+|===
+|Column | Data type | Description
+|CACHE_GROUP_ID | int| Cache group ID
+|CACHE_GROUP_NAME | string| Cache group name
+|PHYSICAL_READS | long | Count of logical page reads
+|LOGICAL_READS | long | Count of physical page reads
+|INSERTED_BYTES | long | Count of inserted to store bytes
+|REMOVED_BYTES | long | Count of removed from store bytes
+|===
+
== BINARY_METADATA
This view exposes information about all available binary types.
diff --git
a/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinMetadataSelfTest.java
b/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinMetadataSelfTest.java
index 2f1aef7d331..b2de892d55e 100644
---
a/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinMetadataSelfTest.java
+++
b/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinMetadataSelfTest.java
@@ -767,6 +767,8 @@ public class JdbcThinMetadataSelfTest extends
JdbcThinAbstractSelfTest {
"SYS.LOCAL_CACHE_GROUPS_IO.CACHE_GROUP_NAME.null",
"SYS.LOCAL_CACHE_GROUPS_IO.PHYSICAL_READS.null",
"SYS.LOCAL_CACHE_GROUPS_IO.LOGICAL_READS.null",
+ "SYS.LOCAL_CACHE_GROUPS_IO.INSERTED_BYTES.null",
+ "SYS.LOCAL_CACHE_GROUPS_IO.REMOVED_BYTES.null",
"SYS.SQL_QUERIES_HISTORY.SCHEMA_NAME.null",
"SYS.SQL_QUERIES_HISTORY.SQL.null",
"SYS.SQL_QUERIES_HISTORY.LOCAL.null",
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/metric/IoStatisticsHolder.java
b/modules/core/src/main/java/org/apache/ignite/internal/metric/IoStatisticsHolder.java
index 28604d063b0..f4f2afd2aa7 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/metric/IoStatisticsHolder.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/metric/IoStatisticsHolder.java
@@ -36,6 +36,20 @@ public interface IoStatisticsHolder {
*/
public void trackPhysicalAndLogicalRead(long pageAddr);
+ /**
+ * Track insert data to the page.
+ *
+ * @param bytes Bytes inserted.
+ */
+ public void trackPageInsertData(long bytes);
+
+ /**
+ * Track remove data from the page.
+ *
+ * @param bytes Bytes removed.
+ */
+ public void trackPageRemoveData(long bytes);
+
/**
* @return Number of logical reads.
*/
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/metric/IoStatisticsHolderCache.java
b/modules/core/src/main/java/org/apache/ignite/internal/metric/IoStatisticsHolderCache.java
index 11e3330fc42..c8d290c656f 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/metric/IoStatisticsHolderCache.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/metric/IoStatisticsHolderCache.java
@@ -38,12 +38,24 @@ public class IoStatisticsHolderCache implements
IoStatisticsHolder {
/** */
public static final String LOGICAL_READS = "LOGICAL_READS";
+ /** */
+ public static final String INSERTED_BYTES = "insertedBytes";
+
+ /** */
+ public static final String REMOVED_BYTES = "removedBytes";
+
/** */
private final LongAdderMetric logicalReadCtr;
/** */
private final LongAdderMetric physicalReadCtr;
+ /** */
+ private final LongAdderMetric insertedBytes;
+
+ /** */
+ private final LongAdderMetric removedBytes;
+
/** */
private final String grpName;
@@ -67,8 +79,10 @@ public class IoStatisticsHolderCache implements
IoStatisticsHolder {
mreg.objectMetric("name", String.class, null).value(grpName);
mreg.intMetric("grpId", null).value(grpId);
- this.logicalReadCtr = mreg.longAdderMetric(LOGICAL_READS, null);
- this.physicalReadCtr = mreg.longAdderMetric(PHYSICAL_READS, null);
+ logicalReadCtr = mreg.longAdderMetric(LOGICAL_READS, "Count of logical
page reads");
+ physicalReadCtr = mreg.longAdderMetric(PHYSICAL_READS, "Count of
physical page reads");
+ insertedBytes = mreg.longAdderMetric(INSERTED_BYTES, "Count of
inserted to store bytes");
+ removedBytes = mreg.longAdderMetric(REMOVED_BYTES, "Count of removed
from store bytes");
}
/** {@inheritDoc} */
@@ -95,6 +109,16 @@ public class IoStatisticsHolderCache implements
IoStatisticsHolder {
}
}
+ /** {@inheritDoc} */
+ @Override public void trackPageInsertData(long bytes) {
+ insertedBytes.add(bytes);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void trackPageRemoveData(long bytes) {
+ removedBytes.add(bytes);
+ }
+
/** {@inheritDoc} */
@Override public long logicalReads() {
return logicalReadCtr.value();
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/metric/IoStatisticsHolderIndex.java
b/modules/core/src/main/java/org/apache/ignite/internal/metric/IoStatisticsHolderIndex.java
index 8cbea95b412..1bce5e4add7 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/metric/IoStatisticsHolderIndex.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/metric/IoStatisticsHolderIndex.java
@@ -141,6 +141,16 @@ public class IoStatisticsHolderIndex implements
IoStatisticsHolder {
}
}
+ /** {@inheritDoc} */
+ @Override public void trackPageInsertData(long bytes) {
+ // No-op.
+ }
+
+ /** {@inheritDoc} */
+ @Override public void trackPageRemoveData(long bytes) {
+ // No-op.
+ }
+
/** {@inheritDoc} */
@Override public long logicalReads() {
return logicalReadLeafCtr.value() + logicalReadInnerCtr.value();
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/metric/IoStatisticsHolderNoOp.java
b/modules/core/src/main/java/org/apache/ignite/internal/metric/IoStatisticsHolderNoOp.java
index 936fb11b5db..fe5c1c95907 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/metric/IoStatisticsHolderNoOp.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/metric/IoStatisticsHolderNoOp.java
@@ -34,10 +34,22 @@ public class IoStatisticsHolderNoOp implements
IoStatisticsHolder {
/** {@inheritDoc} */
@Override public void trackLogicalRead(long pageAddr) {
+ // No-op.
}
/** {@inheritDoc} */
@Override public void trackPhysicalAndLogicalRead(long pageAddr) {
+ // No-op.
+ }
+
+ /** {@inheritDoc} */
+ @Override public void trackPageInsertData(long bytes) {
+ // No-op.
+ }
+
+ /** {@inheritDoc} */
+ @Override public void trackPageRemoveData(long bytes) {
+ // No-op.
}
/** {@inheritDoc} */
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/metric/IoStatisticsHolderQuery.java
b/modules/core/src/main/java/org/apache/ignite/internal/metric/IoStatisticsHolderQuery.java
index b7884e521de..232c39a8db2 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/metric/IoStatisticsHolderQuery.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/metric/IoStatisticsHolderQuery.java
@@ -53,6 +53,16 @@ public class IoStatisticsHolderQuery implements
IoStatisticsHolder {
physicalReadCtr.increment();
}
+ /** {@inheritDoc} */
+ @Override public void trackPageInsertData(long bytes) {
+ // No-op.
+ }
+
+ /** {@inheritDoc} */
+ @Override public void trackPageRemoveData(long bytes) {
+ // No-op.
+ }
+
/** {@inheritDoc} */
@Override public long logicalReads() {
return logicalReadCtr.longValue();
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/freelist/AbstractFreeList.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/freelist/AbstractFreeList.java
index 8165389599f..62452095631 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/freelist/AbstractFreeList.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/freelist/AbstractFreeList.java
@@ -135,6 +135,9 @@ public abstract class AbstractFreeList<T extends Storable>
extends PagesList imp
PageUtils.getBytes(pageAddr, data.offset(), payload, 0,
rowSize);
+ statHolder.trackPageRemoveData(rowSize);
+ statHolder.trackPageInsertData(rowSize);
+
wal.log(new DataPageUpdateRecord(
cacheId,
pageId,
@@ -164,9 +167,9 @@ public abstract class AbstractFreeList<T extends Storable>
extends PagesList imp
Boolean walPlc,
T row,
int written,
- IoStatisticsHolder statHolder)
- throws IgniteCheckedException {
- written = addRow(pageId, page, pageAddr, iox, row, written);
+ IoStatisticsHolder statHolder
+ ) throws IgniteCheckedException {
+ written = addRow(pageId, page, pageAddr, iox, row, written,
statHolder);
putPage(((AbstractDataPageIO)iox).getFreeSpace(pageAddr), pageId,
page, pageAddr, statHolder);
@@ -180,6 +183,7 @@ public abstract class AbstractFreeList<T extends Storable>
extends PagesList imp
* @param iox IO.
* @param row Row to write.
* @param written Written size.
+ * @param statHolder IO statistics holder.
* @return Number of bytes written, {@link #COMPLETE} if the row was
fully written.
* @throws IgniteCheckedException If failed.
*/
@@ -189,8 +193,9 @@ public abstract class AbstractFreeList<T extends Storable>
extends PagesList imp
long pageAddr,
PageIO iox,
T row,
- int written)
- throws IgniteCheckedException {
+ int written,
+ IoStatisticsHolder statHolder
+ ) throws IgniteCheckedException {
AbstractDataPageIO<T> io = (AbstractDataPageIO<T>)iox;
long lastLink = row.link();
@@ -209,6 +214,8 @@ public abstract class AbstractFreeList<T extends Storable>
extends PagesList imp
evictionTracker.trackFragmentPage(pageId, lastLink, written ==
rowSize);
+ statHolder.trackPageInsertData(oldFreeSpace -
io.getFreeSpace(pageAddr));
+
// Avoid boxing with garbage generation for usual case.
return written == rowSize ? COMPLETE : written;
}
@@ -324,8 +331,8 @@ public abstract class AbstractFreeList<T extends Storable>
extends PagesList imp
Boolean walPlc,
GridCursor<T> cur,
int written,
- IoStatisticsHolder statHolder)
- throws IgniteCheckedException {
+ IoStatisticsHolder statHolder
+ ) throws IgniteCheckedException {
AbstractDataPageIO<T> io = (AbstractDataPageIO<T>)iox;
// Fill the page up to the end.
@@ -341,7 +348,7 @@ public abstract class AbstractFreeList<T extends Storable>
extends PagesList imp
break;
}
- written = writeRowHnd.addRow(pageId, page, pageAddr, io, row,
written);
+ written = writeRowHnd.addRow(pageId, page, pageAddr, io, row,
written, statHolder);
assert written == COMPLETE;
}
@@ -377,8 +384,8 @@ public abstract class AbstractFreeList<T extends Storable>
extends PagesList imp
Boolean walPlc,
ReuseBag reuseBag,
int itemId,
- IoStatisticsHolder statHolder)
- throws IgniteCheckedException {
+ IoStatisticsHolder statHolder
+ ) throws IgniteCheckedException {
AbstractDataPageIO<T> io = (AbstractDataPageIO<T>)iox;
int oldFreeSpace = io.getFreeSpace(pageAddr);
@@ -418,6 +425,8 @@ public abstract class AbstractFreeList<T extends Storable>
extends PagesList imp
put(null, pageId, page, pageAddr, newBucket, statHolder);
}
+ statHolder.trackPageRemoveData(newFreeSpace - oldFreeSpace);
+
// For common case boxed 0L will be cached inside of Long, so no
garbage will be produced.
return nextLink;
}
diff --git
a/modules/core/src/main/java/org/apache/ignite/spi/systemview/view/CacheGroupIoView.java
b/modules/core/src/main/java/org/apache/ignite/spi/systemview/view/CacheGroupIoView.java
index aaa634ce839..c5e83161e62 100644
---
a/modules/core/src/main/java/org/apache/ignite/spi/systemview/view/CacheGroupIoView.java
+++
b/modules/core/src/main/java/org/apache/ignite/spi/systemview/view/CacheGroupIoView.java
@@ -23,8 +23,10 @@ import
org.apache.ignite.internal.systemview.SystemViewDescriptor;
import org.apache.ignite.metric.MetricRegistry;
import org.apache.ignite.spi.metric.LongMetric;
+import static
org.apache.ignite.internal.metric.IoStatisticsHolderCache.INSERTED_BYTES;
import static
org.apache.ignite.internal.metric.IoStatisticsHolderCache.LOGICAL_READS;
import static
org.apache.ignite.internal.metric.IoStatisticsHolderCache.PHYSICAL_READS;
+import static
org.apache.ignite.internal.metric.IoStatisticsHolderCache.REMOVED_BYTES;
/**
* Cache group IO statistics representation for a {@link SystemView}.
@@ -81,4 +83,24 @@ public class CacheGroupIoView {
return metric != null ? metric.value() : 0;
}
+
+ /**
+ * @return Inserted bytes into store.
+ */
+ @Order(4)
+ public long insertedBytes() {
+ LongMetric metric = mreg.findMetric(INSERTED_BYTES);
+
+ return metric != null ? metric.value() : 0;
+ }
+
+ /**
+ * @return Removed bytes from store.
+ */
+ @Order(5)
+ public long removedBytes() {
+ LongMetric metric = mreg.findMetric(REMOVED_BYTES);
+
+ return metric != null ? metric.value() : 0;
+ }
}
diff --git
a/modules/core/src/test/java/org/apache/ignite/internal/metric/IoStatisticsMetricsLocalMXBeanImplSelfTest.java
b/modules/core/src/test/java/org/apache/ignite/internal/metric/IoStatisticsMetricsLocalMXBeanImplSelfTest.java
index ec5d77d3781..cf53734917f 100644
---
a/modules/core/src/test/java/org/apache/ignite/internal/metric/IoStatisticsMetricsLocalMXBeanImplSelfTest.java
+++
b/modules/core/src/test/java/org/apache/ignite/internal/metric/IoStatisticsMetricsLocalMXBeanImplSelfTest.java
@@ -27,9 +27,12 @@ import
org.apache.ignite.internal.processors.metric.GridMetricManager;
import org.apache.ignite.metric.MetricRegistry;
import org.apache.ignite.spi.metric.LongMetric;
import org.apache.ignite.spi.metric.ReadOnlyMetricRegistry;
+import org.apache.ignite.testframework.GridTestUtils;
import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
import org.junit.Test;
+import static
org.apache.ignite.internal.metric.IoStatisticsHolderCache.INSERTED_BYTES;
+import static
org.apache.ignite.internal.metric.IoStatisticsHolderCache.REMOVED_BYTES;
import static
org.apache.ignite.internal.metric.IoStatisticsHolderIndex.HASH_PK_IDX_NAME;
import static
org.apache.ignite.internal.metric.IoStatisticsHolderIndex.LOGICAL_READS_INNER;
import static
org.apache.ignite.internal.metric.IoStatisticsHolderIndex.LOGICAL_READS_LEAF;
@@ -62,12 +65,15 @@ public class IoStatisticsMetricsLocalMXBeanImplSelfTest
extends GridCommonAbstra
}
/** {@inheritDoc} */
- @Override protected void beforeTestsStarted() throws Exception {
- super.beforeTestsStarted();
-
+ @Override protected void beforeTest() throws Exception {
ignite = startGrid(0);
}
+ /** {@inheritDoc} */
+ @Override protected void afterTest() throws Exception {
+ stopAllGrids();
+ }
+
/**
* Simple test JMX bean for indexes IO stats.
*
@@ -130,6 +136,116 @@ public class IoStatisticsMetricsLocalMXBeanImplSelfTest
extends GridCommonAbstra
assertEquals(0, cachePhysicalReadsCnt);
}
+ /** */
+ @Test
+ public void testInsertedDeletedBytes() {
+ int cnt = 100;
+
+ MetricRegistry mreg = ignite.context().metric()
+ .registry(metricName(CACHE_GROUP.metricGroupName(),
DEFAULT_CACHE_NAME));
+
+ LongMetric insertedBytes = mreg.findMetric(INSERTED_BYTES);
+ LongMetric removedBytes = mreg.findMetric(REMOVED_BYTES);
+
+ assertEquals(0, insertedBytes.value());
+
+ populateCache(cnt);
+
+ int minEntrySize = 20; // Size of key, size of val, entry headers,
data page payload headers, etc.
+ int maxEntrySize = 100;
+
+ assertTrue(insertedBytes.value() > cnt * minEntrySize);
+ assertTrue(insertedBytes.value() < cnt * maxEntrySize);
+
+ assertEquals(0, removedBytes.value());
+
+ clearCache(cnt);
+
+ assertEquals(insertedBytes.value(), removedBytes.value());
+ }
+
+ /** */
+ @Test
+ public void testInsertedDeletedBytesInplaceUpdate() {
+ MetricRegistry mreg = ignite.context().metric()
+ .registry(metricName(CACHE_GROUP.metricGroupName(),
DEFAULT_CACHE_NAME));
+
+ LongMetric insertedBytes = mreg.findMetric(INSERTED_BYTES);
+ LongMetric removedBytes = mreg.findMetric(REMOVED_BYTES);
+
+ ignite.cache(DEFAULT_CACHE_NAME).put(0, 0);
+
+ long inserted0 = insertedBytes.value();
+
+ assertNotSame(0, inserted0);
+
+ // Inplace update.
+ ignite.cache(DEFAULT_CACHE_NAME).put(0, 1);
+
+ assertNotSame(0, removedBytes.value());
+ assertEquals(insertedBytes.value() - inserted0, removedBytes.value());
+ }
+
+ /** */
+ @Test
+ public void testInsertedDeletedBytesMultipage() {
+ MetricRegistry mreg = ignite.context().metric()
+ .registry(metricName(CACHE_GROUP.metricGroupName(),
DEFAULT_CACHE_NAME));
+
+ LongMetric insertedBytes = mreg.findMetric(INSERTED_BYTES);
+ LongMetric removedBytes = mreg.findMetric(REMOVED_BYTES);
+
+ assertEquals(0, insertedBytes.value());
+
+ int size = 100_000;
+
+ ignite.cache(DEFAULT_CACHE_NAME).put(0, new byte[size]);
+
+ assertTrue("Unexpected value for insertedBytes: " +
insertedBytes.value(), insertedBytes.value() > size);
+
+ ignite.cache(DEFAULT_CACHE_NAME).remove(0);
+
+ assertEquals(insertedBytes.value(), removedBytes.value());
+ }
+
+ /** */
+ @Test
+ public void testInsertedDeletedBytesOnRebalance() throws Exception {
+ int cnt = 100;
+
+ MetricRegistry mreg0 = ignite.context().metric()
+ .registry(metricName(CACHE_GROUP.metricGroupName(),
DEFAULT_CACHE_NAME));
+
+ LongMetric insertedBytes0 = mreg0.findMetric(INSERTED_BYTES);
+ LongMetric removedBytes0 = mreg0.findMetric(REMOVED_BYTES);
+
+ populateCache(cnt);
+
+ assertNotSame(0, insertedBytes0.value());
+ assertEquals(0, removedBytes0.value());
+
+ IgniteEx ignite1 = startGrid(1);
+
+ waitRebalanceFinished(ignite1, DEFAULT_CACHE_NAME);
+
+ MetricRegistry mreg1 = ignite1.context().metric()
+ .registry(metricName(CACHE_GROUP.metricGroupName(),
DEFAULT_CACHE_NAME));
+
+ LongMetric insertedBytes1 = mreg1.findMetric(INSERTED_BYTES);
+ LongMetric removedBytes1 = mreg1.findMetric(REMOVED_BYTES);
+
+ assertNotSame(0, removedBytes0.value());
+ assertNotSame(0, insertedBytes1.value());
+ assertEquals(0, removedBytes1.value());
+
+ clearCache(cnt);
+
+ assertNotSame(0, removedBytes1.value());
+
+ assertTrue(GridTestUtils.waitForCondition(() -> insertedBytes0.value()
== removedBytes0.value(), 1_000L));
+ assertTrue(GridTestUtils.waitForCondition(() -> insertedBytes1.value()
== removedBytes1.value(), 1_000L));
+ }
+
/**
* @param cnt Number of inserting elements.
*/
diff --git
a/modules/core/src/test/java/org/apache/ignite/internal/metric/IoStatisticsSelfTest.java
b/modules/core/src/test/java/org/apache/ignite/internal/metric/IoStatisticsSelfTest.java
index 980fe203aae..6eca1644f62 100644
---
a/modules/core/src/test/java/org/apache/ignite/internal/metric/IoStatisticsSelfTest.java
+++
b/modules/core/src/test/java/org/apache/ignite/internal/metric/IoStatisticsSelfTest.java
@@ -98,7 +98,7 @@ public class IoStatisticsSelfTest extends
GridCommonAbstractTest {
assertNotNull(mreg);
if (type == CACHE_GROUP) {
- assertEquals(5, Iterators.size(mreg.iterator()));
+ assertEquals(7, Iterators.size(mreg.iterator()));
assertEquals(0,
mreg.<LongMetric>findMetric(LOGICAL_READS).value());
diff --git
a/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewSelfTest.java
b/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewSelfTest.java
index 11f6dd2af25..19da9264e27 100644
---
a/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewSelfTest.java
+++
b/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewSelfTest.java
@@ -940,6 +940,7 @@ public class SystemViewSelfTest extends
GridCommonAbstractTest {
assertNotNull(row);
assertTrue(row.logicalReads() > 0);
+ assertTrue(row.insertedBytes() > 0);
}
}
diff --git
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/rebalancing/MultiDcRebalancingTest.java
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/rebalancing/MultiDcRebalancingTest.java
index bb71087a7e7..9f77dc49626 100644
---
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/rebalancing/MultiDcRebalancingTest.java
+++
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/rebalancing/MultiDcRebalancingTest.java
@@ -27,16 +27,13 @@ import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.DataRegionConfiguration;
import org.apache.ignite.configuration.DataStorageConfiguration;
import org.apache.ignite.internal.IgniteEx;
-import org.apache.ignite.internal.IgniteInternalFuture;
import org.apache.ignite.internal.managers.communication.GridIoMessage;
import
org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionDemandMessage;
-import
org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionDemander;
import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.lang.IgniteInClosure;
import org.apache.ignite.plugin.extensions.communication.Message;
import org.apache.ignite.spi.IgniteSpiException;
import org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi;
-import org.apache.ignite.testframework.GridTestUtils;
import org.apache.ignite.testframework.junits.WithSystemProperty;
import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
import org.junit.Test;
@@ -122,8 +119,8 @@ public class MultiDcRebalancingTest extends
GridCommonAbstractTest {
resetBaselineTopology();
- waitRebalanceFinished(ignite2);
- waitRebalanceFinished(ignite3);
+ waitRebalanceFinished(ignite2, DEFAULT_CACHE_NAME);
+ waitRebalanceFinished(ignite3, DEFAULT_CACHE_NAME);
assertTrue(commSPI(ignite2).rebalanceMsgCnt > 0);
assertTrue(commSPI(ignite3).rebalanceMsgCnt > 0);
@@ -158,7 +155,7 @@ public class MultiDcRebalancingTest extends
GridCommonAbstractTest {
IgniteEx ignite2 = startGrid(2, DC1);
- waitRebalanceFinished(ignite2);
+ waitRebalanceFinished(ignite2, DEFAULT_CACHE_NAME);
assertTrue(commSPI(ignite2).rebalanceMsgCnt > 0);
assertTrue(commSPI(ignite2).historical);
@@ -170,19 +167,6 @@ public class MultiDcRebalancingTest extends
GridCommonAbstractTest {
return
(RebalanceAwareCommSPI)(ignite.configuration().getCommunicationSpi());
}
- /** */
- private void waitRebalanceFinished(IgniteEx ignite) throws Exception {
- assertTrue(GridTestUtils.waitForCondition(() -> {
- IgniteInternalFuture<Boolean> fut =
ignite.cachex(DEFAULT_CACHE_NAME).context().preloader().rebalanceFuture();
-
- GridDhtPartitionDemander.RebalanceFuture rebFut =
(GridDhtPartitionDemander.RebalanceFuture)fut;
-
- return (!rebFut.isInitial() &&
rebFut.topologyVersion().topologyVersion() ==
ignite.cluster().topologyVersion());
- }, 1000));
-
-
assertTrue(ignite.cachex(DEFAULT_CACHE_NAME).context().preloader().rebalanceFuture().get());
- }
-
/** */
private static class RebalanceAwareCommSPI extends TcpCommunicationSpi {
/** */
diff --git
a/modules/core/src/test/java/org/apache/ignite/testframework/junits/common/GridCommonAbstractTest.java
b/modules/core/src/test/java/org/apache/ignite/testframework/junits/common/GridCommonAbstractTest.java
index d3d9efffaa5..8642fcf8611 100755
---
a/modules/core/src/test/java/org/apache/ignite/testframework/junits/common/GridCommonAbstractTest.java
+++
b/modules/core/src/test/java/org/apache/ignite/testframework/junits/common/GridCommonAbstractTest.java
@@ -103,6 +103,7 @@ import
org.apache.ignite.internal.processors.cache.WalStateManager.WALDisableCon
import
org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtCacheAdapter;
import
org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTopologyFuture;
import
org.apache.ignite.internal.processors.cache.distributed.dht.colocated.GridDhtColocatedCache;
+import
org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionDemander;
import
org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionFullMap;
import
org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionMap;
import
org.apache.ignite.internal.processors.cache.distributed.dht.preloader.IgniteDhtDemandedPartitionsMap;
@@ -2858,4 +2859,19 @@ public abstract class GridCommonAbstractTest extends
GridAbstractTest {
protected static Marshaller marshaller(Ignite ign) {
return ((IgniteEx)ign).context().marshaller();
}
+
+ /**
+ * Wait for rebalance on current topology finished.
+ */
+ protected static void waitRebalanceFinished(IgniteEx ignite, String
cacheName) throws Exception {
+ assertTrue(GridTestUtils.waitForCondition(() -> {
+ IgniteInternalFuture<Boolean> fut =
ignite.cachex(cacheName).context().preloader().rebalanceFuture();
+
+ GridDhtPartitionDemander.RebalanceFuture rebFut =
(GridDhtPartitionDemander.RebalanceFuture)fut;
+
+ return (!rebFut.isInitial() &&
rebFut.topologyVersion().topologyVersion() ==
ignite.cluster().topologyVersion());
+ }, 1000));
+
+
assertTrue(ignite.cachex(cacheName).context().preloader().rebalanceFuture().get());
+ }
}