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;
     }

Reply via email to