This is an automated email from the ASF dual-hosted git repository.
nizhikov 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 9db91c4348c IGNITE-18534 Fix WalWritingRate calculation (#10508)
9db91c4348c is described below
commit 9db91c4348c1363ebaec0acbac1731586064b531
Author: Alexander <[email protected]>
AuthorDate: Wed Mar 1 10:13:34 2023 +0300
IGNITE-18534 Fix WalWritingRate calculation (#10508)
---
.../cache/persistence/DataStorageMetricsImpl.java | 8 --
.../wal/filehandle/FileHandleManagerImpl.java | 2 -
.../wal/filehandle/FsyncFileWriteHandle.java | 2 -
.../processors/cache/IoDatastorageMetricsTest.java | 104 +++++++++++++++++++++
.../IgniteCacheMetricsSelfTestSuite.java | 2 +
5 files changed, 106 insertions(+), 12 deletions(-)
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/DataStorageMetricsImpl.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/DataStorageMetricsImpl.java
index fd7ae75a970..49ca4ef059f 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/DataStorageMetricsImpl.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/DataStorageMetricsImpl.java
@@ -733,14 +733,6 @@ public class DataStorageMetricsImpl {
walLoggingRate.increment();
walWrittenBytes.add(size);
- }
-
- /**
- * @param size Size written.
- */
- public void onWalBytesWritten(int size) {
- if (!metricsEnabled)
- return;
walWritingRate.add(size);
}
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/filehandle/FileHandleManagerImpl.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/filehandle/FileHandleManagerImpl.java
index b901118a34f..6b08531a233 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/filehandle/FileHandleManagerImpl.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/filehandle/FileHandleManagerImpl.java
@@ -562,8 +562,6 @@ public class FileHandleManagerImpl implements
FileHandleManager {
hdl.written += hdl.fileIO.writeFully(buf);
- metrics.onWalBytesWritten(size);
-
assert hdl.written == hdl.fileIO.position();
}
catch (IOException e) {
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/filehandle/FsyncFileWriteHandle.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/filehandle/FsyncFileWriteHandle.java
index 5252d0d0852..ca06af53b8b 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/filehandle/FsyncFileWriteHandle.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/filehandle/FsyncFileWriteHandle.java
@@ -790,8 +790,6 @@ class FsyncFileWriteHandle extends AbstractFileHandle
implements FileWriteHandle
written += size;
- metrics.onWalBytesWritten(size);
-
assert written == fileIO.position();
}
catch (IOException e) {
diff --git
a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IoDatastorageMetricsTest.java
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IoDatastorageMetricsTest.java
new file mode 100644
index 00000000000..87f71b1fcc8
--- /dev/null
+++
b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IoDatastorageMetricsTest.java
@@ -0,0 +1,104 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.cache;
+
+import java.util.Arrays;
+import java.util.Collection;
+import org.apache.ignite.cluster.ClusterState;
+import org.apache.ignite.configuration.DataRegionConfiguration;
+import org.apache.ignite.configuration.DataStorageConfiguration;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.configuration.WALMode;
+import org.apache.ignite.internal.IgniteEx;
+import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+
+/**
+ * The test shows that the WalWritingRate metric is not calculated when
walMode in all modes.
+ */
+@RunWith(Parameterized.class)
+public class IoDatastorageMetricsTest extends GridCommonAbstractTest {
+
+ /** WALMode. */
+ @Parameterized.Parameter
+ public WALMode walMode;
+
+ /** WALMode values. */
+ @Parameterized.Parameters(name = "walMode={0}")
+ public static Collection<Object> parameters() {
+ return Arrays.asList(
+ WALMode.FSYNC,
+ WALMode.BACKGROUND,
+ WALMode.LOG_ONLY
+ );
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void afterTest() throws Exception {
+ super.afterTest();
+
+ stopAllGrids();
+ cleanPersistenceDir();
+ }
+
+ /** {@inheritDoc} */
+ @Override protected IgniteConfiguration getConfiguration(String
igniteInstanceName) throws Exception {
+ return super.getConfiguration(igniteInstanceName)
+ .setDataStorageConfiguration(
+ new DataStorageConfiguration()
+ .setMetricsEnabled(true)
+ .setWalSegmentSize((int)(U.MB))
+ .setWalMode(walMode)
+ .setDefaultDataRegionConfiguration(
+ new DataRegionConfiguration()
+ .setPersistenceEnabled(true)
+ )
+ );
+ }
+
+ /**
+ * The test shows that the WalWritingRate metric is not calculated when
walMode in all modes.
+ */
+ @Test
+ public void walWritingRate() throws Exception {
+ IgniteEx ignite = startGrid(0);
+
+ ignite.cluster().state(ClusterState.ACTIVE);
+
+ long writingRate = 0;
+
+ byte i = 0;
+ for (; i < 100; i++) {
+ long[] arr = new long[64];
+
+ Arrays.fill(arr, i);
+
+ ignite.getOrCreateCache(DEFAULT_CACHE_NAME).put(i, arr);
+
+ writingRate = (long)metricRegistry(ignite.name(), "io",
"datastorage").getAttribute("WalWritingRate");
+
+ if (writingRate > 0)
+ break;
+ }
+
+ assertTrue(writingRate > 0);
+ }
+}
diff --git
a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheMetricsSelfTestSuite.java
b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheMetricsSelfTestSuite.java
index 8a3a07e017f..a4e73380fcb 100644
---
a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheMetricsSelfTestSuite.java
+++
b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheMetricsSelfTestSuite.java
@@ -27,6 +27,7 @@ import
org.apache.ignite.internal.processors.cache.CacheMetricsEntitiesCountTest
import
org.apache.ignite.internal.processors.cache.CacheMetricsForClusterGroupSelfTest;
import org.apache.ignite.internal.processors.cache.CacheValidatorMetricsTest;
import
org.apache.ignite.internal.processors.cache.GridEvictionPolicyMBeansTest;
+import org.apache.ignite.internal.processors.cache.IoDatastorageMetricsTest;
import
org.apache.ignite.internal.processors.cache.OffheapCacheMetricsForClusterGroupSelfTest;
import
org.apache.ignite.internal.processors.cache.distributed.near.GridCacheAtomicPartitionedMetricsSelfTest;
import
org.apache.ignite.internal.processors.cache.distributed.near.GridCacheAtomicPartitionedTckMetricsSelfTestImpl;
@@ -72,6 +73,7 @@ public class IgniteCacheMetricsSelfTestSuite {
GridTestUtils.addTestIfNeeded(suite, TransactionMetricsTest.class,
ignoredTests);
GridTestUtils.addTestIfNeeded(suite,
GridEvictionPolicyMBeansTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IoDatastorageMetricsTest.class,
ignoredTests);
return suite;
}